Как я могу программно отключить звук телефона Android при входящем звонке? (например, нажав кнопку питания при входящем звонке)?
Я знаю о setStreamMute
и adjustStreamVolume
, но я думаю, что есть лучший способ.
Как я могу программно отключить звук телефона Android при входящем звонке? (например, нажав кнопку питания при входящем звонке)?
Я знаю о setStreamMute
и adjustStreamVolume
, но я думаю, что есть лучший способ.
setStreamMute()
устарел в версии сборки 23 (marshmallow) и выше. Вы можете использовать adjustStreamVolume()
для зефира и выше.
public void adjustAudio(boolean setMute) {
AudioManager audioManager = (AudioManager) getSystemService(Context.AUDIO_SERVICE);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
int adJustMute;
if (setMute) {
adJustMute = AudioManager.ADJUST_MUTE;
} else {
adJustMute = AudioManager.ADJUST_UNMUTE;
}
audioManager.adjustStreamVolume(AudioManager.STREAM_NOTIFICATION, adJustMute, 0);
audioManager.adjustStreamVolume(AudioManager.STREAM_ALARM, adJustMute, 0);
audioManager.adjustStreamVolume(AudioManager.STREAM_MUSIC, adJustMute, 0);
audioManager.adjustStreamVolume(AudioManager.STREAM_RING, adJustMute, 0);
audioManager.adjustStreamVolume(AudioManager.STREAM_SYSTEM, adJustMute, 0);
} else {
audioManager.setStreamMute(AudioManager.STREAM_NOTIFICATION, setMute);
audioManager.setStreamMute(AudioManager.STREAM_ALARM, setMute);
audioManager.setStreamMute(AudioManager.STREAM_MUSIC, setMute);
audioManager.setStreamMute(AudioManager.STREAM_RING, setMute);
audioManager.setStreamMute(AudioManager.STREAM_SYSTEM, setMute);
}
}
Вы можете вызвать этот метод следующим образом:
adjustAudio(true) // To mute all the system, ringer, alarm, music, notification sounds on any event like button click.
adjustAudio(false) // To unmute all the system, ringer, alarm, music, notification sounds on any event like button click.
setRingerMode
возможно, это поможет вам. - person Stefan   schedule 23.01.2017