diff options
author | zafir <zafir@google.com> | 2015-03-06 18:15:50 -0800 |
---|---|---|
committer | zafir <zafir@google.com> | 2015-03-09 10:33:38 -0700 |
commit | df682a2d9cd88c31e84b8e69d6bdc3dbb5c894bb (patch) | |
tree | 7d754ed987ee1cc22c0784e2bd78d48d88f7a3d9 | |
parent | 698e271d2b263778bfa73d1e67d6e2cd2783c89e (diff) | |
download | android_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.xml | 3 | ||||
-rw-r--r-- | src/com/android/camera/settings/CameraSettingsActivity.java | 62 |
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( |