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无法恢复相关推荐
- apk 打包 java出错_一次不成功的apk重新打包经过
我在 https://github.com/qpython-android/qpython3/releases/download/1.0.0/qpython3-app-release-1.0.0.ap ...
- 易语言 java支持_开源Java客户端可以连接易语言服务器
我们的服务端处理客户端的连接请求是同步进行的, 每次接收到来自客户端的连接请求后, 都要先跟当前的客户端通信完之后才能再处理下一个连接请求. 这在并发比较多的情况下会严重影响程序的性能, 为此,我们可 ...
- java编译_解析 Java 即时编译器原理。
↑ 点击上面 "时代Java"关注我们,关注新技术,学习新知识! 一.导读 常见的编译型语言如C++,通常会把代码直接编译成CPU所能理解的机器码来运行.而Java为了实现&quo ...
- 尚学堂java培训_送给 Java 自学者或者初学者的最全知识清单,2020 年 Java 就该这么学...
最近逛知乎,发现有很多想自学 Java 或者 Java 初学者提问,不知道如何学习 Java?我接触 Java 快 8 年的时间了,一直从事 Java 开发工作,自己一直升级打怪,对于如何更好的学习 ...
- java启动器_打造java启动器步骤三
一.Java程序的启动过程 对于普通用户来说,Java让人不习惯的是程序的启动过程:即使对于富有经验的开发者,为了用默认的装载器启动Java程序,不得不编写大量批命令.脚本文件,不得不在命令行环境下进 ...
- java歌_用java实现歌曲串烧高速版(SequenceInputStream的使用)
文章最后有完整测试代码 基本代码如下:(代码注释部分不用看,一步步学习SequenceInputStream用的)import java.io.BufferedInputStream; import ...
- java 模板方法_设计模式(java实现)_模板方法模式(Template method)
设计模式(java实现)_模板方法模式(Template method) 模板方法模式是编程中经常用到到的模式.它定义了一个操作中的算法骨架,将某些步骤延迟到子类中实现.这样,新的子类可以在不改变一个 ...
- java安装_使用Java 9模块化来发布零依赖本机应用程序
java安装 为什么我不能仅构建一个.EXE? 首次引入Java时,主流编程语言大多要么编译成独立的可执行文件(例如C / C ++,COBOL),要么在解释器中运行(例如Perl,Tcl). 对于许 ...
- java转账_使用Java模拟银行账户存、取款、转账功能
半枯 package bank;import java.util.Scanner;/** * 1.建立一个银行账户类(Acount),具有建立新帐号.查询余额.存款.取款.转账 * 即从本账户把钱转给 ...
- java预期_预期. java的
我有这段java代码.我是java中的菜鸟.. 错误: expected cfg = new Config; 码: import java.sql.Connection; import java.sq ...
最新文章
- 【原创】WinCE下流驱动开发流程
- 【C/C++学院】(27)项目实战HttpServer--原理分析
- 自定义工作流任务控件
- 常见数据库的Connection URL
- 超级简单的mysql主从数据库配置攻略以及错误处理
- 性能测试调优篇---未完待续
- 类型和原生函数及类型转换(一)
- 8 传输层----TCP
- 原生JS实现粘贴到剪贴板
- 七种方法实现单例模式
- Mac安装 MySQL 可视化工具MySQL Workbench
- linux锐捷代码_锐捷认证 For Linux
- 财会法规与职业道德【18】
- 7种大屏设计与布局思路,你不知道就亏了
- 网络安全:为大家介绍5种常见的加密算法
- Ubuntu系统SSH免密登录,以及SSH免密登录原理
- 计算机网络—CSMA/CD协议
- VIA和PAD的用法区分
- Tesseract-OCR下载和安装
- linux 看芯片信息,Linux查看硬件信息(北桥芯片组、南桥、PCI接口、CPU等)