Я пытаюсь получить рамку камеры в режиме предварительного просмотра. Я запускаю образец проекта из github https://github.com/googlesamples/android-Camera2Basic
Проблема, с которой я столкнулась, заключается в получении кадра в режиме предварительного просмотра.
Вот код:
private CameraCaptureSession.CaptureCallback mCaptureCallback = new CameraCaptureSession.CaptureCallback() {
private void process(CaptureResult result) {
switch (mState) {
case STATE_PREVIEW: {
//HERE, HOW CAN I RETRIEVE THE CURRENT FRAME?
break;
}
case STATE_WAITING_LOCK: {
...
break;
}
case STATE_WAITING_PRECAPTURE: {
...
break;
}
case STATE_WAITING_NON_PRECAPTURE: {
...
break;
}
}
}
Еще одна вещь, которую я пытался получить в кадре, - установить mImageReader.setOnImageAvailableListener. Я ожидал, что сможет получить обратный вызов frameImageAvailable, но onImageAvailable никогда не вызывается. onPreviewFrame - мой собственный метод, мне нужно передать ему текущий кадр.
mImageReader = ImageReader.newInstance(largest.getWidth(), largest.getHeight(), ImageFormat.JPEG, /*maxImages*/2);
mImageReader.setOnImageAvailableListener(mOnImageAvailableListener, mBackgroundHandler);
private final ImageReader.OnImageAvailableListener mOnImageAvailableListener = new ImageReader.OnImageAvailableListener() {
@Override
public void onImageAvailable(ImageReader reader) {
mTextureView.onPreviewFrame(reader.acquireNextImage().getPlanes([0].getBuffer().array());
}
};
Что я делаю неправильно? Спасибо.