SoundPool播放系统提示音
背景描述:
调用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播放系统提示音相关推荐
- Android 播放系统提示音
Android 播放系统提示音 Uri uri = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION); Ringtone ...
- iOS开发小结 - 播放系统提示音使用总结(AudioToolbox)
开发过程中需要用到苹果自带的系统提示音,下面我总结了一下关于系统提示音播放的方法 第一步首先得导入AudioToolbox框架 #import <AudioToolbox/AudioToolbo ...
- Android 直接播放系统提示音
Uri uri = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION); Ringtone rt = RingtoneMa ...
- ios 简单系统提示音
此方法为获取音频文件的相关信息 NSString *audiopath = [[NSBundle mainBundle]pathForResource:@"9415" ofType ...
- 【Mac新技能】教你告别单调的Mac电脑自带系统提示音!
不喜欢Mac电脑系统提示音?想将自己喜欢的音乐自定义成Mac电脑提示音?那你怎么能错过这篇干货满满的Mac电脑自定义系统提示音的图文教程呢! 第一步:将喜欢的音乐转换为AIFF格式 1.打开 iTun ...
- 语音会议服务器设置,VCX语音会议服务器系统提示音录音方法
VCX语音会议服务器系统提示音录音方法 一.组网需求: 略. 二.组网图: 略. 三.配置步骤: (注意:此配置方法仅适用于VCX IPC 组件(XE750X系列)的7.1.3.69.7.1.2.3. ...
- Android获取系统提示音
有消息来了,让系统提示音响一下,,获取系统提示音的方法很简单.直接上代码 //提示音private static void startAlarm(Context context) {Uri notif ...
- 如何修改系统提示音 (ex:触摸提示音)
[DESCRIPTION] 如何修改系统提示音 (ex:触摸提示音) [SOLUTION] 有两种方法可以修改: 1.修改音频参数,系统音的参数位于 KK: AudioMTKPolicyManage ...
- android 播放 消息提示音 和 震动
1.开启震动 /*** 手机震动*/private static void phoneVibrates() {Vibrator vib = (Vibrator) MyApplication.getMy ...
最新文章
- 全面理解java内存模型_深入理解Java内存模型(八)——总结
- Arcgis Server Manager发布ArcGISTiledMapServiceLayer服务
- STM32 基础系列教程 12 – ADC 中断
- 再发 400 个红包,新年快乐!
- 写给准备参加秋招的童鞋的一点建议(1)
- C指针原理(16)-C指针基础
- 实战渗透 | 向吃鸡外挂站开炮
- careercup-数组和字符串1.7
- lldb 调试php,linux系统下如何在vscode中调试C++代码
- 七. jenkins部署springboot项目(4)-linux环境--远程调试
- 问题总结(一)使用代码调整SharePoint WebPart 视图和列表菜单
- iOS 项目改名~~~~~
- [算法]代码运行时间增长数量级对比 线性级别N vs 线性对数级别 NlgN
- php计算工资的代码,php计算税后工资的方法_PHP
- 人工智能数学基础-线性代数1:向量及向量加减法与数乘
- java 正整数类型_Java 整数类型
- uC/Modbus 用户手册——第一节
- React+阿里云Aliplayer播放器实现rtmp直播(推流时间差,重启播放器,计时观看)
- Echarts 交错正负轴
- E: Release file for http://xxx is not valid yet (invalid for another 8h 3min 53s). Updates for this