拍摄 camera2 预览屏幕
snapshotting a camera2 preview screen
我想使用 camera2 API 拍摄预览屏幕快照。我想我可以在我的代码中的两个位置执行此操作,在 surfacetexturelistner 更新纹理视图(这是预览呈现的位置)或在 CameraCaptureSession.CaptureCallback 更新预览会话的位置。所以我想要位图中的快照,这样我就可以将它提供给 FaceDetector(http://developer.android.com/reference/android/media/FaceDetector.html) class 当然我会使用不同的线程来不影响性能。快照不会被用户注意到。所以这里有两个地方可以做,想知道有没有人做过或者有什么建议:
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 但只有在你拍照后才能访问它,所以它对我没有用,因为我想这样做在预览时。
这真的很简单,我所要做的就是:gameSurface.getBitmap()
其中 gameSurface 是 TextureView。
我想使用 camera2 API 拍摄预览屏幕快照。我想我可以在我的代码中的两个位置执行此操作,在 surfacetexturelistner 更新纹理视图(这是预览呈现的位置)或在 CameraCaptureSession.CaptureCallback 更新预览会话的位置。所以我想要位图中的快照,这样我就可以将它提供给 FaceDetector(http://developer.android.com/reference/android/media/FaceDetector.html) class 当然我会使用不同的线程来不影响性能。快照不会被用户注意到。所以这里有两个地方可以做,想知道有没有人做过或者有什么建议:
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 但只有在你拍照后才能访问它,所以它对我没有用,因为我想这样做在预览时。
这真的很简单,我所要做的就是:gameSurface.getBitmap() 其中 gameSurface 是 TextureView。