2013-02-03 30 views
0

我正在編寫一個替代LockScreen,並且使用LayoutParams.DISSMISS_KEYGUARD作爲Window標誌在開機和啓動我的LockScreen時關閉了鍵盤鎖,但是當再次按下電源按鈕時它總是播放鎖定聲音,我該如何抑制鎖定聲音?解鎖沒有解鎖聲音的鍵盤

回答

1

您可以使用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);

+0

謝謝,我會嘗試一下,但我想這可能是競爭條件,因爲KeyGuard在onCreate中也被解僱了。 – joecks

+0

是的,我剛剛意識到,重新打開聲音也會發出聲音。這隻有在你希望你的鎖屏靜音時纔有效。然後在解鎖屏幕時再打開聲音。 –