У меня есть приложение для Android с одной кнопкой. При нажатии кнопки приложение начинает воспроизводить (зацикливать) звук, загруженный с помощью SoundPool. При повторном нажатии кнопки звук прекращается, а затем снова включается.
Но проблема в том, что звук воспроизводится только через раз.
- Нажмите 1 раз -> начинает воспроизводиться звук
- Нажмите второй раз -> звук прекращается, но не запускается снова
- Нажмите 3-й раз -> начинает играть звук
- Нажмите 4-й раз -> звук останавливается, но не воспроизводится
- и так далее...
Когда звук не воспроизводится, в logcat появляется эта ошибка:
E/AudioTrack: AudioFlinger could not create track, status: -12
E/SoundPool: Error creating AudioTrack
Когда я убираю зацикливание (меняю -1 на 0), все работает полностью правильно!
Звук, который я проигрываю, представляет собой MP3-файл размером 71,6 Кбайт.
Я тестировал это на Sony Xperia U под управлением Android 4.1.2 (не работает). Но в моем Huawei Honor 6 (Android 6.0) все работает, в том числе и зацикливание!
Что я делаю неправильно?
Вот мой код:
import android.media.AudioManager;
import android.media.SoundPool;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
public class MainActivity extends AppCompatActivity {
private int lastStreamId = 0;
private int soundID;
private SoundPool soundPool;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
soundPool = new SoundPool(1, AudioManager.STREAM_MUSIC, 0);
soundID = soundPool.load(this, R.raw.sound01, 1);
Button button = (Button) findViewById(R.id.button);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
soundPool.stop(lastStreamId);
lastStreamId = soundPool.play(soundID, 1, 1, 1, -1, 1);
}
});
}
}
РЕДАКТИРОВАТЬ:
Мне не разрешено загружать сюда исходный звук, но вот еще один звук, который делает то же самое. За исключением, что теперь звук воспроизводится только при первом нажатии; все последующие щелчки просто заставят его замолчать и выплюнут вышеупомянутую ошибку.
Звук здесь: sound01.mp3
sound01
? - person azizbekian   schedule 28.03.2017