關(guān)于SoundPool播放失敗提示 sample 4 not READY

1、最近使用Android的SoundPool進(jìn)行多個語音提示的播放時遇到問題,最開始使用wav格式的聲音,有的機(jī)器上可以播放有的不行,原因是該控件對于ogg,MP3,wav格式支持不是很好,后來換用mp3并且進(jìn)行提前加載測試沒有問題

2、首先可以使用迅捷文字轉(zhuǎn)換語音工具得到短語音,格式wav和MP3。然后在Application進(jìn)行工具類的裝在語音保證裝在完成,然后在onLoadComplete中進(jìn)行對應(yīng)的語音使用map進(jìn)行對應(yīng)存儲,使用時使用map播放對應(yīng)的語音id。并實現(xiàn)播放當(dāng)前語音時停止播放前一個語音,防止聲音重疊。下面是部分代碼

 if (soundsPool == null) {
            if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.LOLLIPOP) {
                AudioAttributes audioAttributes = null;
                audioAttributes = new AudioAttributes.Builder()
                        .setUsage(AudioAttributes.USAGE_MEDIA)
                        .setContentType(AudioAttributes.CONTENT_TYPE_MUSIC)
                        .build();

                soundsPool = new SoundPool.Builder()
                        .setMaxStreams(16)
                        .setAudioAttributes(audioAttributes)
                        .build();
            } else { // 5.0 以前
                soundsPool = new SoundPool(16, AudioManager.STREAM_MUSIC, 0);  // 創(chuàng)建SoundPool
            }

        }

        soundsPool.load(context.getApplicationContext(), R.raw.raw_start, 1);
        soundsPool.load(context.getApplicationContext(), R.raw.special_sound, 1);
        soundsPool.load(context.getApplicationContext(), R.raw.raw_last_ten, 1);
        soundsPool.load(context.getApplicationContext(), R.raw.order_end, 1);

        soundsPool.setOnLoadCompleteListener((soundPool, sampleId, status) -> {
            Log.e(TAG, "onLoadComplete: " + sampleId + "..sttus:" + status);
//            soundPool.play(sampleId, 1, 1, 0, 0, 1);
            if (sampleId == 1) {
                soundMap.put(START, sampleId);
            } else if (sampleId == 2) {
                soundMap.put(SPECIAL, sampleId);
            } else if (sampleId == 3) {
                soundMap.put(LAST_TEN, sampleId);
            } else if (sampleId == 4) {
                soundMap.put(END, sampleId);
            }
            if (myOnLoadComplete != null) {
                myOnLoadComplete.onLoadComplete(soundPool, sampleId, status);
            }
        });

關(guān)鍵代碼和步驟已經(jīng)貼出,如果有幫助可以點個贊,如果還不會可以找我要源碼。并歡迎指正,討論

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容