我正在尝试完成这本书关于 android 编程的工作,其中一个示例是如何使用 SoundPool 播放声音。
但是它总是在 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;
}
}