summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorzafir <zafir@google.com>2015-03-06 18:15:50 -0800
committerzafir <zafir@google.com>2015-03-09 10:33:38 -0700
commitdf682a2d9cd88c31e84b8e69d6bdc3dbb5c894bb (patch)
tree7d754ed987ee1cc22c0784e2bd78d48d88f7a3d9
parent698e271d2b263778bfa73d1e67d6e2cd2783c89e (diff)
downloadandroid_packages_apps_Camera2-df682a2d9cd88c31e84b8e69d6bdc3dbb5c894bb.tar.gz
android_packages_apps_Camera2-df682a2d9cd88c31e84b8e69d6bdc3dbb5c894bb.tar.bz2
android_packages_apps_Camera2-df682a2d9cd88c31e84b8e69d6bdc3dbb5c894bb.zip
Hide "Advanced" settings screen on N6.
The N6 currently doesn't support manual exposure. That's the only item under Advanced, so hiding that option entirely. Bug: 18523154 Change-Id: I1b8238a9b9f0e04f8b0d2047a444b81fcecc4767
-rw-r--r--res/xml/camera_preferences.xml3
-rw-r--r--src/com/android/camera/settings/CameraSettingsActivity.java62
2 files changed, 63 insertions, 2 deletions
diff --git a/res/xml/camera_preferences.xml b/res/xml/camera_preferences.xml
index 3266caeb9..771396742 100644
--- a/res/xml/camera_preferences.xml
+++ b/res/xml/camera_preferences.xml
@@ -15,7 +15,8 @@
limitations under the License.
-->
-<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android" >
+<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"
+ android:key="prefscreen_top">
<!-- Resolutions and Quality -->
<PreferenceScreen
diff --git a/src/com/android/camera/settings/CameraSettingsActivity.java b/src/com/android/camera/settings/CameraSettingsActivity.java
index b5501a774..7bcaa779e 100644
--- a/src/com/android/camera/settings/CameraSettingsActivity.java
+++ b/src/com/android/camera/settings/CameraSettingsActivity.java
@@ -32,7 +32,18 @@ import android.preference.PreferenceScreen;
import android.support.v4.app.FragmentActivity;
import android.view.MenuItem;
+import com.android.camera.FatalErrorHandler;
+import com.android.camera.FatalErrorHandlerImpl;
+import com.android.camera.app.CameraServicesImpl;
import com.android.camera.debug.Log;
+
+import com.android.camera.one.OneCamera;
+import com.android.camera.one.OneCameraAccessException;
+import com.android.camera.one.OneCameraCharacteristics;
+import com.android.camera.one.OneCameraException;
+import com.android.camera.one.OneCameraManager;
+import com.android.camera.one.config.OneCameraFeatureConfig;
+import com.android.camera.one.config.OneCameraFeatureConfigCreator;
import com.android.camera.settings.SettingsUtil.SelectedPictureSizes;
import com.android.camera.settings.SettingsUtil.SelectedVideoQualities;
import com.android.camera.util.CameraSettingsActivityHelper;
@@ -59,11 +70,46 @@ public class CameraSettingsActivity extends FragmentActivity {
* back/up stack to operate correctly.
*/
public static final String PREF_SCREEN_EXTRA = "pref_screen_extra";
+ public static final String HIDE_ADVANCED_SCREEN = "hide_advanced";
+ private OneCameraManager mCameraManager;
+ private Context mAppContext;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
+ mAppContext = getApplicationContext();
+ FatalErrorHandler fatalErrorHandler = new FatalErrorHandlerImpl(this);
+ boolean hideAdvancedScreen = false;
+
+ OneCameraFeatureConfig featureConfig = OneCameraFeatureConfigCreator.createDefault(
+ getContentResolver(), CameraServicesImpl.instance().getMemoryManager());
+ try {
+ mCameraManager = OneCameraManager.get(
+ featureConfig, mAppContext, ResolutionUtil.getDisplayMetrics(this));
+ } catch (OneCameraException e) {
+ // Log error and continue. Modules requiring OneCamera should check
+ // and handle if null by showing error dialog or other treatment.
+ fatalErrorHandler.onGenericCameraAccessFailure();
+ }
+
+ // Check if manual exposure is available, so we can decide whether to
+ // display Advanced screen.
+ OneCameraCharacteristics frontCameraCharacteristics;
+ OneCameraCharacteristics backCameraCharacteristics;
+ try {
+ frontCameraCharacteristics = mCameraManager
+ .getCameraCharacteristics(OneCamera.Facing.FRONT);
+ backCameraCharacteristics = mCameraManager
+ .getCameraCharacteristics(OneCamera.Facing.BACK);
+ if (!frontCameraCharacteristics.isExposureCompensationSupported()
+ && !backCameraCharacteristics.isExposureCompensationSupported()) {
+ hideAdvancedScreen = true;
+ }
+ } catch (OneCameraAccessException e) {
+ fatalErrorHandler.onGenericCameraAccessFailure();
+ }
+
ActionBar actionBar = getActionBar();
actionBar.setDisplayHomeAsUpEnabled(true);
actionBar.setTitle(R.string.mode_settings);
@@ -72,6 +118,7 @@ public class CameraSettingsActivity extends FragmentActivity {
CameraSettingsFragment dialog = new CameraSettingsFragment();
Bundle bundle = new Bundle(1);
bundle.putString(PREF_SCREEN_EXTRA, prefKey);
+ bundle.putBoolean(HIDE_ADVANCED_SCREEN, hideAdvancedScreen);
dialog.setArguments(bundle);
getFragmentManager().beginTransaction().replace(android.R.id.content, dialog).commit();
}
@@ -97,6 +144,7 @@ public class CameraSettingsActivity extends FragmentActivity {
private String[] mCamcorderProfileNames;
private CameraDeviceInfo mInfos;
private String mPrefKey;
+ private boolean mHideAdvancedScreen;
private boolean mGetSubPrefAsRoot = true;
// Selected resolutions for the different cameras and sizes.
@@ -113,9 +161,18 @@ public class CameraSettingsActivity extends FragmentActivity {
Bundle arguments = getArguments();
if (arguments != null) {
mPrefKey = arguments.getString(PREF_SCREEN_EXTRA);
+ mHideAdvancedScreen = arguments.getBoolean(HIDE_ADVANCED_SCREEN);
}
Context context = this.getActivity().getApplicationContext();
addPreferencesFromResource(R.xml.camera_preferences);
+ PreferenceScreen advancedScreen =
+ (PreferenceScreen) findPreference(PREF_CATEGORY_ADVANCED);
+
+ // If manual exposure not enabled, hide the Advanced screen.
+ if (mHideAdvancedScreen) {
+ PreferenceScreen root = (PreferenceScreen) findPreference("prefscreen_top");
+ root.removePreference(advancedScreen);
+ }
// Allow the Helper to edit the full preference hierarchy, not the
// sub tree we may show as root. See {@link #getPreferenceScreen()}.
@@ -149,7 +206,10 @@ public class CameraSettingsActivity extends FragmentActivity {
final PreferenceScreen advancedScreen =
(PreferenceScreen) findPreference(PREF_CATEGORY_ADVANCED);
- setPreferenceScreenIntent(advancedScreen);
+
+ if (!mHideAdvancedScreen) {
+ setPreferenceScreenIntent(advancedScreen);
+ }
Preference helpPref = findPreference(PREF_LAUNCH_HELP);
helpPref.setOnPreferenceClickListener(