バックグラウンドでビデオ録画を行うサービスがありますが、その間はキーガードを無効にします。記録を停止したい場合は、サービスを停止して OnDestroy() を呼び出します。
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);
}
}