Android底层开发之APP音量单独控制

目前Android的音乐播放软件都的音量控制都是随着系统的总Master音量变化的。想要实现和windows中一样,每个APP的媒体音量可以单独控制。

控制本APP音量

其实在MediaPlayer中就有一个API是设备当前音频流的音量的,叫setVolume()。通过编程测试,这个是独立于Master音量的。

这个问题搞定后,如果想要控制其它APP的音量,那么只要能拿到其MediaPlayer对象就好了。

控制其它APP音量

构思的是在MediaPlayer的构造函数中,将所有MediaPlayer对象保存到一个List中。

private static List list = new ArrayList();

...

public MediaPlayer() {

...

/* Native setup requires a weak reference to our object. * It's easier to create it here than in C++. */

native_setup(new WeakReference(this));

list.add(this);

Log.i("DEBUG_MEDIAPLAYER", "MediaPlayer() list.size=" + list.size() + list);

}

public static List getList() {

return list;

}

发现在同一个应用中,如果new MediaPlayer还能够进行记录,但是在其它APP中new MediaPlayer会list会是一个新的对象,想要获取也是获取不到的。

03-06 04:54:23.945: I/DEBUG_MEDIAPLAYER(1016): MediaPlayer() list.size=1[com.android.music.MediaPlaybackService$CompatMediaPlayer@4163f850]

03-06 04:56:26.535: I/DEBUG_MEDIAPLAYER(2013): MediaPlayer() list.size=1[android.media.MediaPlayer@41644388]

03-06 04:56:26.595: I/DEBUG_MEDIAPLAYER(2013): MediaPlayer() list.size=2[android.media.MediaPlayer@41644388, android.media.MediaPlayer@41645128]

03-06 04:56:33.155: I/DEBUG_MEDIAPLAYER(2050): MediaPlayer() list.size=1[android.media.MediaPlayer@4163d098]

那么就失败了,了解到原因是每个应用对于一个Dalvik Virtual Machine实例。就好比在Ubuntu打开了两个Eclipse,他们也是独立的。

(尽管是失败了,也把这个分析的过程分析记录一下)

其它:

百度音乐甚至都没有使用MediaPlayer,因为我在其构造器添加打印Log,使用百度音乐进行音乐播放时并没有看到有log打印。这一点十分奇怪。

android 控制app声音,Android底层开发之APP音量单独控制相关推荐

  1. Android底层开发之Audio HAL Android Audio Overview

    http://blog.csdn.net/kangear/article/details/44939429 Android底层开发之Audio HAL 在Android音频底层调试-基于tinyals ...

  2. Android底层开发之Audio HAL

    分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow 也欢迎大家转载本篇文章.分享知识,造福人民,实现我们中华民族伟大复兴! Andr ...

  3. Hbuilder app开发之app启动图片

    hbuilder app开发之app启动图片: http://jingyan.baidu.com/article/19020a0a163e73529d284200.html  注意:也可以打包的时候生 ...

  4. Android开发之APP直播简介

    随着网络技术的迅猛发展,网络直播已不再遥不可及.各行各业以直播为基础的应用场景更是如雨后春笋,遍地开花,相关数据也显示,无论是国内还是国外,市场需求层出不穷,不仅包含视频门户.视频社交.在线教育.娱乐 ...

  5. Android开发之APP打开小程序后小程序无法返回APP,无法打开APP,launchApp无法返回app的原因

    Android打开小程序可以看我上篇文章介绍:Android打开小程序 我这边已经成功打开小程序了参数也传递过去了,现在就是无论如何点击返回APP都没有反应,也没用走微信页面WXEntryActivi ...

  6. Android开发之APP唤醒小程序,打开小程序,调起小程序以及传参数的实现方法(附加源码)

    老套路咱们先看效果图: 可以先看下官方文档介绍:微信官方文档APP打开小程序链接 我这边打开了,上面奔溃是因为模拟器不兼容的原因: 主要讲解下打开小程序核心代码: // 填应用AppIdString ...

  7. android 图片横竖判断_Android应用开发之android 判断ImageView当前显示的是哪一张图片...

    本文将带你了解Android应用开发之android   判断ImageView当前显示的是哪一张图片,希望本文对大家学Android有所帮助. 判断ImageView当前显示的是哪一张图片 Java ...

  8. Android之基于xmpp openfire smack开发之Android客户端开发[3]

    http://blog.csdn.net/shimiso/article/details/11225873 在上两篇文章中,我们依次介绍openfire部署以及smack常用API的使用,这一节中我们 ...

  9. android webview权限申请_Android应用开发之android 6.0下webview的定位权限设置方法

    本文将带你了解Android应用开发android 6.0下webview的定位权限设置方法,希望本文对大家学Android有所帮助. 如下所示: WebView webView =   (WebVi ...

最新文章

  1. eclipse引入svn插件,并将项目同步到svn
  2. JS高级 - 面向对象5(继承,引用)
  3. windows快捷键十八式(win10)
  4. 使用python进行数据清洗常用的库_python3常用的数据清洗方法(小结)
  5. 让 .NET 轻松构建中间件模式代码
  6. [蓝桥杯2018初赛]方格计数-巧妙枚举,找规,数论
  7. Spring Boot中使用Spring-data-jpa让数据访问更简单、更优雅
  8. 【转】Cache Buffer Chain 第二篇
  9. ServiceManager学习框图
  10. HTML中可伸缩容器怎么设置,CSS布局神器——伸缩盒(语法篇)
  11. 飞机飞行原理之空气流动基本规律
  12. Word文档压缩的方法
  13. recycleview添加item点击事件--作业三
  14. Dragonfly 应用-如何计算面孔隙率
  15. 每个开发人员都应该学习的5种编程语言(上)
  16. 【嵌入式面试题】C++经典面试题总结
  17. 一个离开CV界多年的油腻中年男子的CV复兴之路
  18. Java sql 计算时间差
  19. java 手电筒_Android实现简单手电筒功能
  20. 面向服务的WCF编程(三)

热门文章

  1. 王洪添:用互联网+大数据打造智慧政府
  2. caffe网络模型各层详解(中文版)
  3. 秒杀并发java_java 高并发秒杀
  4. vivo领跑中国智能手机市场
  5. 自动售餐机深受顾客欢迎全过程只需2分钟
  6. [中科磐云]网络安全实战模拟
  7. 记一次Pr字幕模糊问题及解决方法
  8. 飞鸟小说 springboot mongodb开源小说建站系统推荐
  9. 基于精益生产的车间设施规划改善设计(zt)
  10. Flash常用代码的介绍