私はonPreviewFrameからフレームを取得した顔検出アプリケーションを構築し、顔検出を行い、次にサーフェイスビューのキャンバスに円を描画します。問題は、Camera.StartPreview()が開始されたときにサーフェスビュースレッドを使用してフレームが自動的に表示されることです。これは、プレビューコールバックがキックインするためには明らかに必要です。処理、顔の検出と描画が別のスレッドで行われているので(ここでは想定しています)、表示されているフレームとそのフレームの結果の間に2秒の遅延がありますキャンバスで処理され描画されます。Camera.Previewなしで処理した後、Camera.PreviewCallbackからフレームを手動で表示する方法
私がしたいことは、フレームを表示しているカメラのプレビューを止め、処理後に自分自身を表示することです。私はこれに3つの利点があると信じています:
消えると遅れます。
キャンバス上ではなく、ビットマップに直接描画することができます。これは、行ったことを元に戻すことができないため役に立たないものです。
これは、同じイメージを使用する2つのスレッドを持たないことで、メモリの消費を抑えるのに役立ちます。
私は、プレビューコールバックからフレームを表示することは可能ですが、どのようにして自動的に表示されているフレームをどのように停止するかを知っていますか?
事前に感謝します。
ありがとう後にあなたのためにOKだかどうかを知りたい、これはプレビューが表示されて停止しません。私はビットマップを表示する方法を検討する必要があります。現在、surfaceViewは明らかにレイアウト上にあります。テストのためにビットマップをキャンバスに描画しますが、すべてのプレビューコールバックに対してこれを試すと遅延があります約3秒である。再びこれは助けに感謝しています。 –