Я пытаюсь сделать снимок с помощью телефона, но у меня появляется следующее сообщение:
E/BufferQueueProducer: [] Can not get hwsched service
I/CameraDevice-JV-0: Camera now idle
W/ImageReader_JNI: Unable to acquire a buffer item, very likely client tried to acquire more than maxImages buffers
W/GrallocMapperPassthrough: buffer descriptor with invalid usage bits 0x2080000
Я использую следующий код:
final ImageReader reader = ImageReader.newInstance(widthPicture, heightPicture, ImageFormat.JPEG, 1);
List<Surface> outputSurfaces = new ArrayList<Surface>(2);
outputSurfaces.add(reader.getSurface());
outputSurfaces.add(new Surface(textureView.getSurfaceTexture()));
final CaptureRequest.Builder captureBuilder = cameraDevice.createCaptureRequest(CameraDevice.TEMPLATE_STILL_CAPTURE);
captureBuilder.addTarget(reader.getSurface());
captureBuilder.set(CaptureRequest.SENSOR_SENSITIVITY, 100);
file = new File( Environment.getExternalStorageDirectory() + File.separator + "test.jpg");
ImageReader.OnImageAvailableListener readerListener = new ImageReader.OnImageAvailableListener() {
@Override
public void onImageAvailable(ImageReader imageReader) {
Image image = null;
try {
image = reader.acquireLatestImage();
ByteBuffer buffer = image.getPlanes()[0].getBuffer();
byte[] bytes = new byte[buffer.capacity()];
buffer.get(bytes);
save(bytes);
//image.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
Log.d(TAG, "ERREUR 1");
} catch (IOException e) {
e.printStackTrace();
Log.d(TAG, "ERREUR 2");
}
}
private void save(byte[] bytes) throws IOException {
OutputStream outputStream = null;
try {
outputStream = new FileOutputStream(file);
outputStream.write(bytes);
outputStream.close();
}catch(IOException e){
e.printStackTrace();
Log.d(TAG, "ERREUR 3");
}
}
};
Я не понимаю эту ошибку, и я не знаю, как решить эту проблему. Я хотел бы сделать снимок HDR, но я не могу с этими ошибками
Тот же код отлично работает в S8!