2011-09-06 102 views
20

我的目標是支持2個操作:的Android靜音/取消靜音電話

  • 靜音電話(可能有震動的啓用/禁用),所以當收到一個電話或短信也不會製造噪音

  • 取消靜音電話和靜音電話

我怎樣才能做到這一點之前恢復卷的狀態? AndroidManifest需要什麼權限?

回答

36

這是權限振動到清單文件

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

謝謝,工作正常 –

+0

嘿Pratik,當收到電話時被調用哪種方法。我應該在哪裏放置你的代碼?謝謝! –

+0

@Rich您需要在設置屏幕中將設備默認的聲音選項放入應用程序中,並且您可以按照這種方式或通過簡單的方式創建相同的設置,只需通過管理它即可提供選項或選項。 – Pratik

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

} 
+1

謝謝,我希望我可以接受這兩個答案 –

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


    } 

} 

這應該做。