ImageReader.setOnImageAvailableListener不被调用
时间: 2023-11-27 22:03:45 浏览: 96
如果`ImageReader.setOnImageAvailableListener`方法没有被调用,可能是以下原因之一:
1. 没有正确配置ImageReader。确保您已正确设置ImageReader的大小和格式。例如,如果您的相机支持YUV_420_888格式,则您需要使用以下代码创建ImageReader:
```java
ImageReader.newInstance(width, height, ImageFormat.YUV_420_888, maxImages);
```
2. 没有正确设置CaptureRequest.Builder。您需要将ImageReader的surface设置为CaptureRequest.Builder的目标。例如:
```java
Surface surface = mImageReader.getSurface();
mPreviewRequestBuilder.addTarget(surface);
```
3. 没有正确开启预览。您需要在CameraCaptureSession上调用setRepeatingRequest方法开始预览。例如:
```java
mCaptureSession.setRepeatingRequest(mPreviewRequestBuilder.build(), mCaptureCallback, mHandler);
```
4. 没有正确处理ImageReader的OnImageAvailableListener回调方法。您需要确保您已正确实现了OnImageAvailableListener接口,并在回调方法中处理Image对象。例如:
```java
private final ImageReader.OnImageAvailableListener mOnImageAvailableListener = new ImageReader.OnImageAvailableListener() {
@Override
public void onImageAvailable(ImageReader reader) {
Image image = reader.acquireLatestImage();
// 处理Image对象
...
image.close();
}
};
```
如果您已经检查了以上所有情况,并且仍然无法收到OnImageAvailableListener回调,您可以尝试重新启动相机或重新启动应用程序。
阅读全文