2011-09-06 14 views
20

Моя цель состоит в том, чтобы поддерживать 2 операции:Android отключения/включения микрофона телефона

  • немой телефон (возможно с вибрациями включено/выключено), поэтому при вызове или смс получено не будет шуметь

  • Unmute телефон и восстановить громкость в состояние до отключения звука телефона

Как я могу это сделать? Какие разрешения необходимы в AndroidManifest?

ответ

36

Это разрешение на вибрируют в файле манифеста

<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); 
+0

Спасибо, отлично работает –

+0

Hey Pratik, который вызывается при поступлении телефонного звонка. Где я должен помещать ваш код? Благодаря! –

+0

@Rich Вам нужно добавить приложение, где бы вы хотели, как устройство по умолчанию. Звуковая опция на экране настроек, и вы можете создавать такие же, как этот, или простым способом просто предоставить опцию с помощью переключателя или флажка, чтобы управлять им – Pratik

17
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); 

} 
+1

Спасибо, я хотел бы ответить на оба ответа –

0

Если вы хотите отключить звук и восстановить настройку звука в предыдущем состоянии, это сработало для меня.

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); 


    } 

} 

Это должно быть сделано.

 Смежные вопросы

  • Нет связанных вопросов^_^