media: Update ImageReader APIs

Bug: 10461757
Change-Id: Ia5a76a541c3df8b219bb47d7835cfcb198892df8
diff --git a/tests/tests/display/src/android/display/cts/VirtualDisplayTest.java b/tests/tests/display/src/android/display/cts/VirtualDisplayTest.java
index 54f076f..2242fa5 100644
--- a/tests/tests/display/src/android/display/cts/VirtualDisplayTest.java
+++ b/tests/tests/display/src/android/display/cts/VirtualDisplayTest.java
@@ -26,6 +26,7 @@
 import android.hardware.display.VirtualDisplay;
 import android.media.Image;
 import android.media.ImageReader;
+import android.media.ImageReader.MaxImagesAcquiredException;
 import android.os.Bundle;
 import android.os.Handler;
 import android.os.Looper;
@@ -83,8 +84,8 @@
 
         mImageReaderLock.lock();
         try {
-            mImageReader = new ImageReader(WIDTH, HEIGHT, PixelFormat.RGBA_8888, 2);
-            mImageReader.setImageAvailableListener(mImageListener, mHandler);
+            mImageReader = ImageReader.newInstance(WIDTH, HEIGHT, PixelFormat.RGBA_8888, 2);
+            mImageReader.setOnImageAvailableListener(mImageListener, mHandler);
             mSurface = mImageReader.getSurface();
         } finally {
             mImageReaderLock.unlock();
@@ -315,19 +316,10 @@
                 }
 
                 Log.d(TAG, "New image available from virtual display.");
-                Image image = reader.getNextImage();
+                // Get the latest buffer
+                Image image = reader.acquireLatestImage();
                 if (image != null) {
                     try {
-                        // Get the latest buffer.
-                        for (;;) {
-                            Image nextImage = reader.getNextImage();
-                            if (nextImage == null) {
-                                break;
-                            }
-                            reader.releaseImage(image);
-                            image = nextImage;
-                        }
-
                         // Scan for colors.
                         int color = scanImage(image);
                         synchronized (this) {
@@ -337,9 +329,12 @@
                             }
                         }
                     } finally {
-                        reader.releaseImage(image);
+                        image.close();
                     }
                 }
+            } catch (MaxImagesAcquiredException e) {
+                // Impossible: Images are released immediately after use
+                throw new IllegalStateException(e);
             } finally {
                 mImageReaderLock.unlock();
             }
diff --git a/tests/tests/hardware/src/android/hardware/camera2/cts/CameraDeviceTest.java b/tests/tests/hardware/src/android/hardware/camera2/cts/CameraDeviceTest.java
index e04aea8..e29569b 100644
--- a/tests/tests/hardware/src/android/hardware/camera2/cts/CameraDeviceTest.java
+++ b/tests/tests/hardware/src/android/hardware/camera2/cts/CameraDeviceTest.java
@@ -26,6 +26,7 @@
 import android.hardware.camera2.CaptureResult;
 import android.media.Image;
 import android.media.ImageReader;
+import android.media.ImageReader.MaxImagesAcquiredException;
 import android.os.Handler;
 import android.os.SystemClock;
 import android.test.AndroidTestCase;
