2011-09-06 12 views
20

Mi objetivo es apoyar las operaciones de: 2muda Android teléfono/activar

  • teléfono mudo (posiblemente con vibraciones activado/desactivado), por lo que cuando se recibe una llamada o SMS no va a hacer ruido

  • teléfono unmute y restaurar el volumen al estado antes del silenciamiento de teléfono

¿Cómo puedo hacer esto? ¿Qué permisos se requieren en AndroidManifest?

Respuesta

36

Este es el permiso para que vibre en el archivo de manifiesto

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

esto es para poner el dispositivo en modo silencioso con vibración

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

esto es para poner en el modo de timbre

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

Gracias, funciona bien –

+0

Hey Pratik, método que se llama cuando se recibe una llamada telefónica. ¿Dónde debería poner tu código? ¡Gracias! –

+0

@Rich Debe ingresar su aplicación donde desee, al igual que la opción de sonido predeterminada del dispositivo en la pantalla de configuración, y puede crearla de esta manera o de manera sencilla, simplemente proporcione la opción con opción de casilla de verificación o casilla de verificación mediante administración – 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

Gracias, me gustaría poder aceptar ambas respuestas –

0

Si lo que desea es desactivar el sonido y restaurar la configuración del sonido al estado anterior, esto funcionó para mí.

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


    } 

} 

Esto debería hacer.