如何在电话接入时处理音频播放

通话是手机最重要的功能,手机来电会抑制正在运行的MIDlet运行,此时MIDlet中正在播放的音频需要被停止,等待MIDlet恢复运行时继续播放。

此外,还有一些系统事件,虽然他们不会将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

注:

  1. Canvas的showNotify()和hideNotify()也能用来判断系统事件的弹出,但是并不能用来精确的判断音频设备是否可用,可能会存在showNotify()被调用的时刻音频设备尚不可用的情况(例如NOKIA 6131)。此外,这两个方法对于只有提示音却不显示界面的系统事件也是无能为力。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值