2014-12-03 63 views
0

我有一项服务可以做后台视频录制,在此期间我禁用了键盘锁。当我想停止录制时,我停止服务并调用OnDestroy()。为什么Keyguard未被重新启用?

我可以在我的踪迹中看到ReenableKeyguard()被调用。但是,在我“强制停止”启动服务的主机应用程序之前,键盘仍然处于禁用状态。

当调用ReenableKeyguard()时,可能导致键盘保持禁用状态?

这是破坏服务并重新启用快捷键的代码。 (它的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); 
     } 
    } 

回答

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

相关问题