我正在开发一个具有通话功能的应用程序,因此我需要唤醒设备。如果设备被锁定,我使用以下代码将其解锁:
keyguardManager.requestDismissKeyguard(this, new KeyguardManager.KeyguardDismissCallback() {
@Override
public void onDismissError() {
super.onDismissError();
AppLog.d(TAG, "Inside onDismissError()");
}
@Override
public void onDismissSucceeded() {
super.onDismissSucceeded();
AppLog.d(TAG, "Inside onDismissSucceeded()");
}
@Override
public void onDismissCancelled() {
super.onDismissCancelled();
AppLog.d(TAG, "Inside onDismissCancelled()");
}
});
在第一次通话时,设备正在解锁,没有任何问题,但在第二次通话时,从 requestDismissKeyguard 被调用到回调被调用有延迟,所以我的设备在锁屏打开的情况下保持开启状态,导致奇怪的状态因为用户期待来电屏幕。
在这里查看我的日志:
2021-04-21 16:25:39.885: Invoking requestDismissKeyguard()
2021-04-21 16:25:39.994: Inside onDismissCancelled()
2021-04-21 16:25:51.835: Invoking requestDismissKeyguard()
2021-04-21 16:25:55.311: Inside onDismissCancelled()
注意第一次调用(在 100 毫秒内取消)和第二次调用(在 4 秒内取消!!!)之间的区别
有任何想法吗?建议?