fm核武破解 java出错_关闭Java时后台的FM无法恢复
[DESCRIPTION]
在MVM的版本中,先啟動任何本地播放音樂的應用FM/Audio player,此時同時啟動多個沒有音樂的Java應用,并關閉某一個Java應用,之前后臺的FM等無法重新恢復播放。例如:
1、啟動FM -> 啟動Java應用A,FM停止播放 -> 后臺A -> FM恢復 -> 啟動Java應用B,FM停止播放-> 后臺B -> FM恢復
-> 直接在resume dialog關閉A/B都不影響FM恢復。(正常)
2、啟動FM -> 啟動Java應用A,FM停止播放 -> 后臺A -> FM恢復 ->啟動Java應用B,FM停止播放-> 后臺B -> FM恢復
-> resume A/B -> 退出A/B -> FM起不來,除非java全部退出。(不正常)
[SOLUTION]來自半導體社區
分析:
不發聲的midlet在bg時,讓FM啟動,是因為jam_resmgr_audio_controller()中,判斷是否有jma的audio player。如果
有,就清掉其他app的mdi bg handler;如果沒有,就清掉自己的,代碼如下:
else if (src == JVM_FG_RUNNING_STATE && dst == JVM_BG_RUNNING_STATE ||
src == JVM_FG_MMI_RUNNING_STATE && dst == JVM_BG_RUNNING_STATE ||
src == JVM_LONG_EVENT_STATE && dst == JVM_BG_RUNNING_STATE)
{
if (jma_audio_player_is_active())
{
/* Java must be highest priority. */
mdi_audio_clear_other_background_handler(MDI_BACKGROUND_APP_JAVA);
}
else
{
mdi_audio_clear_background_handler(MDI_BACKGROUND_APP_JAVA);
}
}
問題的原因在于,退出一個midlet(當時還有其他的midlet在bg)時,走到如下代碼。做的事情只是判斷是不是最后一個退出的midlet,如是,清除java自己的mdi bg handler。否則,icfans什么都不做。
在退出一個midlet(當時還有其他的midlet在bg)時,我們只把此時的場景設計成midlet退出,但忽略此時隱含著未退
出的midlet進入bg,代碼如下:
if (dst == JVM_TERMINATE_STATE)
{
/* Rest the context when the last JVM exit */
if (JVM_RUNNING_NUM_1 == jam_mvm_get_running_count())
{
mdi_audio_clear_background_handler(MDI_BACKGROUND_APP_JAVA);
jma_media_player_clear_parameter(KAL_FALSE);
/* De-register bt callback when midlet is terminated */
#ifdef __BT_SPK_VOL_CONTROL__
mdi_audio_bt_clear_volume_sync_callback(APP_JAVA);
#endif
}
}
解決方法:
應當判斷java bg后是該讓java繼續發聲還是其他app發聲,將進入bg的邏輯添加到terminate邏輯中。
if (dst == JVM_TERMINATE_STATE)
{
/* Rest the context when the last JVM exit */
if (JVM_RUNNING_NUM_1 == jam_mvm_get_running_count())
{
mdi_audio_clear_background_handler(MDI_BACKGROUND_APP_JAVA);
jma_media_player_clear_parameter(KAL_FALSE);
/* De-register bt callback when midlet is terminated */
#ifdef __BT_SPK_VOL_CONTROL__
mdi_audio_bt_clear_volume_sync_callback(APP_JAVA);
#endif
}
//modify begin
else if(jma_audio_player_is_active())
{
/* Java must be highest priority. */
mdi_audio_clear_other_background_handler(MDI_BACKGROUND_APP_JAVA);
}
else
{
mdi_audio_clear_background_handler(MDI_BACKGROUND_APP_JAVA);
}
//modify end
}
總結
以上是生活随笔為你收集整理的fm核武破解 java出错_关闭Java时后台的FM无法恢复的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: xvidcore交叉编译
- 下一篇: 工业控制系统ICS