Пока вызывается Camera.PreviewCallback#onPreviewFrame
, переданный буфер byte[]
не заполняется камерой: он всегда полон нулей.
Причина, по которой я использую устаревший API, заключается в том, что яполучал очень низкую частоту кадров, используя более новую.Поскольку мои камеры считаются LEGACY
, я рекомендовал попробовать устаревший API.
Мой код, где вызывается обратный вызов, но буфер пуст:
camera = Camera.open();
camera.setParameters(configurator.getParameters());
Size size = configurator.getOutputSize();
camera.addCallbackBuffer(new byte[size.getWidth() * size.getHeight() * ImageFormat.getBitsPerPixel(ImageFormat.YV12) / 8]);
camera.setPreviewCallbackWithBuffer(this);
camera.startPreview();
Одинстранная вещь, которую я вижу в журнале, заключается в следующем: когда я вызываю camera.setPreviewCallbackWithBuffer(this);
, появляется это сообщение отладки: D/Camera-JNI: (tid:3466)[release camera] - X context=0x0
.
Кроме того, все модификации буфера очищаются: буфер фактически заполняется нулями перед каждымпозвонить на обратный звонок.