关于SoundPool播放失败提示 sample 4 not READY

1、最近使用Android的SoundPool进行多个语音提示的播放时遇到问题,最开始使用wav格式的声音,有的机器上可以播放有的不行,原因是该控件对于ogg,MP3,wav格式支持不是很好,后来换用mp3并且进行提前加载测试没有问题

2、首先可以使用迅捷文字转换语音工具得到短语音,格式wav和MP3。然后在Application进行工具类的装在语音保证装在完成,然后在onLoadComplete中进行对应的语音使用map进行对应存储,使用时使用map播放对应的语音id。并实现播放当前语音时停止播放前一个语音,防止声音重叠。下面是部分代码

 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);  // 创建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);
            }
        });

关键代码和步骤已经贴出,如果有帮助可以点个赞,如果还不会可以找我要源码。并欢迎指正,讨论

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

友情链接更多精彩内容