0

我正在编写替换 LockScreen,并LayoutParams.DISSMISS_KEYGUARD在打开屏幕并启动我的 LockScreen 时将 Keyguard 用作 Window 标志,但它总是在再次按下电源按钮时播放锁定声音,我怎样才能抑制锁定声音?

4

1 回答 1

1

您可以使用 anAudioManager来关闭声音,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);

于 2013-02-03T22:16:25.140 回答