如何在电话接入时处理音频播放
2008-01-02 14:42
330 查看
通话是手机最重要的功能,手机来电会抑制正在运行的MIDlet运行,此时MIDlet中正在播放的音频需要被停止,等待MIDlet恢复运行时继续播放。
此外,还有一些系统事件,虽然他们不会将MIDlet抑制到后台,但是他们产生的系统提示音也会占用音频硬件,造成MIDlet中的音频播放被中断。例如:新短信、数据线插入、充电器插入和充电完成等。
可以采用如下方法解决这个问题:
Step 1:
Step 2:
注:
Canvas的showNotify()和hideNotify()也能用来判断系统事件的弹出,但是并不能用来精确的判断音频设备是否可用,可能会存在showNotify()被调用的时刻音频设备尚不可用的情况(例如NOKIA 6131)。此外,这两个方法对于只有提示音却不显示界面的系统事件也是无能为力。
此外,还有一些系统事件,虽然他们不会将MIDlet抑制到后台,但是他们产生的系统提示音也会占用音频硬件,造成MIDlet中的音频播放被中断。例如:新短信、数据线插入、充电器插入和充电完成等。
可以采用如下方法解决这个问题:
Step 1:
// 加载player的代码 // 在player加载成功后为其添加PlayerListener player.addPlayerListener(''yourPlayerListener''); // 其他代码
Step 2:
// 在实现了PlayerListener接口的类中实现playerUpdate方法 public void playerUpdate(Player player, String event, Object eventData) { // 当音频设备被系统事件占用时,发生DEVICE_UNAVAILABLE事件 if (event.equals(PlayerListener.DEVICE_UNAVAILABLE)) { // 如果需要的话,在这里添加代码释放资源 // 添加代码,记录被停止的player或设备可用后是否要继续播放player } // 当音频设备被系统事件归还时,发生DEVICE_AVAILABLE事件 else if (event.equals(PlayerListener.DEVICE_AVAILABLE)) { // 如果需要,在这里添加代码继续播放player } }
注:
Canvas的showNotify()和hideNotify()也能用来判断系统事件的弹出,但是并不能用来精确的判断音频设备是否可用,可能会存在showNotify()被调用的时刻音频设备尚不可用的情况(例如NOKIA 6131)。此外,这两个方法对于只有提示音却不显示界面的系统事件也是无能为力。
相关文章推荐
- 如何在电话接入时处理音频播放
- 音频播放中断问题的优化处理---电话、静音键、锁屏后台播放、线路变化
- 创建多媒体APP 之 音频播放:处理音频输出硬件
- 音频处理之语音加速播放
- android 如何修改音频文件实现播放淡入淡出效果
- 如何在ASP.net页面中,客户端播放音频
- 简单谈谈如何利用h5实现音频的播放
- 如何利用js来控制音频的播放次数
- 【原】使用SoundPlayer播放wav文件时产生杂音如何处理
- Android音频处理——通过AudioRecord去保存PCM文件进行录制,播放,停止,删除功能
- symbian 如何 播放 声音/ 音频
- 关于一个音频播放器在工作时,打开另一个播放器或者进来电话之类的处理
- 如何使用Octave 在Ubuntu上科学处理音频
- Centos修炼----->Centos7办公环境打造(No4 一音频和视频文件如何播放)
- Android音频处理——通过AudioRecord去保存PCM文件进行录制,播放,停止,删除功能
- 音频播放处理(openal、dsound、waveout)
- 如何将语音文件转换为Asterisk可以播放的音频格式文件(.wav)
- 关于微信、QQ语音消息,语音电话的时候控制应用音频播放以及暂停
- 如何在Android中播放网络传输过来的AAC音频?
- Windows 8 如何在后台播放音频