android 控制app声音,Android底层开发之APP音量单独控制
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音量单独控制相关推荐
- Android底层开发之Audio HAL Android Audio Overview
http://blog.csdn.net/kangear/article/details/44939429 Android底层开发之Audio HAL 在Android音频底层调试-基于tinyals ...
- Android底层开发之Audio HAL
分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow 也欢迎大家转载本篇文章.分享知识,造福人民,实现我们中华民族伟大复兴! Andr ...
- Hbuilder app开发之app启动图片
hbuilder app开发之app启动图片: http://jingyan.baidu.com/article/19020a0a163e73529d284200.html 注意:也可以打包的时候生 ...
- Android开发之APP直播简介
随着网络技术的迅猛发展,网络直播已不再遥不可及.各行各业以直播为基础的应用场景更是如雨后春笋,遍地开花,相关数据也显示,无论是国内还是国外,市场需求层出不穷,不仅包含视频门户.视频社交.在线教育.娱乐 ...
- Android开发之APP打开小程序后小程序无法返回APP,无法打开APP,launchApp无法返回app的原因
Android打开小程序可以看我上篇文章介绍:Android打开小程序 我这边已经成功打开小程序了参数也传递过去了,现在就是无论如何点击返回APP都没有反应,也没用走微信页面WXEntryActivi ...
- Android开发之APP唤醒小程序,打开小程序,调起小程序以及传参数的实现方法(附加源码)
老套路咱们先看效果图: 可以先看下官方文档介绍:微信官方文档APP打开小程序链接 我这边打开了,上面奔溃是因为模拟器不兼容的原因: 主要讲解下打开小程序核心代码: // 填应用AppIdString ...
- android 图片横竖判断_Android应用开发之android 判断ImageView当前显示的是哪一张图片...
本文将带你了解Android应用开发之android 判断ImageView当前显示的是哪一张图片,希望本文对大家学Android有所帮助. 判断ImageView当前显示的是哪一张图片 Java ...
- Android之基于xmpp openfire smack开发之Android客户端开发[3]
http://blog.csdn.net/shimiso/article/details/11225873 在上两篇文章中,我们依次介绍openfire部署以及smack常用API的使用,这一节中我们 ...
- android webview权限申请_Android应用开发之android 6.0下webview的定位权限设置方法
本文将带你了解Android应用开发android 6.0下webview的定位权限设置方法,希望本文对大家学Android有所帮助. 如下所示: WebView webView = (WebVi ...
最新文章
- eclipse引入svn插件,并将项目同步到svn
- JS高级 - 面向对象5(继承,引用)
- windows快捷键十八式(win10)
- 使用python进行数据清洗常用的库_python3常用的数据清洗方法(小结)
- 让 .NET 轻松构建中间件模式代码
- [蓝桥杯2018初赛]方格计数-巧妙枚举,找规,数论
- Spring Boot中使用Spring-data-jpa让数据访问更简单、更优雅
- 【转】Cache Buffer Chain 第二篇
- ServiceManager学习框图
- HTML中可伸缩容器怎么设置,CSS布局神器——伸缩盒(语法篇)
- 飞机飞行原理之空气流动基本规律
- Word文档压缩的方法
- recycleview添加item点击事件--作业三
- Dragonfly 应用-如何计算面孔隙率
- 每个开发人员都应该学习的5种编程语言(上)
- 【嵌入式面试题】C++经典面试题总结
- 一个离开CV界多年的油腻中年男子的CV复兴之路
- Java sql 计算时间差
- java 手电筒_Android实现简单手电筒功能
- 面向服务的WCF编程(三)