Android 在没有解锁声音的情况下关闭键盘护板

Android 在没有解锁声音的情况下关闭键盘护板,android,Android,我正在编写一个替换的锁屏,并使用LayoutParams.DISSMISS_KEYGUARD作为一个窗口标志,在打开屏幕和启动锁屏时关闭键盘,但是当再次按下电源按钮时,它总是会发出锁定声,我如何才能超过锁定声 您可以使用AudioManager在OnCreate中关闭声音,然后稍后再打开。您还需要检查声音是否已关闭才能启动,以便在声音已关闭时不会打开声音 此选项用于检查声音状态 am = (AudioManager) getSystemService(Context.AUDIO_SERVICE)

我正在编写一个替换的锁屏,并使用
LayoutParams.DISSMISS_KEYGUARD
作为一个窗口标志,在打开屏幕和启动锁屏时关闭键盘,但是当再次按下电源按钮时,它总是会发出锁定声,我如何才能超过锁定声

您可以使用
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\u disease\u KEYGUARD)之后,可能有一个地方可以尝试

谢谢,我会尝试一下,但我想这可能是比赛条件,因为在onCreate中键盘保护也被解除。是的,我刚刚意识到打开声音也会播放声音。这只在您希望锁屏静音的情况下起作用。然后在解锁屏幕时重新打开声音。