【发布时间】:2020-07-27 16:12:53
【问题描述】:
我对我的问题进行了很多研究,但没有一个帮助我运行我的代码,我的相机 2 api 的预览正在工作并显示在表面视图上,但是当我想通过按钮 clique 保存图片时,ImageReader.OnImageAvailableListener 永远不会工作。
android.util.Size[] jpegSizes = null;
jpegSizes = cameraCharacteristics.get(CameraCharacteristics.SCALER_STREAM_CONFIGURATION_MAP).getOutputSizes(ImageFormat.JPEG);
int width = jpegSizes[0].getWidth();
int height = jpegSizes[0].getHeight();
ImageReader reader = ImageReader.newInstance(width, height, ImageFormat.JPEG, 1);
List<Surface> outputSurfaces = new ArrayList<Surface>(1);
outputSurfaces.add(reader.getSurface());
outputSurfaces.add(mCameraSurface_1);
final CaptureRequest.Builder captureBuilder =
mCameraDevice.createCaptureRequest(CameraDevice.TEMPLATE_STILL_CAPTURE);
captureBuilder.addTarget(reader.getSurface());
captureBuilder.set(CaptureRequest.CONTROL_MODE, CameraMetadata.CONTROL_MODE_AUTO);
captureBuilder.addTarget(reader.getSurface());
reader.setOnImageAvailableListener(readerListener, mHandler);
我使用此代码读取图像可用,消息日志“成功”从未显示
ImageReader.OnImageAvailableListener readerListener = new ImageReader.OnImageAvailableListener() {
@Override
public void onImageAvailable(ImageReader reader) {
Log.v(TAG,"success" );
Image image = null;
try {
image = reader.acquireLatestImage();
ByteBuffer buffer = image.getPlanes()[0].getBuffer();
byte[] bytes = new byte[buffer.capacity()];
buffer.get(bytes);
save(bytes);
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
if (image != null) {
image.close();
}
}
}}
【问题讨论】:
标签: java android image camera android-camera2