Я пытаюсь работать с этой книгой по программированию на Android, и одним из примеров является воспроизведение звуков с использованием SoundPool.Невозможно воспроизвести звук в AVD
Однако он всегда дает мне ту же ошибку в LogCat:
AudioFlinger could not create track, status -12.
Я гугл ошибки и для всех остальных, кажется, происходит от пытаюсь играть слишком много звуков. Но моя неудача при первой попытке воспроизвести звук. Я получаю ту же ошибку при использовании MediaPlayer. Есть ли что-то, что я не настроил правильно в AVD? Поддержка воспроизведения звука включена.
Я также загрузил это на свой телефон, и он отлично работает. Он только терпит неудачу в эмуляторе. По-видимому, это связано с ошибкой в эмуляторе, где звуки не будут воспроизводиться, если снимок включен.
Создал новый AVD, и он работает, однако звук сильно изменчив. Это нормально?
public class SoundPoolTest extends Activity implements OnTouchListener {
SoundPool soundPool;
int explosionId = -1;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
TextView textView = new TextView(this);
textView.setOnTouchListener(this);
setContentView(textView);
setVolumeControlStream(AudioManager.STREAM_MUSIC);
soundPool = new SoundPool(20, AudioManager.STREAM_MUSIC, 0);
try {
AssetManager assetManager = getAssets();
AssetFileDescriptor descriptor = assetManager
.openFd("explosion.ogg");
explosionId = soundPool.load(descriptor, 1);
} catch (IOException e) {
textView.setText("Couldn't load sound effect from asset, "
+ e.getMessage());
}
}
@Override
public boolean onTouch(View v, MotionEvent event) {
if (event.getAction() == MotionEvent.ACTION_UP) {
if (explosionId != -1) {
soundPool.play(explosionId, 1, 1, 0, 0, 1);
}
}
return true;
}
}