Android程序是如何检查Sound是否已准备就绪并在旧版Android中播放?通常人们会像这样告诉Soundpool:
soundPool = new SoundPool(10, AudioManager.STREAM_MUSIC, 0);
soundPool.setOnLoadCompleteListener(new OnLoadCompleteListener() {
@Override
public void onLoadComplete(SoundPool soundPool, int sampleId, int status) {
loaded = true;
}
});
soundID = soundPool.load(this, R.raw.beep, 1);
但onLoadCompleteListener是在API级别8中引入的,所以它不起作用。我的节目无法播放任何声音。检查声音是否准备就绪的另一种方法是什么?我只想在背景上放一些音乐。
答案 0 :(得分:0)
现在可能是一个没有实际意义的问题,但在API 8之前,我会通过尝试以0.0音量播放来检查声音是否准备就绪,看看它是否返回了正流ID。如果不是我会睡觉&循环在"准备"阶段,直到它发挥。
// Briefly play the stream at zero volume to get it decoded and prepped.
int stream = soundPool.play( soundPoolId, 0.0f, 0.0f, 1, 0, 1.0f );
if (stream > 0)
{
soundPool.stop(stream);
isPrepared = true;
}