Из действия, службы или где-либо еще у вас есть объект контекста:
AlarmManager am = (AlarmManager)context.getSystemService(Context.AUDIO_SERVICE);
am.setStreamMute(AudioManager.STREAM_ALARM, true);
Просто не забудьте отключить звук.Или, если ваш процесс не нужен после завершения вызова, и система его уничтожает - отключение звука прекращается.
Но, если вы поддерживаете свой процесс живым, важно, чтобы вы сохранили ссылку на AlarmManager.Я обнаружил ошибку: если вы звоните setStreamMute(..., true)
, а затем теряете ссылку, независимо от того, сколько раз вы звоните setStreamMute(..., false)
, она никогда не включается.
Поэтому просто держите статическую ссылку на AudioManager.*