web-dev-qa-db-fra.com

Téléphone muet/muet Android

Mon objectif est de supporter 2 opérations:

  • mise en sourdine du téléphone (éventuellement avec vibrations activées/désactivées), pour éviter les bruits lorsque vous recevez un appel ou un SMS

  • rétablir le son du téléphone et rétablir le volume à l'état avant la mise en sourdine du téléphone

Comment puis-je faire ceci? Quelles sont les autorisations requises dans AndroidManifest?

21
Sebastian Nowak

Ceci est la permission de vibrer dans le fichier manifeste

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

ceci est pour mettre l'appareil en mode silencieux avec vibreur

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

ceci est pour mettre en mode sonnerie

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

}
18
Vineet Shukla

Si vous voulez désactiver le son et restaurer le réglage du son à son état précédent, cela a fonctionné pour moi.

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


  }

}

Cela devrait faire.

0
leeCoder