不多说,先上图,先看一张我开发板的截图 。。。
首先我先解释一下: 由于我的开发板硬件没有调节声音的按键,因而只能在图中所示
处调节,但是在静音之后,那个声音调节又不可点击,所以我们要在静音模式下使其可以点击,也就是可以调节声音。经过上个星期的源代码分析以及一系列的测试,最终我发现在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 静音模式震动模式选择 情景模式的选择
android静音模式震动模式选择情景模式的选择.zip,太多无法一一验证是否可用,程序如果跑不起来需要自调,部分代码功能进行参考学习。
android 9.0 Settings 在“声音”界面快速向左拖动设置媒体音量,媒体音量图标变为了静音,但数值为非0
里面有的内容可能你不需要,有的内容可以扩充。 这个是关于android手机情景模式设置的小例子。希望对大家有利
android webrtc vad(静音检测) demo webrtc的vad静音检测音频处理模块,含源码。VAD 录音过程中,实时检测当前是否有人在讲话(语音活动检测,或者叫静音检测)。讲话时webRtcVad_Process返回true,不讲话时返回...
本文为大家详细介绍下android系统如何在静音模式下关闭camera拍照声音,具体的实现方法如下,感兴趣的朋友可以参考下哈
Android 静音控制 音量控制 减小增大音量的实例源代码,如示图所示,音量控制时候,适时显示音量进度条: ToggleButton tbMute = (ToggleButton)findViewById(R.id.tbMute);//获得ToggleButton对象 tbMute....
静音模式的类库及相关文件,具体使用方法参考个人博客(http://blog.csdn.net/weasleyqi)。
Android保活之循环播放无声音乐,博客地址:https://www.jianshu.com/p/97b2b875df64
Android情景模式的设置的代码。记得要开启服务权限
来源于webrtc的vad音频处理模块,含源码。VAD - 录音过程中,实时检测当前是否有人在讲话(语音活动检测,或者叫静音检测)...直接用android studio打开,编译后“喂喂”两下,看log即可。by tanyaping,欢迎技术交流。
基于flash的音频播放器,可调节声音大小,静音,全屏显示,方便调用.rar
无声音频静音音频Android保活安卓保活(强烈建议不要这么做,不仅仅从用户角度考虑,它只会滋生更多的流氓应用,拖垮Android 平台的流畅性)mute_wave.wav
5、带有预览功能,可以对下一个多媒体视频文件进行截图预览,同时通过文字对文件名、播放时刻等信息进行提示! 6、播放列表可以是access型也可以是SQL型! 7、播放列表管理软件可以手动也可以自动生成播放列表,...
android黑名单设置 来电自动静音,可以使用,代码很清晰。
实现了调节系统亮度、音量、一键静音、打开gps,打开wifi
5、带有预览功能,可以对下一个多媒体视频文件进行截图预览,同时通过文字对文件名、播放时刻等信息进行提示! 6、播放列表可以是access型也可以是SQL型! 7、播放列表管理软件可以手动也可以自动生成播放列表,...
ThinkPad 外放驱动,Win10 安装后,外放一直没声音,静音灯常亮,耳机有声音,就安装下这个文件 或者,也可以打联想客服电话,不啦不啦描述半天,报序列号等等,,,,最后,他们会给你的邮箱发一个邮件,就是这个...
这是一个Android应用程序,我从书上敲下来的,修改了一些小错误,在AVD上运行试验过。