Разница между acquNextImage и acquLatestImage

Я работаю над Camera2 API, чтобы делать снимки непрерывно, и он работает нормально. Здесь я могу сохранить захваченное изображение, используя следующий код:

ImageReader.OnImageAvailableListener readerListener = new ImageReader.OnImageAvailableListener() {
                @Override
                public void onImageAvailable(ImageReader reader) {
                    Image image = null;
                    try {

//                        image = reader.acquireLatestImage();
                        image = reader.acquireNextImage();
                        ByteBuffer buffer = image.getPlanes()[0].getBuffer();
                        byte[] bytes = new byte[buffer.capacity()];
                        buffer.get(bytes);
                        save(bytes);
                    } catch (FileNotFoundException e) {
                        logFile.writeCrashLog(TAG + ": " + e.toString());
                        hideProgressDialog();
                    } catch (IOException e) {
                        logFile.writeCrashLog(TAG + ": " + e.toString());
                        hideProgressDialog();
                    } catch (Exception e) {
                        logFile.writeCrashLog(TAG + ": " + e.toString());
                        hideProgressDialog();
                    } finally {
                        if (image != null) {
                            image.close();
                        }
                    }
                }

                private void save(byte[] bytes) throws IOException {
                    OutputStream output = null;
                    try {
                        output = new FileOutputStream(AndroidCameraApiActivity.this.file);
                        output.write(bytes);
                    } catch (Exception e) {
                        logFile.writeCrashLog(TAG + ": " + e.toString());
                        hideProgressDialog();
                    } finally {
                        if (null != output) {
                            output.close();
                        }
                    }
                }
            };

Здесь я хочу знать, в каком наилучшем случае можно получить изображение с помощью acquatelmage ИЛИ acquNextImage? который подходит для получения непрерывных изображений.

1 ответ

aquireNextImage - получит следующее изображение из ImageReaderQueue

aquireLatestImage - будет даже получать следующее изображение из ImageReader Очередь, удаляя старые изображения в Queue,

Для справки: Image Reader API

Другие вопросы по тегам