Tôi đang sử dụng camera2 api để chụp ảnh và hiển thị trong thumnail. Mọi thứ đang hoạt động tốt trên mọi thiết bị nhưng khi sử dụng thiết bị Micromax Q382
hiển thị image.I đen của nó đang nhận được dưới đây Issuelỗi: Không thể lấy khóa bị khóa, rất có khả năng khách hàng sẽ cố gắng khóa nhiều hơn các bộ đệm tối đa
Unable to acquire a lockedBuffer, very likely client tries to lock more than maxImages buffers
tôi đang sử dụng bên dưới mã cho chụp listerner callback
final CameraCaptureSession.CaptureCallback captureListener = new CameraCaptureSession.CaptureCallback()
{
@Override
public void onCaptureCompleted(CameraCaptureSession session, CaptureRequest request,
TotalCaptureResult result)
{
super.onCaptureCompleted(session, request, result);
startPreview();
}
};
mCameraDevice.createCaptureSession(outputSurfaces, new CameraCaptureSession.StateCallback()
{
@Override
public void onConfigured(CameraCaptureSession session)
{
try {
session.capture(captureBuilder.build(), captureListener, backgroudHandler);
} catch (CameraAccessException e) {
AppLogger.exception(myContext, getClass().getSimpleName(), e);
// e.printStackTrace();
}
}
@Override
public void onConfigureFailed(CameraCaptureSession session)
{
}
}, backgroudHandler);
} catch (CameraAccessException e) {
AppLogger.exception(myContext, getClass().getSimpleName(), e);
// e.printStackTrace();
}
và dưới mã sử dụng cho OnImageAvailableListener
ImageReader.OnImageAvailableListener readerListener = new ImageReader.OnImageAvailableListener()
{
@Override
public void onImageAvailable(ImageReader reader)
{
Image image = null;
try {
image = reader.acquireLatestImage();
// ByteBuffer buffer = image.getPlanes()[0].getBuffer();
// final byte[] bytes = new byte[buffer.capacity()];
ByteBuffer buffer = image.getPlanes()[0].getBuffer();
final byte[] bytes = new byte[buffer.remaining()];
buffer.get(bytes);
save(bytes);
buffer.clear();
runOnUiThread(new Runnable()
{
@Override
public void run()
{
mThumbnail.setVisibility(View.VISIBLE);
filePathLabel.setVisibility(View.VISIBLE);
filePathValue.setText(file.getAbsolutePath());
Bitmap bmp =
UtilityMethods.getScaledBitmap(CameraImageTestActivityLoliipop.this, bytes);
mThumbnail.setImageBitmap(bmp);
}
});
} catch (FileNotFoundException e) {
AppLogger.exception(myContext, getClass().getSimpleName(), e);
// e.printStackTrace();
} catch (IOException e) {
AppLogger.exception(myContext, getClass().getSimpleName(), e);
// e.printStackTrace();
} finally {
if (image != null) {
image.close();
}
}
}
Vui lòng cung cấp dữ liệu ghi nhận từ trước khi lỗi là tốt, và cả ngoại trừ vết đống, để xem lỗi ở đâu đã được tạo ra và trong hoàn cảnh nào. –
Nó không ném bất kỳ ngoại lệ, nhưng tôi tìm thấy một cái gì đó khi tôi đang chụp hình sau đó xem trước máy ảnh chuyển động cuối cùng cho một thứ hai được màu đen nó có nghĩa là hình ảnh mà tôi đang chụp là màu đen. Tôi nghĩ rằng đây sẽ là vấn đề. Nhưng tôi đã cố gắng để thay đổi tài sản nhưng did't nhận được bất kỳ giải pháp nào được nêu ra ... –
Bạn đã bao giờ giải quyết vấn đề này? –