summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorPatrick Pun <patrick.pun@broadcom.com>2020-06-04 00:31:21 +0000
committerAutomerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>2020-06-04 00:31:21 +0000
commit4187ba2cdae29076442902c38e0a284a5771eaed (patch)
treed7a035eb05b4f00ce947b2c49bf19343d23c1f35 /src
parentf156ec44341dad423daa2bd74817d0ba969e09f5 (diff)
parenta2ccd8ac067a5a5c099a2ec6d160269a6d801cf4 (diff)
downloadCamera2-4187ba2cdae29076442902c38e0a284a5771eaed.tar.gz
Add external camera support am: d66d2cfcf2 am: a2ccd8ac06
Original change: https://googleplex-android-review.googlesource.com/c/platform/packages/apps/Camera2/+/11604391 Change-Id: Ie10c969e4c43eed8b8be08203770df5e084fe987
Diffstat (limited to 'src')
-rw-r--r--src/com/android/camera/DisableCameraReceiver.java7
-rw-r--r--src/com/android/camera/one/v2/Camera2OneCameraManagerImpl.java8
-rw-r--r--src/com/android/camera/settings/SettingsManager.java5
3 files changed, 18 insertions, 2 deletions
diff --git a/src/com/android/camera/DisableCameraReceiver.java b/src/com/android/camera/DisableCameraReceiver.java
index 5237c1d58..ed58783e9 100644
--- a/src/com/android/camera/DisableCameraReceiver.java
+++ b/src/com/android/camera/DisableCameraReceiver.java
@@ -42,7 +42,7 @@ public class DisableCameraReceiver extends BroadcastReceiver {
? hasBackCamera()
: hasCamera();
- if (!needCameraActivity) {
+ if (!needCameraActivity && !supportExternalCamera(context)) {
Log.i(TAG, "disable all camera activities");
for (int i = 0; i < ACTIVITIES.length; i++) {
disableComponent(context, ACTIVITIES[i]);
@@ -53,6 +53,11 @@ public class DisableCameraReceiver extends BroadcastReceiver {
disableComponent(context, "com.android.camera.DisableCameraReceiver");
}
+ private boolean supportExternalCamera(Context context) {
+ PackageManager pm = context.getPackageManager();
+ return pm.hasSystemFeature(PackageManager.FEATURE_CAMERA_EXTERNAL);
+ }
+
private boolean hasCamera() {
int n = android.hardware.Camera.getNumberOfCameras();
Log.i(TAG, "number of camera: " + n);
diff --git a/src/com/android/camera/one/v2/Camera2OneCameraManagerImpl.java b/src/com/android/camera/one/v2/Camera2OneCameraManagerImpl.java
index a493e736d..d1e0b5b8d 100644
--- a/src/com/android/camera/one/v2/Camera2OneCameraManagerImpl.java
+++ b/src/com/android/camera/one/v2/Camera2OneCameraManagerImpl.java
@@ -157,6 +157,10 @@ public class Camera2OneCameraManagerImpl implements OneCameraManager {
String cameraId = findFirstCameraIdFacing(CameraCharacteristics.LENS_FACING_BACK);
if (cameraId == null) {
Log.w(TAG, "No back-facing camera found.");
+ cameraId = findFirstCameraIdFacing(CameraCharacteristics.LENS_FACING_EXTERNAL);
+ if (cameraId == null) {
+ Log.w(TAG, "No external camera found.");
+ }
}
return cameraId;
}
@@ -167,6 +171,10 @@ public class Camera2OneCameraManagerImpl implements OneCameraManager {
String cameraId = findFirstCameraIdFacing(CameraCharacteristics.LENS_FACING_FRONT);
if (cameraId == null) {
Log.w(TAG, "No front-facing camera found.");
+ cameraId = findFirstCameraIdFacing(CameraCharacteristics.LENS_FACING_EXTERNAL);
+ if (cameraId == null) {
+ Log.w(TAG, "No external camera found.");
+ }
}
return cameraId;
}
diff --git a/src/com/android/camera/settings/SettingsManager.java b/src/com/android/camera/settings/SettingsManager.java
index c5c494ea8..d2794e578 100644
--- a/src/com/android/camera/settings/SettingsManager.java
+++ b/src/com/android/camera/settings/SettingsManager.java
@@ -128,8 +128,11 @@ public class SettingsManager {
protected SharedPreferences openPreferences(String scope) {
synchronized (mLock) {
SharedPreferences preferences;
+ // For external camera, scope could have "/" separator which is a invalid path
+ // for the shared preference.
+ String validScope = scope.replaceAll("/", "_");
preferences = mContext.getSharedPreferences(
- mPackageName + scope, Context.MODE_PRIVATE);
+ mPackageName + validScope, Context.MODE_PRIVATE);
for (OnSharedPreferenceChangeListener listener : mSharedPreferenceListeners) {
preferences.registerOnSharedPreferenceChangeListener(listener);