SettingsActivity.java revision a6f7ba6848302d142ba769615d12bbf77a13e6e6
1243eb8e9af35f07befa733c86dd320f9f8b021bdglaznev@webrtc.org/* 2243eb8e9af35f07befa733c86dd320f9f8b021bdglaznev@webrtc.org * libjingle 3243eb8e9af35f07befa733c86dd320f9f8b021bdglaznev@webrtc.org * Copyright 2014, Google Inc. 4243eb8e9af35f07befa733c86dd320f9f8b021bdglaznev@webrtc.org * 5243eb8e9af35f07befa733c86dd320f9f8b021bdglaznev@webrtc.org * Redistribution and use in source and binary forms, with or without 6243eb8e9af35f07befa733c86dd320f9f8b021bdglaznev@webrtc.org * modification, are permitted provided that the following conditions are met: 7243eb8e9af35f07befa733c86dd320f9f8b021bdglaznev@webrtc.org * 8243eb8e9af35f07befa733c86dd320f9f8b021bdglaznev@webrtc.org * 1. Redistributions of source code must retain the above copyright notice, 9243eb8e9af35f07befa733c86dd320f9f8b021bdglaznev@webrtc.org * this list of conditions and the following disclaimer. 10243eb8e9af35f07befa733c86dd320f9f8b021bdglaznev@webrtc.org * 2. Redistributions in binary form must reproduce the above copyright notice, 11243eb8e9af35f07befa733c86dd320f9f8b021bdglaznev@webrtc.org * this list of conditions and the following disclaimer in the documentation 12243eb8e9af35f07befa733c86dd320f9f8b021bdglaznev@webrtc.org * and/or other materials provided with the distribution. 13243eb8e9af35f07befa733c86dd320f9f8b021bdglaznev@webrtc.org * 3. The name of the author may not be used to endorse or promote products 14243eb8e9af35f07befa733c86dd320f9f8b021bdglaznev@webrtc.org * derived from this software without specific prior written permission. 15243eb8e9af35f07befa733c86dd320f9f8b021bdglaznev@webrtc.org * 16243eb8e9af35f07befa733c86dd320f9f8b021bdglaznev@webrtc.org * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED 17243eb8e9af35f07befa733c86dd320f9f8b021bdglaznev@webrtc.org * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF 18243eb8e9af35f07befa733c86dd320f9f8b021bdglaznev@webrtc.org * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO 19243eb8e9af35f07befa733c86dd320f9f8b021bdglaznev@webrtc.org * EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 20243eb8e9af35f07befa733c86dd320f9f8b021bdglaznev@webrtc.org * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, 21243eb8e9af35f07befa733c86dd320f9f8b021bdglaznev@webrtc.org * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; 22243eb8e9af35f07befa733c86dd320f9f8b021bdglaznev@webrtc.org * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, 23243eb8e9af35f07befa733c86dd320f9f8b021bdglaznev@webrtc.org * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR 24243eb8e9af35f07befa733c86dd320f9f8b021bdglaznev@webrtc.org * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF 25243eb8e9af35f07befa733c86dd320f9f8b021bdglaznev@webrtc.org * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 26243eb8e9af35f07befa733c86dd320f9f8b021bdglaznev@webrtc.org */ 27243eb8e9af35f07befa733c86dd320f9f8b021bdglaznev@webrtc.org 28243eb8e9af35f07befa733c86dd320f9f8b021bdglaznev@webrtc.orgpackage org.appspot.apprtc; 29243eb8e9af35f07befa733c86dd320f9f8b021bdglaznev@webrtc.org 30243eb8e9af35f07befa733c86dd320f9f8b021bdglaznev@webrtc.orgimport android.app.Activity; 31243eb8e9af35f07befa733c86dd320f9f8b021bdglaznev@webrtc.orgimport android.content.SharedPreferences; 32243eb8e9af35f07befa733c86dd320f9f8b021bdglaznev@webrtc.orgimport android.content.SharedPreferences.OnSharedPreferenceChangeListener; 33243eb8e9af35f07befa733c86dd320f9f8b021bdglaznev@webrtc.orgimport android.os.Bundle; 34243eb8e9af35f07befa733c86dd320f9f8b021bdglaznev@webrtc.orgimport android.preference.Preference; 35243eb8e9af35f07befa733c86dd320f9f8b021bdglaznev@webrtc.org 36243eb8e9af35f07befa733c86dd320f9f8b021bdglaznev@webrtc.orgpublic class SettingsActivity extends Activity 37243eb8e9af35f07befa733c86dd320f9f8b021bdglaznev@webrtc.org implements OnSharedPreferenceChangeListener{ 38243eb8e9af35f07befa733c86dd320f9f8b021bdglaznev@webrtc.org private SettingsFragment settingsFragment; 39243eb8e9af35f07befa733c86dd320f9f8b021bdglaznev@webrtc.org private String keyprefResolution; 405f38c8d1b8e842652e55410333870acfc5395ea6glaznev@webrtc.org private String keyprefFps; 41dea5173edfcc6fed0572ff61bbc116918988bd16glaznev@webrtc.org private String keyprefStartBitrateType; 42dea5173edfcc6fed0572ff61bbc116918988bd16glaznev@webrtc.org private String keyprefStartBitrateValue; 43dea5173edfcc6fed0572ff61bbc116918988bd16glaznev@webrtc.org private String keyprefHwCodec; 442176db343cf269a6f1faa7f0b20e8b5ad001c654henrika@webrtc.org private String keyprefCpuUsageDetection; 45369746bcb8daa10dc2686b6317b51e4442a9b9feglaznev@webrtc.org private String keyprefSignaling; 46a6f7ba6848302d142ba769615d12bbf77a13e6e6jiayl@webrtc.org private String keyPrefRoomServerUrl; 47243eb8e9af35f07befa733c86dd320f9f8b021bdglaznev@webrtc.org 48243eb8e9af35f07befa733c86dd320f9f8b021bdglaznev@webrtc.org @Override 49243eb8e9af35f07befa733c86dd320f9f8b021bdglaznev@webrtc.org protected void onCreate(Bundle savedInstanceState) { 50243eb8e9af35f07befa733c86dd320f9f8b021bdglaznev@webrtc.org super.onCreate(savedInstanceState); 51243eb8e9af35f07befa733c86dd320f9f8b021bdglaznev@webrtc.org keyprefResolution = getString(R.string.pref_resolution_key); 525f38c8d1b8e842652e55410333870acfc5395ea6glaznev@webrtc.org keyprefFps = getString(R.string.pref_fps_key); 53dea5173edfcc6fed0572ff61bbc116918988bd16glaznev@webrtc.org keyprefStartBitrateType = getString(R.string.pref_startbitrate_key); 54dea5173edfcc6fed0572ff61bbc116918988bd16glaznev@webrtc.org keyprefStartBitrateValue = getString(R.string.pref_startbitratevalue_key); 55dea5173edfcc6fed0572ff61bbc116918988bd16glaznev@webrtc.org keyprefHwCodec = getString(R.string.pref_hwcodec_key); 562176db343cf269a6f1faa7f0b20e8b5ad001c654henrika@webrtc.org keyprefCpuUsageDetection = getString(R.string.pref_cpu_usage_detection_key); 57a6f7ba6848302d142ba769615d12bbf77a13e6e6jiayl@webrtc.org keyPrefRoomServerUrl = getString(R.string.pref_room_server_url_key); 58243eb8e9af35f07befa733c86dd320f9f8b021bdglaznev@webrtc.org 59243eb8e9af35f07befa733c86dd320f9f8b021bdglaznev@webrtc.org // Display the fragment as the main content. 60243eb8e9af35f07befa733c86dd320f9f8b021bdglaznev@webrtc.org settingsFragment = new SettingsFragment(); 61243eb8e9af35f07befa733c86dd320f9f8b021bdglaznev@webrtc.org getFragmentManager().beginTransaction() 62243eb8e9af35f07befa733c86dd320f9f8b021bdglaznev@webrtc.org .replace(android.R.id.content, settingsFragment) 63243eb8e9af35f07befa733c86dd320f9f8b021bdglaznev@webrtc.org .commit(); 64243eb8e9af35f07befa733c86dd320f9f8b021bdglaznev@webrtc.org } 65243eb8e9af35f07befa733c86dd320f9f8b021bdglaznev@webrtc.org 66243eb8e9af35f07befa733c86dd320f9f8b021bdglaznev@webrtc.org @Override 67243eb8e9af35f07befa733c86dd320f9f8b021bdglaznev@webrtc.org protected void onResume() { 68243eb8e9af35f07befa733c86dd320f9f8b021bdglaznev@webrtc.org super.onResume(); 69243eb8e9af35f07befa733c86dd320f9f8b021bdglaznev@webrtc.org // Set summary to be the user-description for the selected value 70243eb8e9af35f07befa733c86dd320f9f8b021bdglaznev@webrtc.org SharedPreferences sharedPreferences = 71243eb8e9af35f07befa733c86dd320f9f8b021bdglaznev@webrtc.org settingsFragment.getPreferenceScreen().getSharedPreferences(); 72243eb8e9af35f07befa733c86dd320f9f8b021bdglaznev@webrtc.org sharedPreferences.registerOnSharedPreferenceChangeListener(this); 73243eb8e9af35f07befa733c86dd320f9f8b021bdglaznev@webrtc.org updateSummary(sharedPreferences, keyprefResolution); 745f38c8d1b8e842652e55410333870acfc5395ea6glaznev@webrtc.org updateSummary(sharedPreferences, keyprefFps); 75dea5173edfcc6fed0572ff61bbc116918988bd16glaznev@webrtc.org updateSummary(sharedPreferences, keyprefStartBitrateType); 76a6f7ba6848302d142ba769615d12bbf77a13e6e6jiayl@webrtc.org updateSummary(sharedPreferences, keyPrefRoomServerUrl); 77dea5173edfcc6fed0572ff61bbc116918988bd16glaznev@webrtc.org updateSummaryBitrate(sharedPreferences, keyprefStartBitrateValue); 78dea5173edfcc6fed0572ff61bbc116918988bd16glaznev@webrtc.org setBitrateEnable(sharedPreferences); 79dea5173edfcc6fed0572ff61bbc116918988bd16glaznev@webrtc.org updateSummaryB(sharedPreferences, keyprefHwCodec); 802176db343cf269a6f1faa7f0b20e8b5ad001c654henrika@webrtc.org updateSummaryB(sharedPreferences, keyprefCpuUsageDetection); 81369746bcb8daa10dc2686b6317b51e4442a9b9feglaznev@webrtc.org updateSummaryB(sharedPreferences, keyprefSignaling); 82243eb8e9af35f07befa733c86dd320f9f8b021bdglaznev@webrtc.org } 83243eb8e9af35f07befa733c86dd320f9f8b021bdglaznev@webrtc.org 84243eb8e9af35f07befa733c86dd320f9f8b021bdglaznev@webrtc.org @Override 85243eb8e9af35f07befa733c86dd320f9f8b021bdglaznev@webrtc.org protected void onPause() { 86243eb8e9af35f07befa733c86dd320f9f8b021bdglaznev@webrtc.org super.onPause(); 87243eb8e9af35f07befa733c86dd320f9f8b021bdglaznev@webrtc.org SharedPreferences sharedPreferences = 88243eb8e9af35f07befa733c86dd320f9f8b021bdglaznev@webrtc.org settingsFragment.getPreferenceScreen().getSharedPreferences(); 89243eb8e9af35f07befa733c86dd320f9f8b021bdglaznev@webrtc.org sharedPreferences.unregisterOnSharedPreferenceChangeListener(this); 90243eb8e9af35f07befa733c86dd320f9f8b021bdglaznev@webrtc.org } 91243eb8e9af35f07befa733c86dd320f9f8b021bdglaznev@webrtc.org 92243eb8e9af35f07befa733c86dd320f9f8b021bdglaznev@webrtc.org @Override 93243eb8e9af35f07befa733c86dd320f9f8b021bdglaznev@webrtc.org public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, 94243eb8e9af35f07befa733c86dd320f9f8b021bdglaznev@webrtc.org String key) { 95a6f7ba6848302d142ba769615d12bbf77a13e6e6jiayl@webrtc.org if (key.equals(keyprefResolution) || 96a6f7ba6848302d142ba769615d12bbf77a13e6e6jiayl@webrtc.org key.equals(keyprefFps) || 97a6f7ba6848302d142ba769615d12bbf77a13e6e6jiayl@webrtc.org key.equals(keyprefStartBitrateType) || 98a6f7ba6848302d142ba769615d12bbf77a13e6e6jiayl@webrtc.org key.equals(keyPrefRoomServerUrl)) { 99243eb8e9af35f07befa733c86dd320f9f8b021bdglaznev@webrtc.org updateSummary(sharedPreferences, key); 100dea5173edfcc6fed0572ff61bbc116918988bd16glaznev@webrtc.org } else if (key.equals(keyprefStartBitrateValue)) { 101dea5173edfcc6fed0572ff61bbc116918988bd16glaznev@webrtc.org updateSummaryBitrate(sharedPreferences, key); 102dea5173edfcc6fed0572ff61bbc116918988bd16glaznev@webrtc.org } else if (key.equals(keyprefCpuUsageDetection) || 103369746bcb8daa10dc2686b6317b51e4442a9b9feglaznev@webrtc.org key.equals(keyprefHwCodec) || key.equals(keyprefSignaling)) { 1042176db343cf269a6f1faa7f0b20e8b5ad001c654henrika@webrtc.org updateSummaryB(sharedPreferences, key); 105243eb8e9af35f07befa733c86dd320f9f8b021bdglaznev@webrtc.org } 106dea5173edfcc6fed0572ff61bbc116918988bd16glaznev@webrtc.org if (key.equals(keyprefStartBitrateType)) { 107dea5173edfcc6fed0572ff61bbc116918988bd16glaznev@webrtc.org setBitrateEnable(sharedPreferences); 108dea5173edfcc6fed0572ff61bbc116918988bd16glaznev@webrtc.org } 109243eb8e9af35f07befa733c86dd320f9f8b021bdglaznev@webrtc.org } 110243eb8e9af35f07befa733c86dd320f9f8b021bdglaznev@webrtc.org 111243eb8e9af35f07befa733c86dd320f9f8b021bdglaznev@webrtc.org private void updateSummary(SharedPreferences sharedPreferences, String key) { 112243eb8e9af35f07befa733c86dd320f9f8b021bdglaznev@webrtc.org Preference updatedPref = settingsFragment.findPreference(key); 113243eb8e9af35f07befa733c86dd320f9f8b021bdglaznev@webrtc.org // Set summary to be the user-description for the selected value 114243eb8e9af35f07befa733c86dd320f9f8b021bdglaznev@webrtc.org updatedPref.setSummary(sharedPreferences.getString(key, "")); 115243eb8e9af35f07befa733c86dd320f9f8b021bdglaznev@webrtc.org } 116243eb8e9af35f07befa733c86dd320f9f8b021bdglaznev@webrtc.org 117dea5173edfcc6fed0572ff61bbc116918988bd16glaznev@webrtc.org private void updateSummaryBitrate( 118dea5173edfcc6fed0572ff61bbc116918988bd16glaznev@webrtc.org SharedPreferences sharedPreferences, String key) { 119dea5173edfcc6fed0572ff61bbc116918988bd16glaznev@webrtc.org Preference updatedPref = settingsFragment.findPreference(key); 120dea5173edfcc6fed0572ff61bbc116918988bd16glaznev@webrtc.org updatedPref.setSummary(sharedPreferences.getString(key, "") + " kbps"); 121dea5173edfcc6fed0572ff61bbc116918988bd16glaznev@webrtc.org } 122dea5173edfcc6fed0572ff61bbc116918988bd16glaznev@webrtc.org 1232176db343cf269a6f1faa7f0b20e8b5ad001c654henrika@webrtc.org private void updateSummaryB(SharedPreferences sharedPreferences, String key) { 1242176db343cf269a6f1faa7f0b20e8b5ad001c654henrika@webrtc.org Preference updatedPref = settingsFragment.findPreference(key); 1252176db343cf269a6f1faa7f0b20e8b5ad001c654henrika@webrtc.org updatedPref.setSummary(sharedPreferences.getBoolean(key, true) 126dea5173edfcc6fed0572ff61bbc116918988bd16glaznev@webrtc.org ? getString(R.string.pref_value_enabled) 127dea5173edfcc6fed0572ff61bbc116918988bd16glaznev@webrtc.org : getString(R.string.pref_value_disabled)); 128dea5173edfcc6fed0572ff61bbc116918988bd16glaznev@webrtc.org } 129dea5173edfcc6fed0572ff61bbc116918988bd16glaznev@webrtc.org 130dea5173edfcc6fed0572ff61bbc116918988bd16glaznev@webrtc.org private void setBitrateEnable(SharedPreferences sharedPreferences) { 131dea5173edfcc6fed0572ff61bbc116918988bd16glaznev@webrtc.org Preference bitratePreferenceValue = 132dea5173edfcc6fed0572ff61bbc116918988bd16glaznev@webrtc.org settingsFragment.findPreference(keyprefStartBitrateValue); 133dea5173edfcc6fed0572ff61bbc116918988bd16glaznev@webrtc.org String bitrateTypeDefault = getString(R.string.pref_startbitrate_default); 134dea5173edfcc6fed0572ff61bbc116918988bd16glaznev@webrtc.org String bitrateType = sharedPreferences.getString( 135dea5173edfcc6fed0572ff61bbc116918988bd16glaznev@webrtc.org keyprefStartBitrateType, bitrateTypeDefault); 136dea5173edfcc6fed0572ff61bbc116918988bd16glaznev@webrtc.org if (bitrateType.equals(bitrateTypeDefault)) { 137dea5173edfcc6fed0572ff61bbc116918988bd16glaznev@webrtc.org bitratePreferenceValue.setEnabled(false); 138dea5173edfcc6fed0572ff61bbc116918988bd16glaznev@webrtc.org } else { 139dea5173edfcc6fed0572ff61bbc116918988bd16glaznev@webrtc.org bitratePreferenceValue.setEnabled(true); 140dea5173edfcc6fed0572ff61bbc116918988bd16glaznev@webrtc.org } 1412176db343cf269a6f1faa7f0b20e8b5ad001c654henrika@webrtc.org } 142243eb8e9af35f07befa733c86dd320f9f8b021bdglaznev@webrtc.org} 143