0

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

1 に答える 1