背景描述:

调用SoundPool提示系统音,发现无法正常提示。

调用代码如下:

private void playBySoundPool(){Uri actualDefaultRingtoneUri = RingtoneManager.getActualDefaultRingtoneUri(getApplicationContext(), RingtoneManager.TYPE_NOTIFICATION);Log.d(TAG,"actualDefaultRingtoneUri: "+actualDefaultRingtoneUri);final SoundPool snd = new SoundPool(10, AudioManager.STREAM_MUSIC,5);final int load = snd.load(actualDefaultRingtoneUri.getPath(), 1);snd.setOnLoadCompleteListener(new SoundPool.OnLoadCompleteListener() {@Overridepublic void onLoadComplete(SoundPool soundPool, int sampleId, int status) {if (snd != null) {int  mStreamID = snd.play(load, 1.0f, 1.0f, 16, 0, 1.0f);}}});}

1、new SoundPool(10, AudioManager.STREAM_MUSIC,5);

问题原因:將 ringer mode 設成 silent , silent 會影響 STREAM_SYSTEM,STREAM_RING,STREAM_NOTIFICATION,STREAM_SYSTEM_ENFORCED,STREAM_DTMF  這些 stream。

会影响声音的提示

解决方案:使用AudioManager.STREAM_MUSIC类型

2、onLoadComplete没走到

提示如下log

09-25 13:14:05.707 W/MessageQueue( 2693): Handler (android.media.SoundPool$EventHandler) {59b14bc} sending message to a Handler on a dead thread
09-25 13:14:05.707 W/MessageQueue( 2693): java.lang.IllegalStateException: Handler (android.media.SoundPool$EventHandler) {59b14bc} sending message to a Handler on a dead thread
09-25 13:14:05.707 W/MessageQueue( 2693):       at android.os.MessageQueue.enqueueMessage(MessageQueue.java:543)
09-25 13:14:05.707 W/MessageQueue( 2693):       at android.os.Handler.enqueueMessage(Handler.java:643)
09-25 13:14:05.707 W/MessageQueue( 2693):       at android.os.Handler.sendMessageAtTime(Handler.java:612)
09-25 13:14:05.707 W/MessageQueue( 2693):       at android.os.Handler.sendMessageDelayed(Handler.java:582)
09-25 13:14:05.707 W/MessageQueue( 2693):       at android.os.Handler.sendMessage(Handler.java:519)
09-25 13:14:05.707 W/MessageQueue( 2693):       at android.media.SoundPool.postEventFromNative(SoundPool.java:566)

问题原因:service里调用soundPool,在load之前service结束。导致系统回调无法正常进行

解决方案:把soundPool相关代码post到handler中

SoundPool播放系统提示音相关推荐

  1. Android 播放系统提示音

    Android 播放系统提示音 Uri uri = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION); Ringtone ...

  2. iOS开发小结 - 播放系统提示音使用总结(AudioToolbox)

    开发过程中需要用到苹果自带的系统提示音,下面我总结了一下关于系统提示音播放的方法 第一步首先得导入AudioToolbox框架 #import <AudioToolbox/AudioToolbo ...

  3. Android 直接播放系统提示音

    Uri uri = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION); Ringtone rt = RingtoneMa ...

  4. ios 简单系统提示音

    此方法为获取音频文件的相关信息 NSString *audiopath = [[NSBundle mainBundle]pathForResource:@"9415" ofType ...

  5. 【Mac新技能】教你告别单调的Mac电脑自带系统提示音!

    不喜欢Mac电脑系统提示音?想将自己喜欢的音乐自定义成Mac电脑提示音?那你怎么能错过这篇干货满满的Mac电脑自定义系统提示音的图文教程呢! 第一步:将喜欢的音乐转换为AIFF格式 1.打开 iTun ...

  6. 语音会议服务器设置,VCX语音会议服务器系统提示音录音方法

    VCX语音会议服务器系统提示音录音方法 一.组网需求: 略. 二.组网图: 略. 三.配置步骤: (注意:此配置方法仅适用于VCX IPC 组件(XE750X系列)的7.1.3.69.7.1.2.3. ...

  7. Android获取系统提示音

    有消息来了,让系统提示音响一下,,获取系统提示音的方法很简单.直接上代码 //提示音private static void startAlarm(Context context) {Uri notif ...

  8. 如何修改系统提示音 (ex:触摸提示音)

    [DESCRIPTION] 如何修改系统提示音 (ex:触摸提示音) [SOLUTION] 有两种方法可以修改: 1.修改音频参数,系统音的参数位于  KK: AudioMTKPolicyManage ...

  9. android 播放 消息提示音 和 震动

    1.开启震动 /*** 手机震动*/private static void phoneVibrates() {Vibrator vib = (Vibrator) MyApplication.getMy ...

最新文章

  1. 全面理解java内存模型_深入理解Java内存模型(八)——总结
  2. Arcgis Server Manager发布ArcGISTiledMapServiceLayer服务
  3. STM32 基础系列教程 12 – ADC 中断
  4. 再发 400 个红包,新年快乐!
  5. 写给准备参加秋招的童鞋的一点建议(1)
  6. C指针原理(16)-C指针基础
  7. 实战渗透 | 向吃鸡外挂站开炮
  8. careercup-数组和字符串1.7
  9. lldb 调试php,linux系统下如何在vscode中调试C++代码
  10. 七. jenkins部署springboot项目(4)-linux环境--远程调试
  11. 问题总结(一)使用代码调整SharePoint WebPart 视图和列表菜单
  12. iOS 项目改名~~~~~
  13. [算法]代码运行时间增长数量级对比 线性级别N vs 线性对数级别 NlgN
  14. php计算工资的代码,php计算税后工资的方法_PHP
  15. 人工智能数学基础-线性代数1:向量及向量加减法与数乘
  16. java 正整数类型_Java 整数类型
  17. uC/Modbus 用户手册——第一节
  18. React+阿里云Aliplayer播放器实现rtmp直播(推流时间差,重启播放器,计时观看)
  19. Echarts 交错正负轴
  20. E: Release file for http://xxx is not valid yet (invalid for another 8h 3min 53s). Updates for this

热门文章

  1. 2022 上半年 FDA 小分子药物盘点 - MedChemExpres
  2. [Flink基础]--什么是流处理?
  3. 高精度计算(三)压位
  4. 五金配件批发行业在线订单管理系统解决方案
  5. proxifier安装激活使用
  6. python3.5.5does not support a f profix
  7. 利用CodeMirror构建在线IDE随记
  8. 为一加七Pro(LineageOs17.1 4.14内核版本)编译KernelSu
  9. uniCloud使用
  10. 体育直播数据网站如何运营