随着当前IPTV EPG 技术的广泛应用,从机顶盒EPG 直播、点播界面拉起android 第三方apk时遇到的问题也越来越多,背景音的问题就是其中一个。

目前某些省份的机顶盒是这样,EPG拉起android 第三方 apk后, EPG的视频播放并没有pause掉。虽然EPG变成后台运行,第三方apk在前台运行,用户已经看不到视频画面,但是EPG 音频依然存在。用户在使用第三方app时会觉得聒噪。 遇到这种情况,要么EPG app 修改,要么第三方app修改,显然让已上线的EPG 方修改是不现实的。 那么第三方app怎么改呢?本人有幸遇到这个问题,下面是具体的解决办法:

一、怎样设置、取消静音

本人在作为第三方app的开发者在解决这个问题时,先后想到两种方法:

  1. 模拟发送静音键
new Thread(new Runnable() {@Overridepublic void run() {try {// 创建一个Instrumentation对象Instrumentation inst = new Instrumentation();// 调用inst对象的按键模拟方法inst.sendKeyDownUpSync(KeyEvent.Mute);} catch (Exception e) {e.printStackTrace();}}}).start();

2. 强制在代码里设置静音

protected void muteAudio(boolean bMute) {AudioManager am = (AudioManager) getSystemService(AUDIO_SERVICE);int volume = am.getStreamVolume(AudioManager.STREAM_MUSIC);if (bMute && volume > 0) {am.setStreamMute(AudioManager.STREAM_MUSIC, true); //设置静音} else if(!bMute && volume == 0) {am.setStreamMute(AudioManager.STREAM_MUSIC, false); //取消静音}}

这两种方法都能使得背景音消失,但是考虑到第一种方法有可能产生按键音, 所以最终用的第二种方法。

二、在哪里设置、取消静音

作为第三方app,并不是所有页面都要静音,有的页面是需要播放声音的,这个时候就要取消静音,返回后要继续设置静音,app退出时和app置于后台运行时要取消静音。

幸好本app内所有activity都继承于BaseActivity, 于是可以在这个BaseActivity里面设置静音和取消静音,不用分别到每个activity里面操作静音。相关代码如下:

@Override
   protected void onResume() {
       super.onResume();
   muteAudio(true);

}
  
   @Override
   protected void onPause() {
       super.onPause();
     
   }

//当前应用是否处于前台
private boolean isForeground(Context context) {
   if (context != null) {
      ActivityManager activityManager = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE);
      List<ActivityManager.RunningAppProcessInfo> processes = activityManager.getRunningAppProcesses();
      for (ActivityManager.RunningAppProcessInfo processInfo: processes) {
         if (processInfo.processName.equals(context.getPackageName())) {
            if (processInfo.importance == ActivityManager.RunningAppProcessInfo.IMPORTANCE_FOREGROUND) {
               return true;
            }
         }
      }
   }
   return false;
}

@Override
protected void onStop() {
   super.onStop();
   if(!isForeground(mContext)) { //当app被退出或者app被切到后台运行
      muteAudio(false);
   }
}

以上代码可以看出,只是在每个activity onResume调用时才设置静音,设置前判断音量是否为0,如果已经为0就不用设置; onPause 时不用取消静音,因为很可能好几个activity都不需要播放声音。如果某个操作确实需要播放声音,可以在具体activity里面取消静音。另外如果用户按home键将app切换到后台运行或者app退出,这是时候就要强制取消静音,所以可以在onStop里面调用取消静音。

后记

经过这次修改,发现将一个app里的所有activity全部继承于一个自定义的activity是非常必要的,一些统一的操作可以在这个BaseActivity里进行,譬如设置、取消静音,读取并显示系统时间,读取并显示网络状态等。

第三方App 如何停掉IPTV EPG 背景音相关推荐

  1. 苹果怎么安装未签名的app_稳定不掉第三方app签名怎么弄

    稳定不掉第三方app签名怎么弄 c6wlmsv 稳定不掉第三方app签名怎么弄 苹果的者账并非能轻易申请下来,如果自己去申请者账是行不通的,这是为什么呢.在正常的情况下,只要内容是不涉及到灰色,也不违 ...

  2. android 安装第三方app,Android识别预装的第三方App方法实例

    前言 新买一台手机,里面会有很多App,有的属于系统App,不可卸载,有的属于第三方App,厂商会预装一些常用的或者给了他们广告费的App,这些是可以卸载的. 如果要详细划分,系统App还可根据其路径 ...

  3. android app 提高级别,android 关于提高第三方app的service优先级

    本博客仅仅要没有注明"转".那么均为原创,转贴请注明本博客链接链接 基本上大家都知道提高service优先级能够在非常大程度上让你的service免于由于内存不足而被kill,当然 ...

  4. Android 系统 (39)---OTA后启动第三方APP出现APP Crash

    FOTA/OTA之後启动第三方APP出現APP Crash 1.问题   用FOTA下载OTA包,下载完毕更新:   更新完毕后点击多个三方APP无法进入,提示报错(这些APK都是正常安装,非预置). ...

  5. 腾讯与老干妈达成和解;传苹果将停掉 MacBook Air 产品线;VS Code 1.47 发布| 极客头条...

    整理 | 屠敏 头图 | CSDN 下载自东方 IC 快来收听极客头条音频版吧,智能播报由出门问问「魔音工坊」提供技术支持. 「极客头条」-- 技术人员的新闻圈! CSDN 的读者朋友们早上好哇,「极 ...

  6. android 关于提高第三方app的service优先级

    本博客仅仅要没有注明"转".那么均为原创,转贴请注明本博客链接链接 基本上大家都知道提高service优先级能够在非常大程度上让你的service免于由于内存不足而被kill,当然 ...

  7. 从微信跳转第三方app:在微信打开h5页面后,点击触发跳转自己app指定页面

    今天,朋友发来一条拼多多砍价消息,点击链接跳转到下面的H5页面,点击允许,跳转到拼多多的App Store页面,到这都很正常对吧,神奇的是点击打开后跳转到了指定的页面,不只是简单的打开app 想了下他 ...

  8. H5页面拉起第三方App

    这是一篇自己写的旧文,首发于: 原文链接,略有修改. 背景 在H5页面或者app的webview中调起第三方app 核心 调起app是操作系统(iOS.Android)的机制,在h5页面,我们可以做的 ...

  9. Android长图文截图的实现(支持截取第三方app)-(一)

    支持截取微博.知乎.今日头条等第三方APP-- 先瞅瞅效果图: 再瞅瞅最终的长截图: 我是长截图一,瞅瞅嘛- 我是长截图二,再瞅一下嘛- 上一周脑子突然冒出长截图这个功能,想着如何截取如微博,知乎,头 ...

最新文章

  1. 青少年编程竞赛交流群周报(第035周)
  2. 【风险管理】系统技术框架
  3. 【转】C#格式化字符串
  4. mysql 代替intersect_mysql替代INTERSECT
  5. springboot 注解动态赋值_java springboot动态给注解属性参数赋值
  6. ES5-4 函数基础与种类、形实参及映射、变量类型
  7. Appscan_web安全测试工具 (含修改启动浏览器的方法)
  8. mysql数据库主从不同步_mysql数据库主从不同步的解决方法
  9. QT5实现摄像头预览与扑捉图像
  10. SpringMVC类型转换、数据绑定详解
  11. FPGA杂记5——格雷码转换设计
  12. java基于ssm+mysql的宠物店管理系统 计算机毕业设计
  13. 代码对比工具 mac
  14. 上海地区房价影响因素预测
  15. 微软的面试题及答案-超变态但是很经典
  16. 一楼到十楼的每层电梯门口都放着一颗钻石,钻石大小不一。你乘坐电梯从一楼到十楼,每层楼电梯门都会打开一次,只能拿一次钻石,问怎样才能拿到最大的一颗?
  17. 求营业额占比 【问题描述】 从键盘输入学校附近某烧烤店某年每月的营业额,然后计算每月的营业额在年营业额中所占的百分比(四舍五入为整数,且不会超过全年的70%),并以样例输出所示的水平直方图形式
  18. Proteus 8.12 仿真软件安装
  19. memset()函数怎么用?
  20. 英语底子薄的人,怎样高效复习考博英语?

热门文章

  1. C语言——选择控制结构 寻找中位数v1.0编写一个函数返回三个整数中的中间数。函数原型:int mid(int a, int b, int c);功能是返回a,b,c三数中大小位于中间的一个数。
  2. 西安华为软件开发招聘
  3. 计算机科学与工程第四轮学科评估,超级重磅:全国第四轮学科评估结果正式出炉!...
  4. 为什么mydock会经常崩溃_MyDock4.9.4.1客户端下载-MyDock软件下载 - iefans下载
  5. PDF的文本工具在哪里?有哪些工具怎么用?
  6. 在PPT插入备注时,如何在放映时只让演讲者看到,其他人看不到
  7. 百度智能云,沈抖拿到第二个KPI
  8. echarts 设置 内边距
  9. 自学java工资_你自学java用了多久?薪资如何?
  10. 软件开发中 前台、中台、后台英文_企业架构 | 中台是什么?