summaryrefslogtreecommitdiffstats
path: root/src/com
diff options
context:
space:
mode:
authorcodeworkx <daniel.hillenbrand@codeworkx.de>2017-01-28 14:56:35 +0100
committerBruno Martins <bgcngm@gmail.com>2018-11-20 12:31:36 +0000
commit705df16043d4d8116fa77da66a0413ac46262b97 (patch)
tree6679575afa2f6b303a322a4f6cb83c7f1adee106 /src/com
parent4f94df6d7b96c57efa9ee8f621477c02d03e922e (diff)
downloadandroid_packages_apps_Snap-705df16043d4d8116fa77da66a0413ac46262b97.tar.gz
android_packages_apps_Snap-705df16043d4d8116fa77da66a0413ac46262b97.tar.bz2
android_packages_apps_Snap-705df16043d4d8116fa77da66a0413ac46262b97.zip
Snap: Detect and use Camera2 if available
Author: codeworkx <daniel.hillenbrand@codeworkx.de> Date: Sat Jan 28 14:56:35 2017 +0100 Snap: detect and use Camera2 if available Also add overlay option to enable support for Camera2 to retain current behaviour. Change-Id: I20939e33f4bb687e4abea11bbcdb9bf246b156e4 Author: codeworkx <daniel.hillenbrand@codeworkx.de> Date: Sun Aug 13 12:22:05 2017 +0200 Snap: Add missing null check on isCamera2Supported Change-Id: I61c04c7cb8d344573ab7fb11f7114f09aaf24fb7 Change-Id: I339ead08d10ddff5dad491987d94367354a4b3f3
Diffstat (limited to 'src/com')
-rwxr-xr-xsrc/com/android/camera/CameraActivity.java23
-rwxr-xr-xsrc/com/android/camera/util/CameraUtil.java31
-rw-r--r--src/com/android/camera/util/PersistUtil.java6
3 files changed, 49 insertions, 11 deletions
diff --git a/src/com/android/camera/CameraActivity.java b/src/com/android/camera/CameraActivity.java
index 3629eb7d6..d1ee7754a 100755
--- a/src/com/android/camera/CameraActivity.java
+++ b/src/com/android/camera/CameraActivity.java
@@ -193,11 +193,15 @@ public class CameraActivity extends Activity
private static boolean PIE_MENU_ENABLED = false;
private boolean mDeveloperMenuEnabled = false;
+ private boolean mCamera2supported = false;
+ private boolean mCamera2enabled = false;
+
/** This data adapter is used by FilmStripView. */
private LocalDataAdapter mDataAdapter;
/** This data adapter represents the real local camera data. */
private LocalDataAdapter mWrappedDataAdapter;
+ private Context mContext;
private PanoramaStitchingManager mPanoramaManager;
private PlaceholderManager mPlaceholderManager;
private int mCurrentModuleIndex;
@@ -1497,6 +1501,9 @@ public class CameraActivity extends Activity
} catch (PackageManager.NameNotFoundException e) {
e.printStackTrace();
}
+
+ mContext = getApplicationContext();
+
// Check if this is in the secure camera mode.
Intent intent = getIntent();
String action = intent.getAction();
@@ -1573,9 +1580,16 @@ public class CameraActivity extends Activity
}
}
- boolean cam2on = PersistUtil.getCamera2Mode();
- CameraHolder.setCamera2Mode(this, cam2on);
- if (cam2on && (moduleIndex == ModuleSwitcher.PHOTO_MODULE_INDEX ||
+ // Check if the device supports Camera API 2
+ mCamera2supported = CameraUtil.isCamera2Supported(mContext);
+ Log.d(TAG, "Camera API 2 supported: " + mCamera2supported);
+
+ mCamera2enabled = mCamera2supported &&
+ mContext.getResources().getBoolean(R.bool.support_camera_api_v2);
+ Log.d(TAG, "Camera API 2 enabled: " + mCamera2enabled);
+
+ CameraHolder.setCamera2Mode(this, mCamera2enabled);
+ if (mCamera2enabled && (moduleIndex == ModuleSwitcher.PHOTO_MODULE_INDEX ||
moduleIndex == ModuleSwitcher.VIDEO_MODULE_INDEX))
moduleIndex = ModuleSwitcher.CAPTURE_MODULE_INDEX;
@@ -2158,9 +2172,8 @@ public class CameraActivity extends Activity
@Override
public void onModuleSelected(int moduleIndex) {
- boolean cam2on = PersistUtil.getCamera2Mode();
mForceReleaseCamera = moduleIndex == ModuleSwitcher.CAPTURE_MODULE_INDEX ||
- (cam2on && moduleIndex == ModuleSwitcher.PHOTO_MODULE_INDEX);
+ (mCamera2enabled && moduleIndex == ModuleSwitcher.PHOTO_MODULE_INDEX);
if (mForceReleaseCamera) {
moduleIndex = ModuleSwitcher.CAPTURE_MODULE_INDEX;
}
diff --git a/src/com/android/camera/util/CameraUtil.java b/src/com/android/camera/util/CameraUtil.java
index 3de5c4119..1813b11a7 100755
--- a/src/com/android/camera/util/CameraUtil.java
+++ b/src/com/android/camera/util/CameraUtil.java
@@ -409,6 +409,37 @@ public class CameraUtil {
}
}
+ public static boolean isCamera2Supported(Context context) {
+ android.hardware.camera2.CameraManager manager = (android.hardware.camera2.CameraManager)
+ context.getSystemService(Context.CAMERA_SERVICE);
+
+ try {
+ String[] cameraIds = manager.getCameraIdList();
+
+ if (cameraIds != null && cameraIds.length > 0) {
+ CameraCharacteristics characteristics =
+ manager.getCameraCharacteristics(cameraIds[0]);
+ int deviceLevel =
+ characteristics.get(CameraCharacteristics.INFO_SUPPORTED_HARDWARE_LEVEL);
+
+ switch (deviceLevel) {
+ case CameraCharacteristics.INFO_SUPPORTED_HARDWARE_LEVEL_LIMITED:
+ return true;
+ case CameraCharacteristics.INFO_SUPPORTED_HARDWARE_LEVEL_FULL:
+ return true;
+ case CameraCharacteristics.INFO_SUPPORTED_HARDWARE_LEVEL_3:
+ return true;
+ default:
+ return false;
+ }
+ }
+ } catch(CameraAccessException | NumberFormatException e) {
+ Log.e(TAG, "exception trying to get camera characteristics");
+ }
+
+ return false;
+ }
+
public static CameraManager.CameraProxy openCamera(
Activity activity, final int cameraId,
Handler handler, final CameraManager.CameraOpenErrorCallback cb) {
diff --git a/src/com/android/camera/util/PersistUtil.java b/src/com/android/camera/util/PersistUtil.java
index 32b76d1e9..baba03cfa 100644
--- a/src/com/android/camera/util/PersistUtil.java
+++ b/src/com/android/camera/util/PersistUtil.java
@@ -52,8 +52,6 @@ public class PersistUtil {
SystemProperties.get("persist.sys.camera.preview.size", "");
private static final String PERSIST_CAMERA_VIDEO_SIZE =
SystemProperties.get("persist.sys.camera.video.size", "");
- private static final boolean PERSIST_CAMERA_CAMERA2 =
- SystemProperties.getBoolean("persist.sys.camera.camera2", true);
private static final boolean PERSIST_CAMERA_ZSL =
SystemProperties.getBoolean("persist.sys.camera.zsl.disabled", false);
private static final int PERSIST_CAMERA_CANCEL_TOUCHFOCUS_DELAY =
@@ -163,10 +161,6 @@ public class PersistUtil {
return result;
}
- public static boolean getCamera2Mode() {
- return PERSIST_CAMERA_CAMERA2;
- }
-
public static boolean getCameraZSLDisabled() {
return PERSIST_CAMERA_ZSL;
}