我有一个用于进行背景视频录制的服务,在此期间我禁用了键盘锁。当我想停止录制时,我停止服务并调用OnDestroy()。
我可以在跟踪中看到ReenableKeyguard()
被调用。然而,在我强行停止"强制停止之前,钥匙卫士仍然是残疾人士。启动服务的主机应用程序。
在调用ReenableKeyguard()
时,可能导致Keyguard停用的原因是什么?
这是破坏服务并重新启用键盘锁的代码。 (它是C#/ Xamarin,但与Java基本相同)
public override void OnDestroy()
{
Tracer.Trace("BackgroundVideoRecorder::OnDestroy();");
base.OnDestroy();
try
{
camera.Reconnect();
mediaRecorder.Stop();
mediaRecorder.Reset();
camera.StopPreview();
mediaRecorder.Release();
camera.Release();
camera = null;
if (Common.KeyGuardLocker != null)
{
Tracer.Trace("BackgroundVideoRecorder::OnDestroy() - ReenableKeyguard()");
Common.KeyGuardLocker.ReenableKeyguard();
}
windowManager.RemoveView(surfaceView);
}
catch (Exception ex)
{
Tracer.Trace(ex);
}
}
答案 0 :(得分:1)
I have the exact same problem and the reason was that i had only permissions to Disable keyguard and not the ones to re-enable it.
android.permission.DISABLE_KEYGUARD android.permission.ENABLE_KEYGUARD