安卓手机静音/取消静音

22

我的目标是支持两个操作:

  • 将手机静音(可以启用/禁用振动),因此当接收到电话或短信时,不会发出声音

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

我该如何实现这个功能?在AndroidManifest中需要哪些权限?

3个回答

41

这是在清单文件中添加震动权限的代码

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

嘿,Pratik,当接收到电话时会调用哪个方法?我应该把你的代码放在哪里?谢谢! - Ruchir Baronia
@Rich,你需要在应用程序中放置你想要的内容,就像设备默认的设置屏幕中的声音选项一样。你可以通过这种方式创建相同的内容,或者通过简单的方式提供开关视图或复选框选项来管理它。 - Pratik
如何静音/取消静音当前通话,可以使用以下链接:https://developer.android.com/reference/android/telecom/InCallService 或 https://developer.android.com/reference/android/telecom/Call.html。 - android developer

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

}

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


  }

}

这样应该可以。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接