diff options
author | likaid <likaid@codeaurora.org> | 2015-03-02 16:02:01 +0800 |
---|---|---|
committer | likaid <likaid@codeaurora.org> | 2015-03-11 09:48:38 +0800 |
commit | 3689f9ecffe9fa18c91d4a6d479b2329efe3752e (patch) | |
tree | f69a51d176b0d62f0fc287ce8d48d63a5c348833 /src/com/android/camera/VideoMenu.java | |
parent | 2d894ed368689085e89b6f0b79fb355575267e97 (diff) | |
download | android_packages_apps_Snap-3689f9ecffe9fa18c91d4a6d479b2329efe3752e.tar.gz android_packages_apps_Snap-3689f9ecffe9fa18c91d4a6d479b2329efe3752e.tar.bz2 android_packages_apps_Snap-3689f9ecffe9fa18c91d4a6d479b2329efe3752e.zip |
SnapdragonCamera: Fix app FC when time lapse and HFR is set to ON
After HFR and time lapse both are on, the ListMenu is initialize again
and mListMenu is set null which lead to NullPointerException happened.
Don't initialize listmenu when it's showing, move toast to VideoMenu
reference similar code in PhotoModule.
Change-Id: I9eaa308cc1b5eccb7bc86a3da6ae99f09b280be9
CRs-Fixed: 796135
Diffstat (limited to 'src/com/android/camera/VideoMenu.java')
-rw-r--r-- | src/com/android/camera/VideoMenu.java | 33 |
1 files changed, 31 insertions, 2 deletions
diff --git a/src/com/android/camera/VideoMenu.java b/src/com/android/camera/VideoMenu.java index 63d255715..582703830 100644 --- a/src/com/android/camera/VideoMenu.java +++ b/src/com/android/camera/VideoMenu.java @@ -42,8 +42,10 @@ import com.android.camera.ui.ListSubMenu; import com.android.camera.ui.ListMenu; import com.android.camera.ui.TimeIntervalPopup; import com.android.camera.ui.RotateImageView; +import com.android.camera.ui.RotateTextToast; import org.codeaurora.snapcam.R; import android.widget.HorizontalScrollView; +import android.widget.Toast; import android.view.ViewGroup; import android.view.WindowManager; import android.view.Display; @@ -653,12 +655,12 @@ public class VideoMenu extends MenuController @Override // Hit when an item in the second-level popup gets selected public void onListPrefChanged(ListPreference pref) { + onSettingChanged(pref); if (mPopupStatus == POPUP_SECOND_LEVEL) { mListMenu.reloadPreference(); animateFadeOut(mListSubMenu, 2); + ((ListMenu) mListMenu).resetHighlight(); } - super.onSettingChanged(pref); - ((ListMenu) mListMenu).resetHighlight(); } protected void initializePopup() { @@ -758,8 +760,35 @@ public class VideoMenu extends MenuController animateSlideOut(mListMenu, 1); } + // Return true if the preference has the specified key but not the value. + private static boolean notSame(ListPreference pref, String key, String value) { + return (key.equals(pref.getKey()) && !value.equals(pref.getValue())); + } + @Override public void onSettingChanged(ListPreference pref) { + + if (notSame(pref, CameraSettings.KEY_VIDEO_TIME_LAPSE_FRAME_INTERVAL, + mActivity.getString(R.string.pref_video_time_lapse_frame_interval_default))) { + ListPreference hfrPref = + mPreferenceGroup.findPreference(CameraSettings.KEY_VIDEO_HIGH_FRAME_RATE); + if (hfrPref != null && !"off".equals(hfrPref.getValue())) { + RotateTextToast.makeText(mActivity, R.string.error_app_unsupported_hfr_selection, + Toast.LENGTH_LONG).show(); + } + setPreference(CameraSettings.KEY_VIDEO_HIGH_FRAME_RATE, "off"); + } + if (notSame(pref, CameraSettings.KEY_VIDEO_HIGH_FRAME_RATE, "off")) { + String defaultValue = + mActivity.getString(R.string.pref_video_time_lapse_frame_interval_default); + ListPreference lapsePref = mPreferenceGroup + .findPreference(CameraSettings.KEY_VIDEO_TIME_LAPSE_FRAME_INTERVAL); + if (lapsePref != null && !defaultValue.equals(lapsePref.getValue())) { + RotateTextToast.makeText(mActivity, R.string.error_app_unsupported_hfr_selection, + Toast.LENGTH_LONG).show(); + } + setPreference(CameraSettings.KEY_VIDEO_TIME_LAPSE_FRAME_INTERVAL, defaultValue); + } super.onSettingChanged(pref); } |