我有这段代码(仅用于实验):
public void captureFromCam(View v) throws CameraAccessException {
try {
cm.openCamera("0", new CameraDevice.StateCallback(){
@Override
public void onClosed(CameraDevice camera) {
super.onClosed(camera);
}
@Override
public void onError(CameraDevice camera, int error) {
}
@Override
public void onOpened(final CameraDevice cam) {
Log.d("CameraApp", "Camera Opened");
ImageReader ir = ImageReader.newInstance(800, 600, 256, 1);
Surface surface = ir.getSurface();
final ArrayList<Surface> l = new ArrayList();
l.add(surface);
try {
cam.createCaptureSession(l, new CameraCaptureSession.StateCallback() {
@Override
public void onConfigured(CameraCaptureSession session) {
Log.e("CameraApp", "Configured");
CaptureRequest.Builder builder = null, b2;
try {
builder = cam.createCaptureRequest(CameraDevice.TEMPLATE_STILL_CAPTURE);
} catch (CameraAccessException e) {
e.printStackTrace();
}
builder.addTarget(l.get(0));
CaptureRequest request = builder.build();
try {
session.capture(request, new CameraCaptureSession.CaptureCallback() {
@Override
public void onCaptureCompleted(CameraCaptureSession session, CaptureRequest request, TotalCaptureResult result) {
Log.e("CameraApp", "Captured");
}
}, null);
} catch (CameraAccessException e) {
e.printStackTrace();
}
}
@Override
public void onConfigureFailed(CameraCaptureSession session) {
}
}, null);
} catch (CameraAccessException e) {
e.printStackTrace();
}
}
@Override
public void onDisconnected(CameraDevice camera) {
}
}, null);
} catch (CameraAccessException e) {
e.printStackTrace();
}
}
有趣的部分是onCaptureCompleted
,因为我理解结果不知何故是我的照片。
如何将此图片保存到文件?或者如果它不是我的照片,我的照片在哪里以及如何将其保存到文件中?
我知道这个问题已得到解答,但这是API 21,它与旧版本截然不同。