Android Mute/Enecute Phone
-
26-10-2019 - |
Вопрос
Моя цель - поддержать 2 операции:
Молочный телефон (возможно, с включенными/отключенными вибрациями), поэтому, когда получен вызов или SMS, он не будет шуметь
Закрепленый телефон и восстановить объем в штате, прежде чем приглушить телефон
Как я могу это сделать? Какие разрешения требуются в AndroidManifest?
Решение
Это разрешение на вибрацию в манифест
<uses-permission android:name="android.permission.VIBRATE" />
Это для того, чтобы поместить устройство в тихой режиме с вибрацией
AudioManager audioManager = (AudioManager)context.getSystemService(Context.AUDIO_SERVICE);
audioManager.setRingerMode(AudioManager.RINGER_MODE_VIBRATE);
Это для того, чтобы поместить в режим звонка
AudioManager audioManager = (AudioManager)context.getSystemService(Context.AUDIO_SERVICE);
int maxVolume = audioManager.getStreamMaxVolume(AudioManager.STREAM_RING);
audioManager.setRingerMode(AudioManager.RINGER_MODE_NORMAL);
audioManager.setStreamVolume(AudioManager.STREAM_RING, maxVolume, AudioManager.FLAG_SHOW_UI + AudioManager.FLAG_PLAY_SOUND);
Другие советы
public void changeRingerMode(Context context){
AudioManager audio = (AudioManager) context.getSystemService(Context.AUDIO_SERVICE);
/**
* To Enable silent mode.....
*/
audio.setRingerMode(AudioManager.RINGER_MODE_SILENT);
/**
* To Enable Ringer mode.....
*/
audio.setRingerMode(AudioManager.RINGER_MODE_NORMAL);
}
Если вы хотите отключить звук и восстановить настройку звука в предыдущее состояние, это сработало для меня.
static int ringstate = 0;
private void soundOn(boolean off){
AudioManager audio = (AudioManager) context.getSystemService(Context.AUDIO_SERVICE);
if(off)
{ //turn off ringing/sound
//get the current ringer mode
ringstate = audio.getRingerMode();
if(ringstate!=AudioManager.RINGER_MODE_SILENT)
audio.setRingerMode(AudioManager.RINGER_MODE_SILENT);//turn off
}
else
{
//restore previous state
audio.setRingerMode(ringstate);
}
}
Это должно сделать.
Не связан с StackOverflow