关于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_
}
内容概要:文章系统回顾和梳理了移动前传网络的需求、技术和实现架构,重点关注光纤无线融合接入基础上的数字前传技术、模拟前传技术和数模结合前传技术。文章指出,下一代宽带移动通信的容量较5G提升百倍至千倍,这对前传光通信网络提出了巨大挑战。文中详细介绍了三种前传技术的网络架构、关键技术和未来发展方向,包括数字前传技术中的Delta-Sigma调制技术,模拟前传技术中的数字预失真算法,以及数模结合前传技术中的信号补偿方法。此外,文章还展望了未来前传网络的关键技术,如毫米波/太赫兹光无线基带前传、超低时延和超高灵活性前传网络技术,以及天地一体化异构前传网络。 适合人群:从事通信网络研究的专业人员、通信工程领域的研究人员及工程师、对移动通信技术感兴趣的高校师生。 使用场景及目标:①帮助研究人员和技术人员了解前传网络的最新进展和发展趋势;②为未来移动通信网络的设计和优化提供理论依据和技术支持;③为政策制定者提供参考,以便更好地规划和布局未来的通信基础设施。 其他说明:本文由复旦大学电磁波信息科学教育部重点实验室的研究团队撰写,详细引用了大量国内外前沿研究成果,为读者提供了全面的技术背景和深入的分析。阅读时应注意结合当前通信技术的发展现状,理解文中提到的各种技术和方案的实际应用场景和潜在影响。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值