web-dev-qa-db-ja.com

Android電話のミュート/ミュート解除

私の目標は、2つの操作をサポートすることです。

  • 電話をミュートする(バイブレーションを有効/無効にしている可能性があります)ので、電話やSMSを受信して​​も音は出ません

  • 電話のミュートを解除し、電話をミュートする前の状態に音量を復元します

これどうやってするの? AndroidManifestにはどのような権限が必要ですか?

21
Sebastian Nowak

これはマニフェストファイルにバイブレーションするための許可です

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

サウンドを無効にしてサウンド設定を以前の状態に戻すことが必要な場合は、これでうまくいきました。

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


  }

}

これで十分です。

0
leeCoder