2011-09-06 15 views
20

Il mio obiettivo è quello di sostenere 2 operazioni:mute telefono Android/unmute

  • telefono muto (possibilmente con le vibrazioni abilitata/disabilitata), in modo che quando si riceve una chiamata o sms non farà rumore

  • telefono attiva audio e ripristinare il volume allo stato prima del silenziamento telefono

Come posso fare questo? Quali autorizzazioni sono richieste in AndroidManifest?

risposta

36

Questa è l'autorizzazione per vibrare nel file manifesto

<uses-permission android:name="android.permission.VIBRATE" /> 

questo è per mettere il dispositivo in modalità silenziosa con vibrazione

AudioManager audioManager = (AudioManager)context.getSystemService(Context.AUDIO_SERVICE); 
audioManager.setRingerMode(AudioManager.RINGER_MODE_VIBRATE); 

questo è per mettere in suoneria

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

Grazie, funziona bene –

+0

Hey Pratik, quale metodo viene chiamato quando viene ricevuta una telefonata. Dove dovrei inserire il tuo codice? Grazie! –

+0

@Rich Devi inserire l'applicazione in qualsiasi posto desideri come l'opzione Audio predefinita del dispositivo nella schermata Impostazioni e puoi creare lo stesso come in questo modo o in modo semplice, basta fornire un'opzione con un'opzione di visualizzazione o di selezione tramite gestirla – 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

Grazie, vorrei poter accettare entrambe le risposte –

0

Se quello che vuoi è disabilitare il suono e ripristinare l'impostazione del suono allo stato precedente, questo ha funzionato per me.

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


    } 

} 

Questo dovrebbe fare.