Merge "AOSP/Camera2: check system feature instead of actual camera device" am: 4cdfd29712 am: 4c67c660bd am: 0d53bf4bf4

Original change: https://android-review.googlesource.com/c/platform/packages/apps/Camera2/+/1881115

Change-Id: If41812762af1aed9abbae1059e273ecf25f2edc0
diff --git a/src/com/android/camera/SetActivitiesCameraReceiver.java b/src/com/android/camera/SetActivitiesCameraReceiver.java
index 7a79c52..347e82b 100644
--- a/src/com/android/camera/SetActivitiesCameraReceiver.java
+++ b/src/com/android/camera/SetActivitiesCameraReceiver.java
@@ -38,8 +38,7 @@
     public void onReceive(Context context, Intent intent) {
         // Disable camera-related activities if there is no camera.
         int component_state = (CHECK_BACK_CAMERA_ONLY
-            ? hasBackCamera()
-            : (hasCamera() || supportExternalCamera(context)))
+            ? hasBackCamera(context) : hasCamera(context))
             ? PackageManager.COMPONENT_ENABLED_STATE_ENABLED
             : PackageManager.COMPONENT_ENABLED_STATE_DISABLED;
 
@@ -50,29 +49,16 @@
         }
     }
 
-    private boolean supportExternalCamera(Context context) {
+    private boolean hasCamera(Context context) {
         PackageManager pm = context.getPackageManager();
-        return pm.hasSystemFeature(PackageManager.FEATURE_CAMERA_EXTERNAL);
+        return pm.hasSystemFeature(PackageManager.FEATURE_CAMERA)
+            || pm.hasSystemFeature(PackageManager.FEATURE_CAMERA_FRONT)
+            || pm.hasSystemFeature(PackageManager.FEATURE_CAMERA_EXTERNAL);
     }
 
-    private boolean hasCamera() {
-        int n = android.hardware.Camera.getNumberOfCameras();
-        Log.i(TAG, "number of camera: " + n);
-        return (n > 0);
-    }
-
-    private boolean hasBackCamera() {
-        int n = android.hardware.Camera.getNumberOfCameras();
-        CameraInfo info = new CameraInfo();
-        for (int i = 0; i < n; i++) {
-            android.hardware.Camera.getCameraInfo(i, info);
-            if (info.facing == CameraInfo.CAMERA_FACING_BACK) {
-                Log.i(TAG, "back camera found: " + i);
-                return true;
-            }
-        }
-        Log.i(TAG, "no back camera");
-        return false;
+    private boolean hasBackCamera(Context context) {
+        PackageManager pm = context.getPackageManager();
+        return pm.hasSystemFeature(PackageManager.FEATURE_CAMERA);
     }
 
     private void setComponent(Context context, String klass, final int enabledState) {