美文网首页
[故障及解决]SoundPool没有声音,尤其是首次

[故障及解决]SoundPool没有声音,尤其是首次

作者: 中v中 | 来源:发表于2021-07-20 12:54 被阅读0次

问题描述:

使用SoundPool类进行播放声音时,在手机上没有声音。

问题代码:

/**
 * 声音播放
 */
private void playSound() {
    SoundPool soundPool = new SoundPool(10, AudioManager.STREAM_SYSTEM, 5);
    soundPool.load(this, R.raw.beep, 1); // 加载资源,返回1
    soundPool.play(1, 1, 1, 0, 0, 1); // 播放,返回0
}

问题原因:

SoundPool池加载声音,在调用load方法的时候,是使用其他线程来加载资源的,所以上述代码在执行play方法的时候,资源还没有加载,故没有声音。

修改方法,就是中间留出足够的时间来进行加载声音文件,或追加加载完成的监听器来监听是否完成(SoundPool.OnLoadCompleteListener类的方法onLoadComplete(SoundPool soundPool, int sampleId, int status) )。

正确代码:

因为声音文件很小,所以就在onCreate方法中加载文件,后面进行播放。

private SoundPool soundPool; // 声音加载池
 
protected void onCreate(Bundle savedInstanceState) {
// 门声音预加载
    soundPool = new SoundPool(10, AudioManager.STREAM_SYSTEM, 5);
    soundPool.load(this, R.raw.beep, 1);
}
 
/**
 * 声音播放
 */
private void playSound() {
    soundPool.play(1, 1, 1, 0, 0, 1);
}

相关文章

  • [故障及解决]SoundPool没有声音,尤其是首次

    问题描述: 使用SoundPool类进行播放声音时,在手机上没有声音。 问题代码: 问题原因: SoundPool...

  • SoundPool没有声音

    看代码,使用SoundPool加载tab_click_sound.mp4播放没有声音 原因:SoundPool用的...

  • 音频通知声音播放器SoundPool的封装使用

    SoundPool结构如下 初始化SoundPool 初始化SoundPool 我们直接new SoundPool...

  • 多媒体续

    多媒体 音效池SoundPool### 音效池可以放多个音乐soundPool = new SoundPool(2...

  • 2017年9月机电工作情况总结

    一、机电设备运行、故障存在及维修情况 9月共存在机电或系统故障25项,其中自行解决17项,路桥人员解决5项,尚未解...

  • 电脑故障及解决方法

    1. Q:台式电脑无法开机 思路:查看显示屏是否出现问题,背板灯是否不亮,键盘上NUM灯是否显示,经查验发现,显示...

  • 搭建一个MongoDB副本集系统

    在任何服务系统中,要提供系统服务高可用,必须要解决单点故障及实现故障自动转移。mongodb的副本集提供了这样的功...

  • 配网故障定位

    配网故障定位技术,解决配网故障时的故障位置定位功能。

  • SoundPool

    1.SoundPool和MediaPlayer SoundPool适合短且对反应速度比较高的情况(游戏音效或按键声...

  • 2020-10-27

    诊断故障要有思路,很多故障报的故障码都不是故障问题所在,找出根源,解决问题…

网友评论

      本文标题:[故障及解决]SoundPool没有声音,尤其是首次

      本文链接:https://www.haomeiwen.com/subject/qhglmltx.html