0
我正在編寫一個替代LockScreen,並且使用LayoutParams.DISSMISS_KEYGUARD
作爲Window標誌在開機和啓動我的LockScreen時關閉了鍵盤鎖,但是當再次按下電源按鈕時它總是播放鎖定聲音,我該如何抑制鎖定聲音?解鎖沒有解鎖聲音的鍵盤
我正在編寫一個替代LockScreen,並且使用LayoutParams.DISSMISS_KEYGUARD
作爲Window標誌在開機和啓動我的LockScreen時關閉了鍵盤鎖,但是當再次按下電源按鈕時它總是播放鎖定聲音,我該如何抑制鎖定聲音?解鎖沒有解鎖聲音的鍵盤
您可以使用AudioManager
來關閉OnCreate
中的聲音,然後再打開它。你也想檢查,如果聲音關閉,開始讓你不把聲音就當它是關閉已經
此檢查聲音狀態
am = (AudioManager) getSystemService(Context.AUDIO_SERVICE);
switch (am.getRingerMode()) {
case AudioManager.RINGER_MODE_SILENT:
case AudioManager.RINGER_MODE_VIBRATE:
silentMode = true;
break;
case AudioManager.RINGER_MODE_NORMAL:
silentMode = false;
break;
}
這把聲音關
am = (AudioManager) getSystemService(Context.AUDIO_SERVICE);
am.setRingerMode(AudioManager.RINGER_MODE_VIBRATE);
OR
am.setRingerMode(AudioManager.RINGER_MODE_SILENT);
這把聲音開
am = (AudioManager) getSystemService(Context.AUDIO_SERVICE);
am.setRingerMode(AudioManager.RINGER_MODE_NORMAL);
當然,你可能會做出am
一個私有變量,因此您不需要多次聲明它。喜歡這個。
public class MainActivity extends Activity {
//more variables
private AudioManager am;
private boolean silentMode;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
am = (AudioManager) getSystemService(Context.AUDIO_SERVICE);
//check sound state and set silentMode;
//more stuff
}
}
我真的不知道什麼時候才能恢復聲音上,但一個地方的電話後,也許嘗試getWindow().addFlags(WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD);
謝謝,我會嘗試一下,但我想這可能是競爭條件,因爲KeyGuard在onCreate中也被解僱了。 – joecks
是的,我剛剛意識到,重新打開聲音也會發出聲音。這隻有在你希望你的鎖屏靜音時纔有效。然後在解鎖屏幕時再打開聲音。 –