diff options
| -rw-r--r-- | core/java/android/hardware/camera2/CameraManager.java | 30 |
1 files changed, 21 insertions, 9 deletions
diff --git a/core/java/android/hardware/camera2/CameraManager.java b/core/java/android/hardware/camera2/CameraManager.java index 1b150bfca63a..90bf896c2225 100644 --- a/core/java/android/hardware/camera2/CameraManager.java +++ b/core/java/android/hardware/camera2/CameraManager.java @@ -16,28 +16,29 @@ package android.hardware.camera2; -import android.annotation.RequiresPermission; -import android.annotation.SystemService; import android.annotation.NonNull; import android.annotation.Nullable; +import android.annotation.RequiresPermission; +import android.annotation.SystemService; import android.content.Context; -import android.hardware.ICameraService; -import android.hardware.ICameraServiceListener; import android.hardware.CameraInfo; import android.hardware.CameraStatus; +import android.hardware.ICameraService; +import android.hardware.ICameraServiceListener; import android.hardware.camera2.impl.CameraMetadataNative; import android.hardware.camera2.legacy.CameraDeviceUserShim; import android.hardware.camera2.legacy.LegacyMetadataMapper; -import android.os.IBinder; import android.os.Binder; import android.os.DeadObjectException; import android.os.Handler; +import android.os.IBinder; import android.os.Looper; import android.os.RemoteException; import android.os.ServiceManager; import android.os.ServiceSpecificException; -import android.util.Log; +import android.os.SystemProperties; import android.util.ArrayMap; +import android.util.Log; import java.util.ArrayList; @@ -210,7 +211,9 @@ public final class CameraManager { public CameraCharacteristics getCameraCharacteristics(@NonNull String cameraId) throws CameraAccessException { CameraCharacteristics characteristics = null; - + if (CameraManagerGlobal.sCameraServiceDisabled) { + throw new IllegalArgumentException("No cameras available on device"); + } synchronized (mLock) { /* * Get the camera characteristics from the camera service directly if it supports it, @@ -462,6 +465,9 @@ public final class CameraManager { "Handler argument is null, but no looper exists in the calling thread"); } } + if (CameraManagerGlobal.sCameraServiceDisabled) { + throw new IllegalArgumentException("No cameras available on device"); + } openCameraDeviceUserAsync(cameraId, callback, handler, clientUid); } @@ -507,6 +513,9 @@ public final class CameraManager { */ public void setTorchMode(@NonNull String cameraId, boolean enabled) throws CameraAccessException { + if (CameraManagerGlobal.sCameraServiceDisabled) { + throw new IllegalArgumentException("No cameras available on device"); + } CameraManagerGlobal.get().setTorchMode(cameraId, enabled); } @@ -745,6 +754,9 @@ public final class CameraManager { private CameraManagerGlobal() { } + public static final boolean sCameraServiceDisabled = + SystemProperties.getBoolean("config.disable_cameraservice", false); + public static CameraManagerGlobal get() { return gCameraManager; } @@ -764,7 +776,7 @@ public final class CameraManager { public ICameraService getCameraService() { synchronized(mLock) { connectCameraServiceLocked(); - if (mCameraService == null) { + if (mCameraService == null && !sCameraServiceDisabled) { Log.e(TAG, "Camera service is unavailable"); } return mCameraService; @@ -779,7 +791,7 @@ public final class CameraManager { */ private void connectCameraServiceLocked() { // Only reconnect if necessary - if (mCameraService != null) return; + if (mCameraService != null || sCameraServiceDisabled) return; Log.i(TAG, "Connecting to camera service"); |