Namespaces

Variants
Actions

Please note that as of October 24, 2014, the Nokia Developer Wiki will no longer be accepting user contributions, including new entries, edits and comments, as we begin transitioning to our new home, in the Windows Phone Development Wiki. We plan to move over the majority of the existing entries over the next few weeks. Thanks for all your past and future contributions.

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

From Wiki
Jump to: navigation, search
WP Metro Icon Chinese.png
Article Metadata

兼容于
平台:
Series 40

文章
Steven_Ch 在 24 Apr 2007 创建
最后由 hamishwillee 在 30 Jul 2013 编辑

通话是手机最重要的功能,手机来电会抑制正在运行的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)。此外,这两个方法对于只有提示音却不显示界面的系统事件也是无能为力。

相关链接

This page was last modified on 30 July 2013, at 03:42.
390 page views in the last 30 days.

Was this page helpful?

Your feedback about this content is important. Let us know what you think.

 

Thank you!

We appreciate your feedback.

×