[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无法恢复相关推荐

  1. apk 打包 java出错_一次不成功的apk重新打包经过

    我在 https://github.com/qpython-android/qpython3/releases/download/1.0.0/qpython3-app-release-1.0.0.ap ...

  2. 易语言 java支持_开源Java客户端可以连接易语言服务器

    我们的服务端处理客户端的连接请求是同步进行的, 每次接收到来自客户端的连接请求后, 都要先跟当前的客户端通信完之后才能再处理下一个连接请求. 这在并发比较多的情况下会严重影响程序的性能, 为此,我们可 ...

  3. java编译_解析 Java 即时编译器原理。

    ↑ 点击上面 "时代Java"关注我们,关注新技术,学习新知识! 一.导读 常见的编译型语言如C++,通常会把代码直接编译成CPU所能理解的机器码来运行.而Java为了实现&quo ...

  4. 尚学堂java培训_送给 Java 自学者或者初学者的最全知识清单,2020 年 Java 就该这么学...

    最近逛知乎,发现有很多想自学 Java 或者 Java 初学者提问,不知道如何学习 Java?我接触 Java 快 8 年的时间了,一直从事 Java 开发工作,自己一直升级打怪,对于如何更好的学习 ...

  5. java启动器_打造java启动器步骤三

    一.Java程序的启动过程 对于普通用户来说,Java让人不习惯的是程序的启动过程:即使对于富有经验的开发者,为了用默认的装载器启动Java程序,不得不编写大量批命令.脚本文件,不得不在命令行环境下进 ...

  6. java歌_用java实现歌曲串烧高速版(SequenceInputStream的使用)

    文章最后有完整测试代码 基本代码如下:(代码注释部分不用看,一步步学习SequenceInputStream用的)import java.io.BufferedInputStream; import ...

  7. java 模板方法_设计模式(java实现)_模板方法模式(Template method)

    设计模式(java实现)_模板方法模式(Template method) 模板方法模式是编程中经常用到到的模式.它定义了一个操作中的算法骨架,将某些步骤延迟到子类中实现.这样,新的子类可以在不改变一个 ...

  8. java安装_使用Java 9模块化来发布零依赖本机应用程序

    java安装 为什么我不能仅构建一个.EXE? 首次引入Java时,主流编程语言大多要么编译成独立的可执行文件(例如C / C ++,COBOL),要么在解释器中运行(例如Perl,Tcl). 对于许 ...

  9. java转账_使用Java模拟银行账户存、取款、转账功能

    半枯 package bank;import java.util.Scanner;/** * 1.建立一个银行账户类(Acount),具有建立新帐号.查询余额.存款.取款.转账 * 即从本账户把钱转给 ...

  10. java预期_预期. java的

    我有这段java代码.我是java中的菜鸟.. 错误: expected cfg = new Config; 码: import java.sql.Connection; import java.sq ...

最新文章

  1. 【原创】WinCE下流驱动开发流程
  2. 【C/C++学院】(27)项目实战HttpServer--原理分析
  3. 自定义工作流任务控件
  4. 常见数据库的Connection URL
  5. 超级简单的mysql主从数据库配置攻略以及错误处理
  6. 性能测试调优篇---未完待续
  7. 类型和原生函数及类型转换(一)
  8. 8 传输层----TCP
  9. 原生JS实现粘贴到剪贴板
  10. 七种方法实现单例模式
  11. Mac安装 MySQL 可视化工具MySQL Workbench
  12. linux锐捷代码_锐捷认证 For Linux
  13. 财会法规与职业道德【18】
  14. 7种大屏设计与布局思路,你不知道就亏了
  15. 网络安全:为大家介绍5种常见的加密算法
  16. Ubuntu系统SSH免密登录,以及SSH免密登录原理
  17. 计算机网络—CSMA/CD协议
  18. VIA和PAD的用法区分
  19. Tesseract-OCR下载和安装
  20. linux 看芯片信息,Linux查看硬件信息(北桥芯片组、南桥、PCI接口、CPU等)

热门文章

  1. Teambition产品分析报告
  2. java 社招 简历_招聘java简历模板
  3. Ubuntu16.04安装配置Caffe教程(GPU版)
  4. 正点原子STM32F429阿波罗板,固件库工程搭建
  5. SQLserver 获取当前时间戳
  6. 学个Antenna:手机天线入门
  7. 小爱音箱mini系统故障怎么办_Win7蓝牙连接小爱音箱mini的详细教程
  8. java飞机订票系统课程设计_JAVA数据结构课程设计,航空订票系统求助
  9. 智慧交通综合管理平台建设方案
  10. linux内核编程之内核定时器