覆盖静音模式和/或媒体音量

时间:2010-11-01 17:00:07

标签: android volume

我想覆盖静音模式和/或媒体音量,使手机广播声响。我知道闹钟可以覆盖静音模式。你是如何通过你的应用程序做到这一点的?

3 个答案:

答案 0 :(得分:4)

您是在询问闹钟应用是否可以覆盖静音模式,或者代码是否可以覆盖静音模式?

代码答案是肯定的,您可以通过以下代码更改静音模式设置:

AudioManager audio = (AudioManager) mContext.getSystemService(Context.AUDIO_SERVICE);
int currentVolume = audio.getStreamVolume(AudioManager.STREAM_RING);
int max = audio.getStreamMaxVolume(AudioManager.STREAM_NOTIFICATION);
audio.setRingerMode(AudioManager.RINGER_MODE_NORMAL);
audio.setStreamVolume(AudioManager.STREAM_RING, max, AudioManager.FLAG_REMOVE_SOUND_AND_VIBRATE);

答案 1 :(得分:4)

我有另一种方式,因为Tony的答案已经奏效,但是发生了什么会改变配置文件,假设您将设备置于静音模式,应用程序需要播放任何声音,如闹铃音,那么它会将您的配置文件静音更改为铃声模式然后再次需要进入静音模式。我是对的吗?

所以另一种解决方案是你可以在这里播放下面的铃声片段

int volume = audioManager.getStreamVolume(AudioManager.STREAM_ALARM);
if(volume==0)
volume = audioManager.getStreamMaxVolume(AudioManager.STREAM_ALARM);
audioManager.setStreamVolume(AudioManager.STREAM_ALARM, volume,AudioManager.FLAG_REMOVE_SOUND_AND_VIBRATE);
ringtone = RingtoneManager.getRingtone(getApplicationContext(), Uri.parse(ringTonePath));
if(ringtone!=null){
    ringtone.setStreamType(AudioManager.STREAM_ALARM);
    ringtone.play();
    isRinging = true;
}
如果你想以编程方式停止播放,

isRinging设置为标记,或者你可以通过isPlaying()来检查铃声是否停止播放

通过这个我没有改变当前的配置文件,没有更多的代码

答案 2 :(得分:0)

Prey是一个开源手机跟踪器应用程序,如果它的功能可以做到这一点 - 如果你没有得到更好的答案,可以查看源代码,看看他们是如何做到的。