Android mute/unmute phone
Asked Answered
U

3

22

My goal is to support 2 operations:

  • mute phone (possibly with vibrations enabled/disabled), so when a call or sms is received it won't make noise

  • unmute phone and restore the volume to the state before muting phone

How can I do this? What permissions are required in AndroidManifest?

Urology answered 6/9, 2011 at 9:49 Comment(0)
Y
41

This is the permission for vibrate into the manifest file

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

this is for to put the device in silent mode with vibrate

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

this is for to put into the ringing mode

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);
Yuzik answered 6/9, 2011 at 9:54 Comment(3)
Hey Pratik, which method gets called when a phone call is received. Where should I put your code? Thanks!Mornay
@Rich You need to put in you application wherever you want just like device default Sound option in Setting screen and you can create same like this way or by simple way just provide option with switchview or checkbox option through manage itYuzik
What about muting/unmuting the current call, meaning by using this : developer.android.com/reference/android/telecom/InCallService , or this: developer.android.com/reference/android/telecom/Call.html .Frolic
U
18
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);

}
Unmeriting answered 6/9, 2011 at 9:53 Comment(0)
L
0

If what you want is to disable sound and restore the sound setting to previous state, this worked for 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);


  }

}

This should do.

Lindsay answered 25/7, 2016 at 11:55 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.