From 1889dae3c8048e1ce901a5d78cd0adc9ed0c7057 Mon Sep 17 00:00:00 2001 From: Puneet Lall Date: Wed, 24 Sep 2014 21:30:53 -0700 Subject: Recreate a OneCameraManager instance for each Activity. Bug: 17484715 Change-Id: If484e3b40ef32324fa77629b1687cd4317466e2e --- src/com/android/camera/CameraActivity.java | 5 ++++- src/com/android/camera/one/OneCameraManager.java | 19 ++++++------------- 2 files changed, 10 insertions(+), 14 deletions(-) diff --git a/src/com/android/camera/CameraActivity.java b/src/com/android/camera/CameraActivity.java index a368b982e..571a692a4 100644 --- a/src/com/android/camera/CameraActivity.java +++ b/src/com/android/camera/CameraActivity.java @@ -194,6 +194,7 @@ public class CameraActivity extends Activity */ private LocalDataAdapter mDataAdapter; + private OneCameraManager mCameraManager; private SettingsManager mSettingsManager; private ModeListView mModeListView; private boolean mModeListVisible = false; @@ -1260,7 +1261,7 @@ public class CameraActivity extends Activity @Override public OneCameraManager getCameraManager() { - return OneCameraManager.get(this); + return mCameraManager; } private void removeData(int dataID) { @@ -1331,6 +1332,8 @@ public class CameraActivity extends Activity mAppContext = getApplicationContext(); mSoundPlayer = new SoundPlayer(mAppContext); + mCameraManager = OneCameraManager.get(this); + // TODO: Try to move all the resources allocation to happen as soon as // possible so we can call module.init() at the earliest time. mModuleManager = new ModuleManagerImpl(); diff --git a/src/com/android/camera/one/OneCameraManager.java b/src/com/android/camera/one/OneCameraManager.java index 13f7dfe0b..4c78f3576 100644 --- a/src/com/android/camera/one/OneCameraManager.java +++ b/src/com/android/camera/one/OneCameraManager.java @@ -20,6 +20,7 @@ import android.content.Context; import android.hardware.camera2.CameraAccessException; import android.hardware.camera2.CameraCharacteristics; import android.hardware.camera2.CameraManager; +import android.os.Build; import android.util.DisplayMetrics; import android.view.WindowManager; @@ -58,22 +59,11 @@ public abstract class OneCameraManager { public abstract boolean hasCameraFacing(Facing facing); /** - * Singleton camera manager to be used throughout the app. - */ - private static OneCameraManager sCameraManager; - - /** - * Returns a camera manager that is based on Camera2 API, if available, or + * Creates a camera manager that is based on Camera2 API, if available, or * otherwise uses the portability layer API. - *

- * The instance is created the first time this method is called and cached - * in a singleton thereafter, so successive calls are cheap. */ public static OneCameraManager get(CameraActivity activity) { - if (sCameraManager == null) { - sCameraManager = create(activity); - } - return sCameraManager; + return create(activity); } /** @@ -105,6 +95,9 @@ public abstract class OneCameraManager { * HALs. */ private static boolean isCamera2Supported(CameraManager cameraManager) { + if (Build.VERSION.SDK_INT < 21) { + return false; + } try { final String id = cameraManager.getCameraIdList()[0]; // TODO: We should check for all the flags we need to ensure the -- cgit v1.2.3