Android 如何检查SoundPool是否可以在没有API 8中引入的onLoadCompleteListener的情况下播放?

Android 如何检查SoundPool是否可以在没有API 8中引入的onLoadCompleteListener的情况下播放?,android,soundpool,Android,Soundpool,Android程序如何检查声音是否准备好并在旧版本的Android中播放?通常,人们会告诉你这样做: soundPool = new SoundPool(10, AudioManager.STREAM_MUSIC, 0); soundPool.setOnLoadCompleteListener(new OnLoadCompleteListener() { @Override public void onLoadComplete(SoundPool s

Android程序如何检查声音是否准备好并在旧版本的Android中播放?通常,人们会告诉你这样做:

   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中引入的,所以它不起作用。我的程序无法播放任何声音。检查声音是否准备好播放的替代方法是什么?我只想把一些音乐放在背景上。

现在这可能是一个没有意义的问题,但在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;
}

我要问一个显而易见的问题——为什么需要支持早于版本8的版本?Play Store上所有Android设备中只有不到0.4%是版本8。低于该值的所有版本均不大于0.1%。大多数开发人员部署的时间为10天(占7.8%),甚至更高。在8岁之前,你需要做大量的工作,但收获甚微。不幸的是,我碰巧拥有一部:/1,作为一名学生,我太穷了,不能用150欧元买一部新手机。我需要测试它。我假设
load()
在API 8之前是同步的。