关于motoEM30的中断

本文介绍在MotoEM30手机上开发过程中遇到的声音中断问题及处理方案,包括接听电话、短信到达等场景下对声音播放的影响及其解决办法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

因为开发moto EM30手机上的东西,发现了很BT的中断相应。(1)按下红色键(关机键)时触发javax.microedition.lcdui.Canvas.hidenotify()事件,当返回程序时会触javax.microedition.midlet.MIDlet.pauseApp()事件.当选择隐藏程序时会先触发pauseApp然后立即执行shownotify.(2)打电话时,当有电话铃声想起时触发了javax.microedition.lcdui.Canvas.hidenotify(),如果在此之前有声音正在播放,电话铃声会导致Player对象异常,在public void playerUpdate(Player player, String event, Object data){if(event.equals(PlayerListener.DEVICE_UNAVAILABLE) || event.equals(PlayerListener.ERROR)){...}}电话中断回来,虽然声音在播放,但player确没有声音。所以当有此类情况时最好时记录下原来player的声音各个值,如播放到那个帧,播放器控制开关的值。中断回来时相应了shownotify()同时重新load原来的声音文件并设置开始点播放。(3)有短信来到时不会触发hidenotify()也不会触发shownotify(),但时短信音也会时原来正在播放的player出现异常。处理方式就比较麻烦。我们采用了三个值确定是否时短信影响了player.在hideNotify(){ishidenotify = true; hideCout =1;}和监听中当出现PlayerListener.DEVICE_UNAVAILABLE||PlayerListener.ERROR)时设置isBreakSound = true; 当if(ns.isSoundBreak && !ishidenotify && hideCount !=1){ ... hideCount =0;}表示短信事件。为什么要用三个值而不用两个ns.isSoundBreak && !ishidenotify呢?由于打电话时也会触发这个事件,如果当电话中断返回过快时shownotify中有ishidenotify =false;语句会快速执行,导致也会进入我们的短信判断部分。如果这两段中都有声音重新加载播放,声音就会有断续(卡)的现象。-------------------------moto机器对声音的关闭也不及时。如果在player刚结束准备循环准备播放时执行隐藏应用程序,你有可能会发现隐藏后还有声音播放,即使你在pauseApp中有player.close()语句也不好使。moto对所有的close()语句执行都很慢。你不用那更不可以(十分郁闷,如果没有close()你重新创建player会导致多个系统中会有很多个player那是你就麻烦啦)-------------------------建议:   moto的声音判断和中断处理最好在Runnable的run函数中执行会好一点。声音关闭不及时我就用线程一直关,直到死掉(哈哈哈)我的处理----》public void logicRun()    {  try{                 if(!midlet.isPause)                       {      if (gamestate == Gamescreen.STATE_HELP || gamestate == Gamescreen.STATE_ABOUT )                {/*                    if(ns.isSoundBreak){                        //如果在此状态因为打电话把声音关闭,且造成重新showHelp()或showAbout()                        if(midlet.isOpened)ns.ok = true ;                        ns.isSoundBreak = false;                    }*/                }else{                            if (gamestate >= Gamescreen.STATE_FRONTPAGE)                     {                              if(ns.ok)  {//midlet.soundState                                                       if(ns.player == null){  soundOn();                           }else{                                if(ns.player.getState()==Player.UNREALIZED){                                    ns.player.realize();                                }                                 if(ns.player.getState()==Player.REALIZED){                                    ns.player.prefetch();                                }                                if(ns.player.getState()==Player.PREFETCHED){                                    ns.player.start();                                }                                 if(ns.player.getState()==Player.CLOSED){                                                                    }                                if(ns.player.getState()==Player.STARTED)                                {                                    // ns.player.start();                                }                                                               }//如果收到短信或者打电话有提示因,会造成player异常,并被player监听器捕获//打电话时会触发hidenotify,且电话中断后返回会触发shownotify//短信中断后返回不会触发ishidenotify                            //hideCount==1 确定不是因为打电话时hidenotify和shownotify处理过快而导致进入该段                                                                if(ns.isSoundBreak && !ishidenotify && hideCount !=1){                                if(ns.isSMSBackDevice){                                    showMsg = "the sms back ok";                                }                                if(ns.player == null){                                    soundOn();                                 }else{                                     if(ns.player.getState()==Player.UNREALIZED){                                            ns.player.realize();                                        }                                         if(ns.player.getState()==Player.REALIZED){                                            ns.player.prefetch();                                        }                                        if(ns.player.getState()==Player.PREFETCHED){                                            ns.player.start();                                        }                                         if(ns.player.getState()==Player.CLOSED){                                                                                    }                                        if(ns.player.getState()==Player.STARTED)                                        {                                            // ns.player.start();                                        }                                 }                            }//end sms process                          hideCount =0;                         }                     }                                            //}                }            }else{//先相应pauseApp()然后再调用此处                  soundOff();            }        }catch(Exception e)        {            return;        }            }    public int hideCount = 0;    public void hideNotify()    {//Midlet.pauseApp()        hideCount = 1;        //showMsg ="hideNotify!";        if (gamestate == Gamescreen.STATE_HELP || gamestate == Gamescreen.STATE_ABOUT  )        {    //if(selectedItem!=1 ||selectedItem !=2)                      }else{            if (gamestate >= Gamescreen.STATE_FRONTPAGE)            { //打电话也触  //按下红色键时触发               //midlet.pauseApp();                IncomeApp();            }        }    }    public static boolean ishidenotify  = false;    //public static boolean soundok1 = false;    public void IncomeApp()    {        Gamescreen.showMsg = Gamescreen.showMsg+"IncomeApp() !";        //midlet.isPause = true;        ishidenotify  = true;        //soundok1 = ns.ok;        midlet.soundState = ns.ok;        soundOff();        if (ns.ok)        {            rank.addData("0", 1);        }        else        {            rank.addData("1", 1);        }    }    public int showCount = 0;    public void showNotify()    {      showCount++;                  //如果先从staApp中的ispuase段执行后将不会返回到此处执行,        //因为没有再次调用hidenotify的动作所以无需shownotify           ErrCode=ErrCode+"#";           if(!midlet.isPause)           {  Gamescreen.showMsg = "!->isPause shownotify";                if (gamestate == Gamescreen.STATE_HELP || gamestate == Gamescreen.STATE_ABOUT )                {                    if(ns.isSoundBreak){                        //如果在此状态因为打电话把声音关闭,且造成重新showHelp()或showAbout()                        if(midlet.isOpened)ns.ok = true ;                        ns.isSoundBreak = false;                    }                }else{                                    if(ishidenotify){                            if(midlet.soundState) {                                ns.ok = true;                                ns.player = null;                                 //soundOn();                                showMsg = "33333333";                                if (ns.ok)                                {                                    rank.addData("0", 1);                                }                                else                                {                                    rank.addData("1", 1);                                }                            }                            ishidenotify = false;                        }else{                                                    }                    //}                }            }else{//先相应pauseApp()然后再调用此处                    soundOff();            }        display.setCurrent(this);        repaint();    }//===========midlet======================//
public void startApp() {     
 if(isPause){           isPause = false;}else{    //原来你写的东西  }}
protected void pauseApp() {        isPause = true;//Jimmy gai_
}
内容概要:本文档详细介绍了基于Python的在线二手电子产品回收系统的设计与实现。项目旨在通过构建一个可靠、安全、透明的平台,提高废旧电子产品的回收率,推动资源的合理再利用,提供安全可靠的交易平台,加强环保意识,促进二手市场的发展,并实现数据驱动的智能化服务。项目面临的主要挑战包括废旧电子产品的检测与评估、信息不对称与交易风险、市场需求的预测与定价、用户体验优化及平台的安全性与数据保护。解决方案涵盖智能化评估与回收定价、高效的二手产品处理流程、完善的售后保障体系、创新的市场需求分析、全程透明化与安全性保障以及定制化用户体验。系统采用微服务架构,包括用户管理、商品评估、交易管理、数据分析、支付与结算等模块。项目还涉及前端界面设计、API接口开发、数据库设计与实现、模型训练与优化、部署与应用等方面。 适合人群:具备一定编程基础,特别是对Python和Web开发有一定了解的研发人员,以及对二手电子产品回收和环保事业感兴趣的从业者。 使用场景及目标:①帮助用户方便地将闲置电子产品回收、交易或再利用,提高废旧电子产品的回收率;②通过智能化的数据分析为用户提供价格评估、市场需求分析等服务,提高回收效率;③提供安全可靠的交易平台,确保交易的公平性和安全性;④推动二手市场的健康发展,为消费者提供经济实惠的产品选择;⑤增强公众的环保意识,推动社会向绿色、低碳方向发展。 其他说明:本文档不仅提供了系统的功能模块设计、数据库表结构、API接口规范,还展示了具体代码实现和GUI界面设计,为开发者提供了全面的技术参考。此外,项目强调了数据安全和隐私保护的重要性,确保平台在运行过程中能够有效保护用户信息。项目未来改进方向包括增强模型的精准度、拓展国际市场、提供更多支付和融资选项、跨平台数据集成与分析、更加智能的回收流程以及强化社交化与社区功能。
内容概要:本文档详细介绍了基于C语言和单片机设计的固态继电器驱动空调温控系统,涵盖了从硬件电路设计、程序设计、GUI设计到代码详解的完整流程。项目旨在实现高效精准的温度控制、提升系统可靠性和寿命、灵活的参数设置和人机交互、降低能耗、模块化设计便于扩展与维护,以及促进智能家居与工业自动化发展。项目通过高精度温度采集与滤波算法、固态继电器驱动与保护电路设计、滞环控制算法、多层次软件模块化设计等创新点,确保系统的高效节能、智能化和高可靠性。; 适合人群:具备一定单片机和C语言编程基础的研发人员,尤其是从事嵌入式系统设计、智能家居和工业自动化领域的工程师。; 使用场景及目标:①实现高效精准的温度控制,确保室内温度维持在理想范围;②提升系统可靠性和寿命,减少故障率和维护成本;③支持灵活的参数设置和用户友好的人机交互界面,提升用户体验;④降低能耗,实现节能控制,推动绿色建筑和节能环保产业的发展;⑤通过模块化设计,便于后续功能升级和系统扩展,如远程监控、数据分析等智能化功能。; 其他说明:项目设计充分考虑了实际应用中的挑战,如温度采集的精度与稳定性、电气兼容性、系统响应速度与控制稳定性、软件设计的资源优化与抗干扰等,提出了针对性的解决方案。系统不仅适用于家庭智能空调,还能广泛应用于工业、商业建筑、医疗环境及农业温室等多个领域。未来改进方向包括智能温度预测与自适应控制、多传感器融合技术应用、远程监控与云平台集成、低功耗与绿色节能优化等。通过该系统,不仅能够精确控制室内温度,保障舒适环境,还能有效节能,延长设备使用寿命,具有重要的实际应用价值和推广意义。
标题基于SpringBoot的学生学习成果管理平台研究AI更换标题第1章引言介绍研究背景、目的、意义以及论文结构。1.1研究背景与目的阐述学生学习成果管理的重要性及SpringBoot技术的优势。1.2研究意义分析该平台对学生、教师及教育机构的意义。1.3论文方法与结构简要介绍论文的研究方法和整体结构。第2章相关理论与技术概述SpringBoot框架、学习成果管理理论及相关技术。2.1SpringBoot框架简介介绍SpringBoot的基本概念、特点及应用领域。2.2学习成果管理理论基础阐述学习成果管理的核心理论和发展趋势。2.3相关技术分析分析平台开发所涉及的关键技术,如数据库、前端技术等。第3章平台需求分析与设计详细分析平台需求,并设计整体架构及功能模块。3.1需求分析从学生、教师、管理员等角度对平台需求进行深入分析。3.2整体架构设计设计平台的整体架构,包括技术架构和逻辑架构。3.3功能模块设计具体设计平台的核心功能模块,如成果展示、数据分析等。第4章平台实现与测试阐述平台的实现过程,并进行功能测试与性能分析。4.1平台实现详细介绍平台的开发环境、关键代码实现及技术难点解决方案。4.2功能测试对平台各项功能进行全面测试,确保功能正确无误。4.3性能分析分析平台的性能指标,如响应时间、并发处理能力等。第5章平台应用与效果评估探讨平台在实际教学中的应用,并对其效果进行评估。5.1平台应用案例选取典型应用案例,展示平台在实际教学中的使用情况。5.2效果评估方法介绍平台效果评估的具体方法和指标。5.3评估结果分析根据评估数据,对平台的应用效果进行深入分析。第6章结论与展望总结论文的主要研究成果,并指出未来研究方向。6.1研究结论概括性地阐述论文的研究结论和主要贡献。6.2研究展望针对当前研究的不足之处,提出未来改进和扩展的方向。
内容概要:本文详细介绍了一个基于Python实现的锂电池寿命预测项目,该项目采用双向门控循环单元(BiGRU)来处理锂电池的多维时序数据。文章首先阐述了项目背景,强调了锂电池寿命预测的重要性及其面临的挑战。接着介绍了项目的目标,包括实现高精度预测、提升模型适应性、优化电池管理系统、降低成本、推动技术创新、提供可扩展平台、增强鲁棒性和泛化能力、实现自动化流程以及促进学术与产业结合。然后讨论了项目中遇到的挑战及相应的解决方案,如数据预处理、模型选择、训练优化等。最后展示了项目的模型架构,包括数据输入层、特征提取层、BiGRU编码层、全连接层和输出层,并提供了部分Python代码示例,涵盖了数据预处理、模型构建、训练过程和预测评估等内容。; 适合人群:对锂电池寿命预测感兴趣的科研人员、从事电池管理系统开发的工程师、以及有一定Python编程基础并希望了解深度学习应用于时间序列分析的开发者。; 使用场景及目标:①适用于需要对锂电池进行健康状态监测和寿命预测的场合,如电动汽车、便携式电子产品等领域;②帮助研究人员和工程师理解BiGRU模型的工作原理及其在电池寿命预测中的应用;③为电池管理系统提供智能决策支持,优化维护策略,降低运营成本;④推动锂电池寿命预测技术的创新发展,促进学术研究与产业应用的结合。; 其他说明:此项目不仅提供了详细的理论和技术介绍,还附带了完整的代码示例,方便读者实践操作。建议读者在学习过程中结合实际数据进行实验,逐步掌握BiGRU模型的设计与实现,并根据具体应用场景调整模型参数,以达到最佳预测效果。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值