android静音模式下仍可以播放媒体声音以及调节其大小。。。。
来源:互联网 发布:mysql group by 错误 编辑:程序博客网 时间:2024/05/17 03:33
首先我先解释一下: 由于我的开发板硬件没有调节声音的按键,因而只能在图中所示
处调节,但是在静音之后,那个声音调节又不可点击,所以我们要在静音模式下使其可以点击,也就是可以调节声音。经过上个星期的源代码分析以及一系列的测试,最终我发现在settings.xml文件中的
<com.android.settings.RingerVolumePreference
android:key="ring_volume"
android:dependency="silent"
android:title="@string/all_volume_title"
android:summary="@string/ring_volume_summary"
android:dialogTitle="@string/all_volume_title"
android:persistent="false"
android:streamType="ring" />
代表声音可调节,而删除android:dependency="silent这一句则能在静音下点击声音调节。。。
因而就有了下面在静音模式下可调节声音。
那么我们来看看怎样在静音下仍然可以播放媒体声音:
首先我们在packages/app/Setting/src/的soundsettings.java中可以找到点击静音的事件, onPreferenceTreeClick方法if (preference == mSilent) {
if (mSilent.isChecked()) 中的 mAudioManager.setRingerMode(
vibeInSilent ? AudioManager.RINGER_MODE_VIBRATE
: AudioManager.RINGER_MODE_SILENT);
如果点击静音,那么mAudioManager.setRingerMode(AudioManager.RINGER_MODE_VIBRATE),跟进setRingerMode方法到AudioManager.java中的setRingerMode方法,再跟到AudioService.java中的setRingerMode方法,里面有 setRingerModeInt(ringerMode, true);再找到setRingerModeInt方法,
int numStreamTypes = AudioSystem.getNumStreamTypes();//获得系统声音类型的种类如电话声音,媒体声音,铃声等
for (int streamType = numStreamTypes - 1; streamType >= 0; streamType--) {
if (isStreamMutedByRingerMode(streamType)) {
if (!isStreamAffectedByRingerMode(streamType) ||
mRingerMode == AudioManager.RINGER_MODE_NORMAL)//正常情况,也就是不静音
{
mStreamStates[streamType].mute(null, false);//应该是让这种声音可以在静音下仍可以有声音
mRingerModeMutedStreams &= ~(1 << streamType);
}
} else {
if (isStreamAffectedByRingerMode(streamType) &&
mRingerMode != AudioManager.RINGER_MODE_NORMAL)//静音住
{
mStreamStates[streamType].mute(null, true);
mRingerModeMutedStreams |= (1 << streamType);
}
}
里面大概功能就是先获得系统里面的声音类型,如电话声音,media声音,铃声等等。。。
那么我们就是要在静音情况下使得media可以有声音。。。
那么我们可以下循环当中找到当静音时的媒体声音,然后设置它。。
在if (isStreamAffectedByRingerMode(streamType) &&
mRingerMode != AudioManager.RINGER_MODE_NORMAL) 下
也就是静音模式下:修改如下:
if(AudioSystem.STREAM_MUSIC==streamType)
{
mStreamStates[streamType].mute(null, false);//应该是让这种声音可以在静音下仍可以有声音
mRingerModeMutedStreams &= ~(1 << streamType);
}
else
{
mStreamStates[streamType].mute(null, true);
mRingerModeMutedStreams |= (1 << streamType);
}
这样好像就达到了我要实现的目的,然后编译Setting,再替换开发板的Settings.apk
编译framework的base,替换开发板system/framework/framework.jar就ok了
,还有重启机器。。。。
- android静音模式下仍可以播放媒体声音以及调节其大小。。。。
- IOS静音模式下播放出声音
- 如何在静音模式下播放声音(需要设置AVAudioSession)
- ios音量获取与手机静音模式下播放声音
- ios如何实现静音模式下声音仍然可以外放
- android调节声音大小
- Android开发音乐播放和调节大小声音代码
- iOS实现静音模式下声音外放
- android系统如何在静音模式下关闭camera拍照声音
- android系统如何在静音模式下关闭camera拍照声音(2)
- android系统如何在静音模式下关闭camera拍照声音
- android 音量调节以及媒体音量界面
- android 音量调节以及媒体音量界面
- android静音播放视频
- android 调节媒体音量
- android系统声音调节
- Android使用的webcview中带有音乐播放控件,在关闭或分享时处于界面不可见状态下,声音仍在播放的问题解决
- android 使静音模式下音乐也静音,切换到其他模式恢复
- set escape on
- jcifs.smb.SmbException: 0xC000007F
- UDP数据包一次发送多大为好?
- Google笔试
- 套利组合收益的节假日统计
- android静音模式下仍可以播放媒体声音以及调节其大小。。。。
- UltraISO的使用提取引导文件
- 添加表分区
- Apache Zookeeper
- 安卓手机各种信息获取---(通讯录短信息通话记录)
- CentOS 安装新硬盘
- 2011-07-26 10:06 Sql中split方法实现
- 创建为ClickOnce清单签名的.pfx格式数字证书
- myeclipse 中js文件乱码不能保存解决方案