@@ -435,14 +436,19 @@
     private class ImageDropperListener implements ImageReader.OnImageAvailableListener {
         @Override
         public void onImageAvailable(ImageReader reader) {
-            Image image = reader.getNextImage();
-            image.close();
+            try {
+                Image image = reader.acquireNextImage();
+                image.close();
+            } catch (MaxImagesAcquiredException e) {
+                // Impossible: We drop every frame we get.
+                throw new IllegalStateException(e);
+            }
         }
     }
 
     private void createDefaultSurface() throws Exception {
         mReader =
-                new ImageReader(DEFAULT_CAPTURE_WIDTH,
+                ImageReader.newInstance(DEFAULT_CAPTURE_WIDTH,
                         DEFAULT_CAPTURE_HEIGHT,
                         ImageFormat.YUV_420_888,
                         MAX_NUM_IMAGES);
@@ -450,7 +456,7 @@
         // Create dummy image listener since we don't care the image data in this test.
         ImageReader.OnImageAvailableListener listener = new ImageDropperListener();
         mDummyThread = new CameraTestThread();
-        mReader.setImageAvailableListener(listener, mDummyThread.start());
+        mReader.setOnImageAvailableListener(listener, mDummyThread.start());
     }
 
     private void verifyCaptureResults(
diff --git a/tests/tests/hardware/src/android/hardware/camera2/cts/ImageReaderTest.java b/tests/tests/hardware/src/android/hardware/camera2/cts/ImageReaderTest.java
index 3ba9815..a35703b 100644
--- a/tests/tests/hardware/src/android/hardware/camera2/cts/ImageReaderTest.java
+++ b/tests/tests/hardware/src/android/hardware/camera2/cts/ImageReaderTest.java
@@ -207,9 +207,9 @@
     private void prepareImageReader(Size sz, int format) throws Exception {
         int width = sz.getWidth();
         int height = sz.getHeight();
-        mReader = new ImageReader(width, height, format, MAX_NUM_IMAGES);
+        mReader = ImageReader.newInstance(width, height, format, MAX_NUM_IMAGES);
         mListener  = new SimpleImageListener();
-        mReader.setImageAvailableListener(mListener, mHandler);
+        mReader.setOnImageAvailableListener(mListener, mHandler);
         if (VERBOSE) Log.v(TAG, "Preparing ImageReader size " + sz.toString());
     }
 
@@ -245,17 +245,17 @@
             assertNotNull("Image listener is null", mListener);
             if (VERBOSE) Log.v(TAG, "Waiting for an Image");
             mListener.waitForImage();
-            img = mReader.getNextImage();
+            img = mReader.acquireNextImage();
             if (VERBOSE) Log.v(TAG, "Got next image");
             validateImage(img, sz.getWidth(), sz.getHeight(), format);
-            mReader.releaseImage(img);
+            img.close();
             // Return the pending images to producer in case the validation is slower
             // than the image producing rate. Otherwise, it could cause the producer
             // starvation.
             while (mListener.isImagePending()) {
                 mListener.waitForImage();
-                img = mReader.getNextImage();
-                mReader.releaseImage(img);
+                img = mReader.acquireNextImage();
+                img.close();
             }
         }
     }
diff --git a/tests/tests/permission/src/android/permission/cts/NoCaptureVideoPermissionTest.java b/tests/tests/permission/src/android/permission/cts/NoCaptureVideoPermissionTest.java
index f84079a..6ad0483 100644
--- a/tests/tests/permission/src/android/permission/cts/NoCaptureVideoPermissionTest.java
+++ b/tests/tests/permission/src/android/permission/cts/NoCaptureVideoPermissionTest.java
@@ -45,7 +45,7 @@
     public void testCreatePublicVirtualDisplay() {
         DisplayManager displayManager =
                 (DisplayManager)mContext.getSystemService(Context.DISPLAY_SERVICE);
-        ImageReader reader = new ImageReader(WIDTH, HEIGHT, PixelFormat.RGBX_8888, 1);
+        ImageReader reader = ImageReader.newInstance(WIDTH, HEIGHT, PixelFormat.RGBX_8888, 1);
         try {
             displayManager.createVirtualDisplay(NAME, WIDTH, HEIGHT, DENSITY,
                     reader.getSurface(), DisplayManager.VIRTUAL_DISPLAY_FLAG_PUBLIC);
@@ -68,7 +68,7 @@
     public void testCreateSecureVirtualDisplay() {
         DisplayManager displayManager =
                 (DisplayManager)mContext.getSystemService(Context.DISPLAY_SERVICE);
-        ImageReader reader = new ImageReader(WIDTH, HEIGHT, PixelFormat.RGBX_8888, 1);
+        ImageReader reader = ImageReader.newInstance(WIDTH, HEIGHT, PixelFormat.RGBX_8888, 1);
         try {
             displayManager.createVirtualDisplay(NAME, WIDTH, HEIGHT, DENSITY,
                     reader.getSurface(), DisplayManager.VIRTUAL_DISPLAY_FLAG_SECURE);
@@ -89,7 +89,7 @@
     public void testCreatePrivateVirtualDisplay() {
         DisplayManager displayManager =
                 (DisplayManager)mContext.getSystemService(Context.DISPLAY_SERVICE);
-        ImageReader reader = new ImageReader(WIDTH, HEIGHT, PixelFormat.RGBX_8888, 1);
+        ImageReader reader = ImageReader.newInstance(WIDTH, HEIGHT, PixelFormat.RGBX_8888, 1);
         try {
             VirtualDisplay display = displayManager.createVirtualDisplay(
                     NAME, WIDTH, HEIGHT, DENSITY,