Soundpool无法正常工作和一些设备

时间:2017-07-13 09:40:37

标签: android soundpool

我发现了很多关于Soundpool的问题,但是他们都声称它根本不起作用。对我而言,情况有所不同。

我已经声明了一个soundpool对象和跟踪ID,如下所示

public static SoundPool sp;
public static int comeCloseID, goFurtherID, blinkID, smileID, rotateLeftID, rotateRightID;

然后我创建了一个initSounds函数来初始化声音池

public static void initSounds()
{
    sp = new SoundPool.Builder().build();
    comeCloseID = sp.load(mContext, R.raw.comeclose,1);
    goFurtherID = sp.load(mContext, R.raw.gofurther,1);
    blinkID = sp.load(mContext, R.raw.blink, 1);
    smileID = sp.load(mContext, R.raw.smile, 1);
    rotateLeftID = sp.load(mContext, R.raw.rotateleft, 1);
    rotateRightID = sp.load(mContext, R.raw.rotateright, 1);

    sp.setOnLoadCompleteListener(new SoundPool.OnLoadCompleteListener() {
        @Override
        public void onLoadComplete(SoundPool soundPool, int sampleId,
                                   int status) {
            loaded = true;
        }
    });
}

然后我将声音如下:

GlobalParams.sp.play(GlobalParams.comeCloseID, 1, 1, 1, 0, 1);

等...

使用我的三星note5设备,音频文件很好用。但是当我在J1设备或联想设备上试用它们时,声音就不会播放了。 (thogh我可以记录加载的值为true)。

我错过了什么?为什么音频不播放?

知道我尝试使用不同格式的音频(WAV,MP3 ....)但是id没有解决这个问题。

1 个答案:

答案 0 :(得分:0)

尝试增加setMaxStreams(5)以表示5,您将其设置为默认值1:

AudioAttributes attributes = new AudioAttributes.Builder()
                    .setContentType(AudioAttributes.CONTENT_TYPE_SONIFICATION)
                    .setFlags(AudioAttributes.FLAG_AUDIBILITY_ENFORCED)
                    .setUsage(AudioAttributes.USAGE_NOTIFICATION_COMMUNICATION_INSTANT)
                    .build();

sp = new SoundPool.Builder()
.setMaxStreams(5)
.setAudioAttributes(attributes)
.build();