diff options
author | Hung-ying Tyan <tyanh@google.com> | 2021-11-05 17:00:58 +0800 |
---|---|---|
committer | Hung-ying Tyan <tyanh@google.com> | 2021-11-09 13:00:01 +0800 |
commit | 90744053bb00cdf08b647e806ff60caa139152ab (patch) | |
tree | 52b0440ffff7a333498ecff2cbcf9e49ef38ba18 | |
parent | d45b5950197f00dd394ddb3b348ad2922970e350 (diff) | |
download | Camera2-90744053bb00cdf08b647e806ff60caa139152ab.tar.gz |
AOSP/Camera2: check system feature instead of actual camera deviceandroid-12.1.0_r9android-12.1.0_r8android-12.1.0_r7android-12.1.0_r22android-12.1.0_r21android-12.1.0_r20android-12.1.0_r19android-12.1.0_r11android-12.1.0_r10android12L-devandroid12-qpr3-s7-releaseandroid12-qpr3-s6-releaseandroid12-qpr3-s5-releaseandroid12-qpr3-s4-releaseandroid12-qpr3-s3-releaseandroid12-qpr3-s2-releaseandroid12-qpr3-s1-releaseandroid12-qpr3-release
It is not reliable to check the actual camera devices at boot complete
as camera devices may be created after the boot-complete event.
Check the system features instead.
Bug: 198371493
Bug: 203729113
Test: build aosp_$pixel, reboot, check the app, check log
Change-Id: I5581621fed8244f6d19554be00f2c6543799dc92
Merged-In: I5581621fed8244f6d19554be00f2c6543799dc92
(cherry picked from commit addad94cce6823f386b539c0ee8e4b28926215d1)
-rw-r--r-- | src/com/android/camera/SetActivitiesCameraReceiver.java | 30 |
1 files changed, 8 insertions, 22 deletions
diff --git a/src/com/android/camera/SetActivitiesCameraReceiver.java b/src/com/android/camera/SetActivitiesCameraReceiver.java index 7a79c52e6..347e82b9f 100644 --- a/src/com/android/camera/SetActivitiesCameraReceiver.java +++ b/src/com/android/camera/SetActivitiesCameraReceiver.java @@ -38,8 +38,7 @@ public class SetActivitiesCameraReceiver extends BroadcastReceiver { 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 @@ public class SetActivitiesCameraReceiver extends BroadcastReceiver { } } - 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) { |