×
Namespaces

Variants
Actions
Revision as of 06:42, 30 July 2013 by hamishwillee (Talk | contribs)

(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)

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

From Nokia Developer 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 06:42.
157 page views in the last 30 days.
×