camera2 API を使用してプレビュー画面のスナップショットを撮りたいです。私のコードでは、テクスチャビューを更新する surfacetexturelistner (プレビューがレンダリングされる場所) または CameraCaptureSession.CaptureCallback で、プレビューのセッションを更新する 2 つの場所があると思います。したがって、ビットマップのスナップショットが必要なので、それを FaceDetector( http://developer.android.com/reference/android/media/FaceDetector.html ) クラスにフィードできるようにします。もちろん、パフォーマンスを妨げないように別のスレッドを使用します。スナップショットはユーザーに気付かれません。したがって、これを行うための2つの領域があり、誰かがこれを行ったか、または提案があるかどうかを知りたいです:
private TextureView.SurfaceTextureListener SurListener =
new TextureView.SurfaceTextureListener() {
@Override
public void onSurfaceTextureUpdated(SurfaceTexture surface) {
drawView();
//I can maybe snapshot here?
}
@Override
public void onSurfaceTextureSizeChanged(SurfaceTexture surface, int width,
int height) {
}
@Override
public boolean onSurfaceTextureDestroyed(SurfaceTexture surface) {
return false;
}
@Override
public void onSurfaceTextureAvailable(SurfaceTexture surface, int width,
int height) {
setupCamera();
StartUpCam();
}
};
または私はここでそれを行うことができます:
private CameraCaptureSession.CaptureCallback CScallback
= new CameraCaptureSession.CaptureCallback() {
@Override
public void onCaptureStarted(CameraCaptureSession session,
CaptureRequest request, long timestamp, long frameNumber) {
super.onCaptureStarted(session, request, timestamp, frameNumber);
//take a snapshot here???
}
};
念のために言っておくと、camera2 API に付属している顔検出器は知っていますが、それは写真を撮った後にのみアクセスされるため、プレビュー時に実行したいので役に立ちません。