From 5adb130c9cbd440d534e2a9fe30454b451d37da8 Mon Sep 17 00:00:00 2001 From: Byunghun Jeon Date: Tue, 13 Sep 2016 11:34:24 -0700 Subject: SnapdragonCamera: Add developer options for Camera2 Add developer options for Camera2. They can be shown by tapping 10 times on Version Info from setting menu in Camera2. Change-Id: Iafb202c8cca5136c8e720135effcc6d0d688702a CRs-Fixed: 1066519 --- res/layout/preference.xml | 3 +- res/xml/setting_menu_preferences.xml | 8 ++++ src/com/android/camera/SettingsActivity.java | 62 ++++++++++++++++++++++++++-- src/com/android/camera/SettingsManager.java | 1 + 4 files changed, 70 insertions(+), 4 deletions(-) diff --git a/res/layout/preference.xml b/res/layout/preference.xml index 68b931fbb..e9da4f5b8 100644 --- a/res/layout/preference.xml +++ b/res/layout/preference.xml @@ -28,7 +28,7 @@ android:layout_width="25dp" android:layout_height="25dp" android:layout_gravity="center" - android:layout_marginEnd="30dp" + android:layout_marginEnd="15dp" android:layout_marginStart="15dp" android:scaleType="fitCenter" /> @@ -36,6 +36,7 @@ android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginBottom="6dip" + android:layout_marginStart="15dp" android:layout_marginEnd="6dip" android:layout_marginTop="6dip" android:layout_weight="1"> diff --git a/res/xml/setting_menu_preferences.xml b/res/xml/setting_menu_preferences.xml index a606b342c..c988173ad 100644 --- a/res/xml/setting_menu_preferences.xml +++ b/res/xml/setting_menu_preferences.xml @@ -264,5 +264,13 @@ android:key="pref_camera2_trackingfocus_key" android:layout="@layout/preference" android:title="@string/pref_camera2_trackingfocus_title" /> + + \ No newline at end of file diff --git a/src/com/android/camera/SettingsActivity.java b/src/com/android/camera/SettingsActivity.java index a098b8a7f..054b303e7 100644 --- a/src/com/android/camera/SettingsActivity.java +++ b/src/com/android/camera/SettingsActivity.java @@ -30,12 +30,17 @@ package com.android.camera; import android.content.SharedPreferences; +import android.content.pm.PackageManager; import android.os.Bundle; import android.preference.ListPreference; import android.preference.Preference; +import android.preference.PreferenceCategory; import android.preference.PreferenceGroup; import android.preference.PreferenceActivity; +import android.preference.PreferenceManager; import android.preference.SwitchPreference; +import android.util.Log; +import android.widget.Toast; import org.codeaurora.snapcam.R; @@ -45,6 +50,9 @@ import java.util.Set; public class SettingsActivity extends PreferenceActivity { private SettingsManager mSettingsManager; private SharedPreferences mSharedPreferences; + private boolean mDeveloperMenuEnabled; + private int privateCounter = 0; + private final int DEVELOPER_MENU_TOUCH_COUNT = 10; private SharedPreferences.OnSharedPreferenceChangeListener mSharedPreferenceChangeListener = new SharedPreferences.OnSharedPreferenceChangeListener() { @@ -52,14 +60,16 @@ public class SettingsActivity extends PreferenceActivity { public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key) { Preference p = findPreference(key); + if (p == null) return; String value; if (p instanceof SwitchPreference) { boolean checked = ((SwitchPreference) p).isChecked(); value = checked ? "on" : "off"; - } else { + mSettingsManager.setValue(key, value); + } else if (p instanceof ListPreference){ value = ((ListPreference) p).getValue(); + mSettingsManager.setValue(key, value); } - mSettingsManager.setValue(key, value); } }; @@ -69,16 +79,52 @@ public class SettingsActivity extends PreferenceActivity { mSettingsManager = SettingsManager.getInstance(); addPreferencesFromResource(R.xml.setting_menu_preferences); + mSharedPreferences = getPreferenceManager().getSharedPreferences(); + mDeveloperMenuEnabled = mSharedPreferences.getBoolean(SettingsManager.KEY_DEVELOPER_MENU, false); + filterPreferences(); initializePreferences(); - mSharedPreferences = getPreferenceManager().getSharedPreferences(); mSharedPreferences.registerOnSharedPreferenceChangeListener(mSharedPreferenceChangeListener); + + for (int i = 0; i < getPreferenceScreen().getPreferenceCount(); i++) { + PreferenceCategory category = (PreferenceCategory) getPreferenceScreen().getPreference(i); + for (int j = 0; j < category.getPreferenceCount(); j++) { + Preference pref = category.getPreference(j); + pref.setOnPreferenceClickListener(new Preference.OnPreferenceClickListener() { + + @Override + public boolean onPreferenceClick(Preference preference) { + if (!mDeveloperMenuEnabled) { + if (preference.getKey().equals("version_info")) { + privateCounter++; + if (privateCounter >= DEVELOPER_MENU_TOUCH_COUNT) { + mDeveloperMenuEnabled = true; + mSharedPreferences.edit().putBoolean(SettingsManager.KEY_DEVELOPER_MENU, true).apply(); + Toast.makeText(SettingsActivity.this, "Camera developer option is enabled now", Toast.LENGTH_SHORT).show(); + } + } else { + privateCounter = 0; + } + } + return false; + } + + }); + } + } + } private void filterPreferences() { String[] categories = {"photo", "video", "general"}; Set set = mSettingsManager.getFilteredKeys(); + if (!mDeveloperMenuEnabled) { + set.add(SettingsManager.KEY_MONO_PREVIEW); + set.add(SettingsManager.KEY_MONO_ONLY); + set.add(SettingsManager.KEY_CLEARSIGHT); + } + for (String key : set) { Preference p = findPreference(key); if (p == null) continue; @@ -88,6 +134,7 @@ public class SettingsActivity extends PreferenceActivity { if (group.removePreference(p)) break; } } + ListPreference pictureSize = (ListPreference) findPreference(SettingsManager.KEY_PICTURE_SIZE); if (pictureSize != null) { pictureSize.setEntryValues(mSettingsManager.getEntryValues(SettingsManager.KEY_PICTURE_SIZE)); @@ -118,6 +165,15 @@ public class SettingsActivity extends PreferenceActivity { } if (disabled) p.setEnabled(false); } + + try { + String versionName = getPackageManager().getPackageInfo(getPackageName(), 0).versionName; + int index = versionName.indexOf(' '); + versionName = versionName.substring(0, index); + findPreference("version_info").setSummary(versionName); + } catch (PackageManager.NameNotFoundException e) { + e.printStackTrace(); + } } private boolean isOn(String value) { diff --git a/src/com/android/camera/SettingsManager.java b/src/com/android/camera/SettingsManager.java index 5c4273fae..ccb22836c 100644 --- a/src/com/android/camera/SettingsManager.java +++ b/src/com/android/camera/SettingsManager.java @@ -117,6 +117,7 @@ public class SettingsManager implements ListMenu.SettingsListener { public static final String KEY_VIDEO_HIGH_FRAME_RATE = "pref_camera2_hfr_key"; public static final String KEY_SELFIE_FLASH = "pref_selfie_flash_key"; public static final String KEY_SHUTTER_SOUND = "pref_camera2_shutter_sound_key"; + public static final String KEY_DEVELOPER_MENU = "pref_camera2_developer_menu_key"; private static final String TAG = "SnapCam_SettingsManager"; private static SettingsManager sInstance; -- cgit v1.2.3