Android静音/取消静音手机

时间:2011-09-06 09:49:18

标签: android android-permissions volume mute

我的目标是支持2项操作:

  • 静音手机(可能启用/禁用振动),因此当收到来电或短信时,它不会产生噪音

  • 取消静音手机并将音量恢复到静音手机之前的状态

我该怎么做? AndroidManifest需要什么权限?

3 个答案:

答案 0 :(得分:39)

这是振动到清单文件

的权限
<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);

答案 1 :(得分: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);

}

答案 2 :(得分: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);


  }

}

应该这样做。