我的目標是支持2個操作:的Android靜音/取消靜音電話
靜音電話(可能有震動的啓用/禁用),所以當收到一個電話或短信也不會製造噪音
取消靜音電話和靜音電話
我怎樣才能做到這一點之前恢復卷的狀態? AndroidManifest需要什麼權限?
我的目標是支持2個操作:的Android靜音/取消靜音電話
靜音電話(可能有震動的啓用/禁用),所以當收到一個電話或短信也不會製造噪音
取消靜音電話和靜音電話
我怎樣才能做到這一點之前恢復卷的狀態? AndroidManifest需要什麼權限?
這是權限振動到清單文件
<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);
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);
}
謝謝,我希望我可以接受這兩個答案 –
如果你想要的是禁用聲音並將聲音設置恢復到以前的狀態,這對我有效。
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);
}
}
這應該做。
謝謝,工作正常 –
嘿Pratik,當收到電話時被調用哪種方法。我應該在哪裏放置你的代碼?謝謝! –
@Rich您需要在設置屏幕中將設備默認的聲音選項放入應用程序中,並且您可以按照這種方式或通過簡單的方式創建相同的設置,只需通過管理它即可提供選項或選項。 – Pratik