Index: media/base/android/java/src/org/chromium/media/VideoCaptureFactory.java |
diff --git a/media/base/android/java/src/org/chromium/media/VideoCaptureFactory.java b/media/base/android/java/src/org/chromium/media/VideoCaptureFactory.java |
index 15433dea309982658f54ac09131cadc38826f3a1..c35725926a58396e133184978be4a513ceb64fea 100644 |
--- a/media/base/android/java/src/org/chromium/media/VideoCaptureFactory.java |
+++ b/media/base/android/java/src/org/chromium/media/VideoCaptureFactory.java |
@@ -6,6 +6,7 @@ package org.chromium.media; |
import android.content.Context; |
import android.content.pm.PackageManager; |
+import android.os.Build; |
import android.util.Log; |
import org.chromium.base.CalledByNative; |
@@ -40,8 +41,8 @@ class VideoCaptureFactory { |
private static boolean isSpecialDevice() { |
for (String[] device : SPECIAL_DEVICE_LIST) { |
- if (device[0].contentEquals(android.os.Build.MODEL) && |
- device[1].contentEquals(android.os.Build.DEVICE)) { |
+ if (device[0].contentEquals(android.os.Build.MODEL) |
+ && device[1].contentEquals(android.os.Build.DEVICE)) { |
return true; |
} |
} |
@@ -64,24 +65,33 @@ class VideoCaptureFactory { |
// to use a camera, but "load page" requires it. So, output a warning log |
// and carry on pretending the system has no camera(s). |
if (sNumberOfSystemCameras == -1) { |
- if (PackageManager.PERMISSION_GRANTED == |
- appContext.getPackageManager().checkPermission( |
+ if (PackageManager.PERMISSION_GRANTED |
+ == appContext.getPackageManager().checkPermission( |
"android.permission.CAMERA", appContext.getPackageName())) { |
- sNumberOfSystemCameras = VideoCaptureAndroid.getNumberOfCameras(); |
+ if (isLReleaseOrLater()) { |
+ sNumberOfSystemCameras = |
+ VideoCaptureAndroid2.getNumberOfCameras(appContext); |
+ } else { |
+ sNumberOfSystemCameras = VideoCaptureAndroid.getNumberOfCameras(); |
+ if (isSpecialDevice()) { |
+ Log.d(TAG, "Special device: " + android.os.Build.MODEL); |
+ sNumberOfSystemCameras += VideoCaptureTango.numberOfCameras(); |
+ } |
+ } |
} else { |
sNumberOfSystemCameras = 0; |
Log.w(TAG, "Missing android.permission.CAMERA permission, " |
+ "no system camera available."); |
} |
} |
- if (!isSpecialDevice()) { |
- return sNumberOfSystemCameras; |
- } |
- Log.d(TAG, "Special device: " + android.os.Build.MODEL); |
- return sNumberOfSystemCameras + VideoCaptureTango.numberOfCameras(); |
+ return sNumberOfSystemCameras; |
} |
} |
+ private static boolean isLReleaseOrLater() { |
+ return Build.VERSION.SDK_INT >= Build.VERSION_CODES.L; |
+ } |
+ |
// Factory methods. |
@CalledByNative |
static VideoCapture createVideoCapture( |
@@ -101,18 +111,24 @@ class VideoCaptureFactory { |
} |
@CalledByNative |
- static String getDeviceName(int id) { |
- return (ChromiumCameraInfo.isSpecialCamera(id)) ? |
- VideoCaptureTango.getName(ChromiumCameraInfo.toSpecialCameraId(id)) : |
- VideoCaptureAndroid.getName(id); |
+ static String getDeviceName(int id, Context appContext) { |
+ if (isLReleaseOrLater()) { |
+ return VideoCaptureAndroid2.getName(id, appContext); |
+ } |
+ return (ChromiumCameraInfo.isSpecialCamera(id)) |
+ ? VideoCaptureTango.getName(ChromiumCameraInfo.toSpecialCameraId(id)) |
+ : VideoCaptureAndroid.getName(id); |
} |
@CalledByNative |
- static VideoCapture.CaptureFormat[] getDeviceSupportedFormats(int id) { |
- return ChromiumCameraInfo.isSpecialCamera(id) ? |
- VideoCaptureTango.getDeviceSupportedFormats( |
- ChromiumCameraInfo.toSpecialCameraId(id)) : |
- VideoCaptureAndroid.getDeviceSupportedFormats(id); |
+ static VideoCapture.CaptureFormat[] getDeviceSupportedFormats(Context appContext, int id) { |
+ if (isLReleaseOrLater()) { |
+ return VideoCaptureAndroid2.getDeviceSupportedFormats(appContext, id); |
+ } |
+ return ChromiumCameraInfo.isSpecialCamera(id) |
+ ? VideoCaptureTango.getDeviceSupportedFormats( |
+ ChromiumCameraInfo.toSpecialCameraId(id)) |
+ : VideoCaptureAndroid.getDeviceSupportedFormats(id); |
} |
@CalledByNative |