栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Android 打开飞行模式和拔出耳机时自动退出FM Radio应用

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Android 打开飞行模式和拔出耳机时自动退出FM Radio应用

// switch antenna should not impact audio focus status

mValueHeadSetPlug = (intent.getIntExtra(“state”, -1) == HEADSET_PLUG_IN) ? 0 : 1;

switchAntennaAsync(mValueHeadSetPlug);

+//{@TChip ZJ Add START

+if(mValueHeadSetPlug == 1 && mIsPowerUp )

+{

showToast(getString(R.string.toast_plugin_headphone_before_FM));

sHandler11.sendMessageDelayed(sHandler11.obtainMessage(MSG_EXIT_FM, FMRadioService.this),(long)

+1000);

+mFmServiceHandler.removeCallbacksAndMessages(null);

+stopFMFocusLoss(AudioManager.AUDIOFOCUS_LOSS);

+}

else

sHandler11.removeMessages(MSG_EXIT_FM);

+//TChip ZJ Add END

if (SHORT_ANNTENNA_SUPPORT) {

boolean isSwitch = (switchAntenna(mValueHeadSetPlug) == 0) ? true : false;

LogUtils.d(TAG, “onReceive.switch anntenna:isWitch:” + isSwitch);

@@ -380,7 +423,27 @@ public class FMRadioService extends Service implements FMRecorder.OnRecorderStat

LogUtils.d(TAG, “setFMViaBTController(false) succeeded!!”);

mUsingFMViaBTController = false;

enableFMAudio(true);

       } */else {

       } */

+//{@TChip ZJ Add START

+else if(Intent.ACTION_AIRPLANE_MODE_CHANGED.equals(action)){

  boolean isAirPlaneMode = intent.getBooleanExtra("state",false);
  if(isAirPlaneMode){
      LogUtils.d(TAG, ">>>ACTION_AIRPLANE_MODE_CHANGED");
      if (mIsPowerUp) {
             showToast(getString(R.string.toast_fm_enter_airplane_mode));
             sHandler11.sendMessageDelayed(sHandler11.obtainMessage(MSG_EXIT_FM, FMRadioService.this),(long)1000);
             mFmServiceHandler.removeCallbacksAndMessages(null);
             stopFMFocusLoss(AudioManager.AUDIOFOCUS_LOSS);
              }
        } 

+}

+//TChip ZJ Add END @}

+else {

LogUtils.w(TAG, “Error: undefined action.”);

}

LogUtils.d(TAG, “<<< FMRadioService.onReceive”);

@@ -1557,6 +1620,7 @@ public class FMRadioService extends Service implements FMRecorder.OnRecorderStat

filter.addAction(Intent.ACTION_SHUTDOWN);

filter.addAction(Intent.ACTION_SCREEN_ON);

filter.addAction(Intent.ACTION_SCREEN_OFF);
+filter.addAction(Intent.ACTION_AIRPLANE_MODE_CHANGED);// TChip ZJ Add
filter.addAction(ACTION_SHUTDOWN_IPO);

写在最后

最后我想说:对于程序员来说,要学习的知识内容、技术有太多太多,要想不被环境淘汰就只有不断提升自己,从来都是我们去适应环境,而不是环境来适应我们!

这里附上上述的技术体系图相关的几十套腾讯、头条、阿里、美团等公司2021年的面试题,把技术点整理成了视频和PDF(实际上比预期多花了不少精力),包含知识脉络 + 诸多细节,由于篇幅有限,这里以图片的形式给大家展示一部分。

相信它会给大家带来很多收获:

上述【高清技术脑图】以及【配套的架构技术PDF】可以点击下面链接免费获取

Android学习PDF+架构视频+面试文档+源码笔记

91%E4%B8%8D%E4%BC%9A%E8%BF%99%E4%BA%9B%EF%BC%9F%E5%A6%82%E4%BD%95%E9%9D%A2%E8%AF%95%E6%8B%BF%E9%AB%98%E8%96%AA%EF%BC%81.md)

当程序员容易,当一个优秀的程序员是需要不断学习的,从初级程序员到高级程序员,从初级架构师到资深架构师,或者走向管理,从技术经理到技术总监,每个阶段都需要掌握不同的能力。早早确定自己的职业方向,才能在工作和能力提升中甩开同龄人。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/727065.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号