我正在开发一个可以自动关闭Android手机声音的应用程序。如何检测声音的音量并以编程方式将其关闭?
if (hour == myTime.getHour() && minute == myTime.getMinute()) {
if (Settings.getSetMyTime(this))
showNotificationAlarm(R.drawable.icon,
"It's time to work");
///so, i want to add the silet function here..help me, please?
}
提前致谢。
答案 0 :(得分:5)
查看AudioManager,尤其是getStreamVolume和setStreamVolume方法
修改强>
您还可以使用Nikola Despotoski随setRingerMode
Service
是Context
的孩子,因此您可以直接致电getSystemService
请参阅下面的更新代码(未经测试):
if (hour == myTime.getHour() && minute == myTime.getMinute()) {
if (Settings.getSetMyTime(this))
showNotificationAlarm(R.drawable.icon,"It's time to work");
AudioManager am = (AudioManager)getSystemService(Context.AUDIO_SERVICE);
am.setRingerMode(AudioManager.RINGER_MODE_SILENT);
}
答案 1 :(得分:4)
注册AUDIO_SERVICE
,然后使用AudioManager
来控制音量增大/减小或设置个人资料。
或者,如果您想收听音频焦点中的更改,请进行活动implements AudioManager.OnAudioFocusChangeListener
。覆盖未实现的方法。创建将负责更改类型的开关。
像:
@Override
public void onAudioFocusChange(int focusChange) {
switch(focusChange)
{
case AudioManager.AUDIOFOCUS_GAIN:
//do something
break;
case AudioManager.AUDIOFOCUS_LOSS:
break;
}
或者,如果您想收听音频输出的更改,例如拔掉耳机(切换到手机扬声器),请使用ACTION_AUDIO_BECOMING_NOISY
粘性广播
http://developer.android.com/reference/android/media/AudioManager.html#ACTION_AUDIO_BECOMING_NOISY
http://developer.android.com/reference/android/media/AudioManager.html#RINGER_MODE_SILENT
见这里
修改:这是解决方案。无需处理AudioFocus,只需设置不同的振铃配置文件或调整音量
if (hour == myTime.getHour() && minute == myTime.getMinute()) {
if (Settings.getSetMyTime(this))
showNotificationAlarm(R.drawable.icon,
"It's time to work");
AudioManager audiomanager =(AudioManager)YourActivityName.this.getSystemService(Context.AUDIO_SERVICE);
audiomanager.setRingerMode(AudioManager.RINGER_MODE_SILENT); //or adjust volume here instead setting silent profile for the ringer
}