Soundpool不工作,一些设备

问题描述:

我发现很多关于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); 

etc ...

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

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

知道我尝试使用不同的格式为音频(WAV,MP3 ....)但id没有解决这种情况。

尝试增加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();