diff options
author | codeworkx <daniel.hillenbrand@codeworkx.de> | 2017-01-28 14:56:35 +0100 |
---|---|---|
committer | Bruno Martins <bgcngm@gmail.com> | 2018-11-20 12:31:36 +0000 |
commit | 705df16043d4d8116fa77da66a0413ac46262b97 (patch) | |
tree | 6679575afa2f6b303a322a4f6cb83c7f1adee106 /src/com | |
parent | 4f94df6d7b96c57efa9ee8f621477c02d03e922e (diff) | |
download | android_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-x | src/com/android/camera/CameraActivity.java | 23 | ||||
-rwxr-xr-x | src/com/android/camera/util/CameraUtil.java | 31 | ||||
-rw-r--r-- | src/com/android/camera/util/PersistUtil.java | 6 |
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; } |