From 65c00136cde07e050d05e3da61876199df90dd18 Mon Sep 17 00:00:00 2001 From: Senpo Hu Date: Tue, 9 Sep 2014 13:51:25 -0700 Subject: [PATCH] Set video quality pref default values at startup. The problem of the old approach is the default values never got set until switching on video module. The caveat of the this CL is that the default value tweak is only applied for Shamu. Rather than basing on device model string, detecting CamcorderProfile capability is a better way to get this job done. However, |CamcorderProfile.hasProfile| needs camera id info so I'd argue this CL is good enough for the Shamu/L release. Bug: 17060480 Change-Id: Ia53ff6aecad44fe7a32257fa1415163f167c09bf --- src/com/android/camera/VideoModule.java | 18 ------------------ src/com/android/camera/settings/Keys.java | 23 +++++++++++++++++++++-- 2 files changed, 21 insertions(+), 20 deletions(-) diff --git a/src/com/android/camera/VideoModule.java b/src/com/android/camera/VideoModule.java index 0bdb9a316..87cdb1f97 100644 --- a/src/com/android/camera/VideoModule.java +++ b/src/com/android/camera/VideoModule.java @@ -719,24 +719,6 @@ public class VideoModule extends CameraModule // The preference stores values from ListPreference and is thus string type for all values. // We need to convert it to int manually. SettingsManager settingsManager = mActivity.getSettingsManager(); - if (!settingsManager.isSet(SettingsManager.SCOPE_GLOBAL, - Keys.KEY_VIDEO_QUALITY_BACK)) { - settingsManager.setToDefault(SettingsManager.SCOPE_GLOBAL, - Keys.KEY_VIDEO_QUALITY_BACK); - - // TODO: Remove this once 4k recording is stable enough on new devices. - // Don't set the default resolution to be large if the device supports 4k video. - if (CamcorderProfile.hasProfile(mCameraId, CamcorderProfile.QUALITY_2160P)) { - settingsManager.set(SettingsManager.SCOPE_GLOBAL, - Keys.KEY_VIDEO_QUALITY_BACK, - mAppController.getAndroidContext().getString(R.string.pref_video_quality_medium)); - } - } - if (!settingsManager.isSet(SettingsManager.SCOPE_GLOBAL, - Keys.KEY_VIDEO_QUALITY_FRONT)) { - settingsManager.setToDefault(SettingsManager.SCOPE_GLOBAL, - Keys.KEY_VIDEO_QUALITY_FRONT); - } String videoQualityKey = isCameraFrontFacing() ? Keys.KEY_VIDEO_QUALITY_FRONT : Keys.KEY_VIDEO_QUALITY_BACK; String videoQuality = settingsManager diff --git a/src/com/android/camera/settings/Keys.java b/src/com/android/camera/settings/Keys.java index 9490ef3de..ad8178275 100644 --- a/src/com/android/camera/settings/Keys.java +++ b/src/com/android/camera/settings/Keys.java @@ -19,6 +19,7 @@ package com.android.camera.settings; import android.content.Context; import com.android.camera.app.LocationManager; +import com.android.camera.util.ApiHelper; import com.android.camera2.R; /** @@ -102,13 +103,31 @@ public class Keys { context.getString(R.string.pref_camera_focusmode_default), context.getResources().getStringArray(R.array.pref_camera_focusmode_entryvalues)); - settingsManager.setDefaults(KEY_VIDEO_QUALITY_BACK, - context.getString(R.string.pref_video_quality_large), + String videoQualityBackDefaultValue = context.getString(R.string.pref_video_quality_large); + // TODO: We tweaked the default setting based on model string which is not ideal. Detecting + // CamcorderProfile capability is a better way to get this job done. However, + // |CamcorderProfile.hasProfile| needs camera id info. We need a way to provide camera id to + // this method. b/17445274 + // Don't set the default resolution to be large if the device supports 4k video. + if (ApiHelper.IS_NEXUS_6) { + videoQualityBackDefaultValue = context.getString(R.string.pref_video_quality_medium); + } + settingsManager.setDefaults( + KEY_VIDEO_QUALITY_BACK, + videoQualityBackDefaultValue, context.getResources().getStringArray(R.array.pref_video_quality_entryvalues)); + if (!settingsManager.isSet(SettingsManager.SCOPE_GLOBAL, Keys.KEY_VIDEO_QUALITY_BACK)) { + settingsManager.setToDefault(SettingsManager.SCOPE_GLOBAL, + Keys.KEY_VIDEO_QUALITY_BACK); + } settingsManager.setDefaults(KEY_VIDEO_QUALITY_FRONT, context.getString(R.string.pref_video_quality_large), context.getResources().getStringArray(R.array.pref_video_quality_entryvalues)); + if (!settingsManager.isSet(SettingsManager.SCOPE_GLOBAL, Keys.KEY_VIDEO_QUALITY_FRONT)) { + settingsManager.setToDefault(SettingsManager.SCOPE_GLOBAL, + Keys.KEY_VIDEO_QUALITY_FRONT); + } settingsManager.setDefaults(KEY_JPEG_QUALITY, context.getString(R.string.pref_camera_jpeg_quality_normal), -- 2.11.0