2014-12-03 74 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

相關問題