SettingsActivity.java revision 67e0cf15d323642516f40b619f6474db333524a7
1243eb8e9af35f07befa733c86dd320f9f8b021bdglaznev@webrtc.org/* 2a8736448970fedd82f051c6b2cc89185b755ddf3Donald E Curtis * Copyright 2014 The WebRTC Project Authors. All rights reserved. 3243eb8e9af35f07befa733c86dd320f9f8b021bdglaznev@webrtc.org * 4a8736448970fedd82f051c6b2cc89185b755ddf3Donald E Curtis * Use of this source code is governed by a BSD-style license 5a8736448970fedd82f051c6b2cc89185b755ddf3Donald E Curtis * that can be found in the LICENSE file in the root of the source 6a8736448970fedd82f051c6b2cc89185b755ddf3Donald E Curtis * tree. An additional intellectual property rights grant can be found 7a8736448970fedd82f051c6b2cc89185b755ddf3Donald E Curtis * in the file PATENTS. All contributing project authors may 8a8736448970fedd82f051c6b2cc89185b755ddf3Donald E Curtis * be found in the AUTHORS file in the root of the source tree. 9243eb8e9af35f07befa733c86dd320f9f8b021bdglaznev@webrtc.org */ 10243eb8e9af35f07befa733c86dd320f9f8b021bdglaznev@webrtc.org 11243eb8e9af35f07befa733c86dd320f9f8b021bdglaznev@webrtc.orgpackage org.appspot.apprtc; 12243eb8e9af35f07befa733c86dd320f9f8b021bdglaznev@webrtc.org 13243eb8e9af35f07befa733c86dd320f9f8b021bdglaznev@webrtc.orgimport android.app.Activity; 14243eb8e9af35f07befa733c86dd320f9f8b021bdglaznev@webrtc.orgimport android.content.SharedPreferences; 15243eb8e9af35f07befa733c86dd320f9f8b021bdglaznev@webrtc.orgimport android.content.SharedPreferences.OnSharedPreferenceChangeListener; 16243eb8e9af35f07befa733c86dd320f9f8b021bdglaznev@webrtc.orgimport android.os.Bundle; 17243eb8e9af35f07befa733c86dd320f9f8b021bdglaznev@webrtc.orgimport android.preference.Preference; 18243eb8e9af35f07befa733c86dd320f9f8b021bdglaznev@webrtc.org 195eb71eb4f470bac0cbae0e1be4db8c83bc16fcd9jiayl@webrtc.org/** 205eb71eb4f470bac0cbae0e1be4db8c83bc16fcd9jiayl@webrtc.org * Settings activity for AppRTC. 215eb71eb4f470bac0cbae0e1be4db8c83bc16fcd9jiayl@webrtc.org */ 22243eb8e9af35f07befa733c86dd320f9f8b021bdglaznev@webrtc.orgpublic class SettingsActivity extends Activity 23243eb8e9af35f07befa733c86dd320f9f8b021bdglaznev@webrtc.org implements OnSharedPreferenceChangeListener{ 24243eb8e9af35f07befa733c86dd320f9f8b021bdglaznev@webrtc.org private SettingsFragment settingsFragment; 25e3fccd4268d8e46c737f27a431c1dd263f312395glaznev@webrtc.org private String keyprefVideoCall; 26243eb8e9af35f07befa733c86dd320f9f8b021bdglaznev@webrtc.org private String keyprefResolution; 275f38c8d1b8e842652e55410333870acfc5395ea6glaznev@webrtc.org private String keyprefFps; 2867e0cf15d323642516f40b619f6474db333524a7Magnus Jedvert private String keyprefCaptureQualitySlider; 29e3fccd4268d8e46c737f27a431c1dd263f312395glaznev@webrtc.org private String keyprefStartVideoBitrateType; 30e3fccd4268d8e46c737f27a431c1dd263f312395glaznev@webrtc.org private String keyprefStartVideoBitrateValue; 3144ae4c8b07cdf06d20d5042326b90ec9b466b664glaznev@webrtc.org private String keyPrefVideoCodec; 32dea5173edfcc6fed0572ff61bbc116918988bd16glaznev@webrtc.org private String keyprefHwCodec; 33e3fccd4268d8e46c737f27a431c1dd263f312395glaznev@webrtc.org 34e3fccd4268d8e46c737f27a431c1dd263f312395glaznev@webrtc.org private String keyprefStartAudioBitrateType; 35e3fccd4268d8e46c737f27a431c1dd263f312395glaznev@webrtc.org private String keyprefStartAudioBitrateValue; 36e3fccd4268d8e46c737f27a431c1dd263f312395glaznev@webrtc.org private String keyPrefAudioCodec; 378a19f3dc62f4817404c322280d8f035de1adb56aNiklas Enbom private String keyprefNoAudioProcessing; 38e3fccd4268d8e46c737f27a431c1dd263f312395glaznev@webrtc.org 392176db343cf269a6f1faa7f0b20e8b5ad001c654henrika@webrtc.org private String keyprefCpuUsageDetection; 40a6f7ba6848302d142ba769615d12bbf77a13e6e6jiayl@webrtc.org private String keyPrefRoomServerUrl; 41bc40324d9c673f5ba4df78590d928be3b9c62418glaznev@webrtc.org private String keyPrefDisplayHud; 42243eb8e9af35f07befa733c86dd320f9f8b021bdglaznev@webrtc.org 43243eb8e9af35f07befa733c86dd320f9f8b021bdglaznev@webrtc.org @Override 44243eb8e9af35f07befa733c86dd320f9f8b021bdglaznev@webrtc.org protected void onCreate(Bundle savedInstanceState) { 45243eb8e9af35f07befa733c86dd320f9f8b021bdglaznev@webrtc.org super.onCreate(savedInstanceState); 46e3fccd4268d8e46c737f27a431c1dd263f312395glaznev@webrtc.org keyprefVideoCall = getString(R.string.pref_videocall_key); 47243eb8e9af35f07befa733c86dd320f9f8b021bdglaznev@webrtc.org keyprefResolution = getString(R.string.pref_resolution_key); 485f38c8d1b8e842652e55410333870acfc5395ea6glaznev@webrtc.org keyprefFps = getString(R.string.pref_fps_key); 4967e0cf15d323642516f40b619f6474db333524a7Magnus Jedvert keyprefCaptureQualitySlider = getString(R.string.pref_capturequalityslider_key); 50e3fccd4268d8e46c737f27a431c1dd263f312395glaznev@webrtc.org keyprefStartVideoBitrateType = getString(R.string.pref_startvideobitrate_key); 51e3fccd4268d8e46c737f27a431c1dd263f312395glaznev@webrtc.org keyprefStartVideoBitrateValue = getString(R.string.pref_startvideobitratevalue_key); 5244ae4c8b07cdf06d20d5042326b90ec9b466b664glaznev@webrtc.org keyPrefVideoCodec = getString(R.string.pref_videocodec_key); 53dea5173edfcc6fed0572ff61bbc116918988bd16glaznev@webrtc.org keyprefHwCodec = getString(R.string.pref_hwcodec_key); 54e3fccd4268d8e46c737f27a431c1dd263f312395glaznev@webrtc.org 55e3fccd4268d8e46c737f27a431c1dd263f312395glaznev@webrtc.org keyprefStartAudioBitrateType = getString(R.string.pref_startaudiobitrate_key); 56e3fccd4268d8e46c737f27a431c1dd263f312395glaznev@webrtc.org keyprefStartAudioBitrateValue = getString(R.string.pref_startaudiobitratevalue_key); 57e3fccd4268d8e46c737f27a431c1dd263f312395glaznev@webrtc.org keyPrefAudioCodec = getString(R.string.pref_audiocodec_key); 588a19f3dc62f4817404c322280d8f035de1adb56aNiklas Enbom keyprefNoAudioProcessing = getString(R.string.pref_noaudioprocessing_key); 59e3fccd4268d8e46c737f27a431c1dd263f312395glaznev@webrtc.org 602176db343cf269a6f1faa7f0b20e8b5ad001c654henrika@webrtc.org keyprefCpuUsageDetection = getString(R.string.pref_cpu_usage_detection_key); 61a6f7ba6848302d142ba769615d12bbf77a13e6e6jiayl@webrtc.org keyPrefRoomServerUrl = getString(R.string.pref_room_server_url_key); 62bc40324d9c673f5ba4df78590d928be3b9c62418glaznev@webrtc.org keyPrefDisplayHud = getString(R.string.pref_displayhud_key); 63243eb8e9af35f07befa733c86dd320f9f8b021bdglaznev@webrtc.org 64243eb8e9af35f07befa733c86dd320f9f8b021bdglaznev@webrtc.org // Display the fragment as the main content. 65243eb8e9af35f07befa733c86dd320f9f8b021bdglaznev@webrtc.org settingsFragment = new SettingsFragment(); 66243eb8e9af35f07befa733c86dd320f9f8b021bdglaznev@webrtc.org getFragmentManager().beginTransaction() 67243eb8e9af35f07befa733c86dd320f9f8b021bdglaznev@webrtc.org .replace(android.R.id.content, settingsFragment) 68243eb8e9af35f07befa733c86dd320f9f8b021bdglaznev@webrtc.org .commit(); 69243eb8e9af35f07befa733c86dd320f9f8b021bdglaznev@webrtc.org } 70243eb8e9af35f07befa733c86dd320f9f8b021bdglaznev@webrtc.org 71243eb8e9af35f07befa733c86dd320f9f8b021bdglaznev@webrtc.org @Override 72243eb8e9af35f07befa733c86dd320f9f8b021bdglaznev@webrtc.org protected void onResume() { 73243eb8e9af35f07befa733c86dd320f9f8b021bdglaznev@webrtc.org super.onResume(); 74243eb8e9af35f07befa733c86dd320f9f8b021bdglaznev@webrtc.org // Set summary to be the user-description for the selected value 75243eb8e9af35f07befa733c86dd320f9f8b021bdglaznev@webrtc.org SharedPreferences sharedPreferences = 76243eb8e9af35f07befa733c86dd320f9f8b021bdglaznev@webrtc.org settingsFragment.getPreferenceScreen().getSharedPreferences(); 77243eb8e9af35f07befa733c86dd320f9f8b021bdglaznev@webrtc.org sharedPreferences.registerOnSharedPreferenceChangeListener(this); 78e3fccd4268d8e46c737f27a431c1dd263f312395glaznev@webrtc.org updateSummaryB(sharedPreferences, keyprefVideoCall); 79243eb8e9af35f07befa733c86dd320f9f8b021bdglaznev@webrtc.org updateSummary(sharedPreferences, keyprefResolution); 805f38c8d1b8e842652e55410333870acfc5395ea6glaznev@webrtc.org updateSummary(sharedPreferences, keyprefFps); 8167e0cf15d323642516f40b619f6474db333524a7Magnus Jedvert updateSummaryB(sharedPreferences, keyprefCaptureQualitySlider); 82e3fccd4268d8e46c737f27a431c1dd263f312395glaznev@webrtc.org updateSummary(sharedPreferences, keyprefStartVideoBitrateType); 83e3fccd4268d8e46c737f27a431c1dd263f312395glaznev@webrtc.org updateSummaryBitrate(sharedPreferences, keyprefStartVideoBitrateValue); 84e3fccd4268d8e46c737f27a431c1dd263f312395glaznev@webrtc.org setVideoBitrateEnable(sharedPreferences); 8544ae4c8b07cdf06d20d5042326b90ec9b466b664glaznev@webrtc.org updateSummary(sharedPreferences, keyPrefVideoCodec); 86dea5173edfcc6fed0572ff61bbc116918988bd16glaznev@webrtc.org updateSummaryB(sharedPreferences, keyprefHwCodec); 87e3fccd4268d8e46c737f27a431c1dd263f312395glaznev@webrtc.org 88e3fccd4268d8e46c737f27a431c1dd263f312395glaznev@webrtc.org updateSummary(sharedPreferences, keyprefStartAudioBitrateType); 89e3fccd4268d8e46c737f27a431c1dd263f312395glaznev@webrtc.org updateSummaryBitrate(sharedPreferences, keyprefStartAudioBitrateValue); 90e3fccd4268d8e46c737f27a431c1dd263f312395glaznev@webrtc.org setAudioBitrateEnable(sharedPreferences); 91e3fccd4268d8e46c737f27a431c1dd263f312395glaznev@webrtc.org updateSummary(sharedPreferences, keyPrefAudioCodec); 928a19f3dc62f4817404c322280d8f035de1adb56aNiklas Enbom updateSummaryB(sharedPreferences, keyprefNoAudioProcessing); 93e3fccd4268d8e46c737f27a431c1dd263f312395glaznev@webrtc.org 942176db343cf269a6f1faa7f0b20e8b5ad001c654henrika@webrtc.org updateSummaryB(sharedPreferences, keyprefCpuUsageDetection); 9544ae4c8b07cdf06d20d5042326b90ec9b466b664glaznev@webrtc.org updateSummary(sharedPreferences, keyPrefRoomServerUrl); 96bc40324d9c673f5ba4df78590d928be3b9c62418glaznev@webrtc.org updateSummaryB(sharedPreferences, keyPrefDisplayHud); 97243eb8e9af35f07befa733c86dd320f9f8b021bdglaznev@webrtc.org } 98243eb8e9af35f07befa733c86dd320f9f8b021bdglaznev@webrtc.org 99243eb8e9af35f07befa733c86dd320f9f8b021bdglaznev@webrtc.org @Override 100243eb8e9af35f07befa733c86dd320f9f8b021bdglaznev@webrtc.org protected void onPause() { 101243eb8e9af35f07befa733c86dd320f9f8b021bdglaznev@webrtc.org super.onPause(); 102243eb8e9af35f07befa733c86dd320f9f8b021bdglaznev@webrtc.org SharedPreferences sharedPreferences = 103243eb8e9af35f07befa733c86dd320f9f8b021bdglaznev@webrtc.org settingsFragment.getPreferenceScreen().getSharedPreferences(); 104243eb8e9af35f07befa733c86dd320f9f8b021bdglaznev@webrtc.org sharedPreferences.unregisterOnSharedPreferenceChangeListener(this); 105243eb8e9af35f07befa733c86dd320f9f8b021bdglaznev@webrtc.org } 106243eb8e9af35f07befa733c86dd320f9f8b021bdglaznev@webrtc.org 107243eb8e9af35f07befa733c86dd320f9f8b021bdglaznev@webrtc.org @Override 108243eb8e9af35f07befa733c86dd320f9f8b021bdglaznev@webrtc.org public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, 109243eb8e9af35f07befa733c86dd320f9f8b021bdglaznev@webrtc.org String key) { 1105eb71eb4f470bac0cbae0e1be4db8c83bc16fcd9jiayl@webrtc.org if (key.equals(keyprefResolution) 1115eb71eb4f470bac0cbae0e1be4db8c83bc16fcd9jiayl@webrtc.org || key.equals(keyprefFps) 112e3fccd4268d8e46c737f27a431c1dd263f312395glaznev@webrtc.org || key.equals(keyprefStartVideoBitrateType) 113e3fccd4268d8e46c737f27a431c1dd263f312395glaznev@webrtc.org || key.equals(keyPrefVideoCodec) 114e3fccd4268d8e46c737f27a431c1dd263f312395glaznev@webrtc.org || key.equals(keyprefStartAudioBitrateType) 115e3fccd4268d8e46c737f27a431c1dd263f312395glaznev@webrtc.org || key.equals(keyPrefAudioCodec) 116e3fccd4268d8e46c737f27a431c1dd263f312395glaznev@webrtc.org || key.equals(keyPrefRoomServerUrl)) { 117243eb8e9af35f07befa733c86dd320f9f8b021bdglaznev@webrtc.org updateSummary(sharedPreferences, key); 118e3fccd4268d8e46c737f27a431c1dd263f312395glaznev@webrtc.org } else if (key.equals(keyprefStartVideoBitrateValue) 119e3fccd4268d8e46c737f27a431c1dd263f312395glaznev@webrtc.org || key.equals(keyprefStartAudioBitrateValue)) { 120dea5173edfcc6fed0572ff61bbc116918988bd16glaznev@webrtc.org updateSummaryBitrate(sharedPreferences, key); 121e3fccd4268d8e46c737f27a431c1dd263f312395glaznev@webrtc.org } else if (key.equals(keyprefVideoCall) 12267e0cf15d323642516f40b619f6474db333524a7Magnus Jedvert || key.equals(keyprefCaptureQualitySlider) 123e3fccd4268d8e46c737f27a431c1dd263f312395glaznev@webrtc.org || key.equals(keyprefHwCodec) 1248a19f3dc62f4817404c322280d8f035de1adb56aNiklas Enbom || key.equals(keyprefNoAudioProcessing) 125e3fccd4268d8e46c737f27a431c1dd263f312395glaznev@webrtc.org || key.equals(keyprefCpuUsageDetection) 126e3fccd4268d8e46c737f27a431c1dd263f312395glaznev@webrtc.org || key.equals(keyPrefDisplayHud)) { 1272176db343cf269a6f1faa7f0b20e8b5ad001c654henrika@webrtc.org updateSummaryB(sharedPreferences, key); 128243eb8e9af35f07befa733c86dd320f9f8b021bdglaznev@webrtc.org } 129e3fccd4268d8e46c737f27a431c1dd263f312395glaznev@webrtc.org if (key.equals(keyprefStartVideoBitrateType)) { 130e3fccd4268d8e46c737f27a431c1dd263f312395glaznev@webrtc.org setVideoBitrateEnable(sharedPreferences); 131e3fccd4268d8e46c737f27a431c1dd263f312395glaznev@webrtc.org } 132e3fccd4268d8e46c737f27a431c1dd263f312395glaznev@webrtc.org if (key.equals(keyprefStartAudioBitrateType)) { 133e3fccd4268d8e46c737f27a431c1dd263f312395glaznev@webrtc.org setAudioBitrateEnable(sharedPreferences); 134dea5173edfcc6fed0572ff61bbc116918988bd16glaznev@webrtc.org } 135243eb8e9af35f07befa733c86dd320f9f8b021bdglaznev@webrtc.org } 136243eb8e9af35f07befa733c86dd320f9f8b021bdglaznev@webrtc.org 137243eb8e9af35f07befa733c86dd320f9f8b021bdglaznev@webrtc.org private void updateSummary(SharedPreferences sharedPreferences, String key) { 138243eb8e9af35f07befa733c86dd320f9f8b021bdglaznev@webrtc.org Preference updatedPref = settingsFragment.findPreference(key); 139243eb8e9af35f07befa733c86dd320f9f8b021bdglaznev@webrtc.org // Set summary to be the user-description for the selected value 140243eb8e9af35f07befa733c86dd320f9f8b021bdglaznev@webrtc.org updatedPref.setSummary(sharedPreferences.getString(key, "")); 141243eb8e9af35f07befa733c86dd320f9f8b021bdglaznev@webrtc.org } 142243eb8e9af35f07befa733c86dd320f9f8b021bdglaznev@webrtc.org 143dea5173edfcc6fed0572ff61bbc116918988bd16glaznev@webrtc.org private void updateSummaryBitrate( 144dea5173edfcc6fed0572ff61bbc116918988bd16glaznev@webrtc.org SharedPreferences sharedPreferences, String key) { 145dea5173edfcc6fed0572ff61bbc116918988bd16glaznev@webrtc.org Preference updatedPref = settingsFragment.findPreference(key); 146dea5173edfcc6fed0572ff61bbc116918988bd16glaznev@webrtc.org updatedPref.setSummary(sharedPreferences.getString(key, "") + " kbps"); 147dea5173edfcc6fed0572ff61bbc116918988bd16glaznev@webrtc.org } 148dea5173edfcc6fed0572ff61bbc116918988bd16glaznev@webrtc.org 1492176db343cf269a6f1faa7f0b20e8b5ad001c654henrika@webrtc.org private void updateSummaryB(SharedPreferences sharedPreferences, String key) { 1502176db343cf269a6f1faa7f0b20e8b5ad001c654henrika@webrtc.org Preference updatedPref = settingsFragment.findPreference(key); 1512176db343cf269a6f1faa7f0b20e8b5ad001c654henrika@webrtc.org updatedPref.setSummary(sharedPreferences.getBoolean(key, true) 152dea5173edfcc6fed0572ff61bbc116918988bd16glaznev@webrtc.org ? getString(R.string.pref_value_enabled) 153dea5173edfcc6fed0572ff61bbc116918988bd16glaznev@webrtc.org : getString(R.string.pref_value_disabled)); 154dea5173edfcc6fed0572ff61bbc116918988bd16glaznev@webrtc.org } 155dea5173edfcc6fed0572ff61bbc116918988bd16glaznev@webrtc.org 156e3fccd4268d8e46c737f27a431c1dd263f312395glaznev@webrtc.org private void setVideoBitrateEnable(SharedPreferences sharedPreferences) { 157e3fccd4268d8e46c737f27a431c1dd263f312395glaznev@webrtc.org Preference bitratePreferenceValue = 158e3fccd4268d8e46c737f27a431c1dd263f312395glaznev@webrtc.org settingsFragment.findPreference(keyprefStartVideoBitrateValue); 159e3fccd4268d8e46c737f27a431c1dd263f312395glaznev@webrtc.org String bitrateTypeDefault = getString(R.string.pref_startvideobitrate_default); 160e3fccd4268d8e46c737f27a431c1dd263f312395glaznev@webrtc.org String bitrateType = sharedPreferences.getString( 161e3fccd4268d8e46c737f27a431c1dd263f312395glaznev@webrtc.org keyprefStartVideoBitrateType, bitrateTypeDefault); 162e3fccd4268d8e46c737f27a431c1dd263f312395glaznev@webrtc.org if (bitrateType.equals(bitrateTypeDefault)) { 163e3fccd4268d8e46c737f27a431c1dd263f312395glaznev@webrtc.org bitratePreferenceValue.setEnabled(false); 164e3fccd4268d8e46c737f27a431c1dd263f312395glaznev@webrtc.org } else { 165e3fccd4268d8e46c737f27a431c1dd263f312395glaznev@webrtc.org bitratePreferenceValue.setEnabled(true); 166e3fccd4268d8e46c737f27a431c1dd263f312395glaznev@webrtc.org } 167e3fccd4268d8e46c737f27a431c1dd263f312395glaznev@webrtc.org } 168e3fccd4268d8e46c737f27a431c1dd263f312395glaznev@webrtc.org 169e3fccd4268d8e46c737f27a431c1dd263f312395glaznev@webrtc.org private void setAudioBitrateEnable(SharedPreferences sharedPreferences) { 170dea5173edfcc6fed0572ff61bbc116918988bd16glaznev@webrtc.org Preference bitratePreferenceValue = 171e3fccd4268d8e46c737f27a431c1dd263f312395glaznev@webrtc.org settingsFragment.findPreference(keyprefStartAudioBitrateValue); 172e3fccd4268d8e46c737f27a431c1dd263f312395glaznev@webrtc.org String bitrateTypeDefault = getString(R.string.pref_startaudiobitrate_default); 173dea5173edfcc6fed0572ff61bbc116918988bd16glaznev@webrtc.org String bitrateType = sharedPreferences.getString( 174e3fccd4268d8e46c737f27a431c1dd263f312395glaznev@webrtc.org keyprefStartAudioBitrateType, bitrateTypeDefault); 175dea5173edfcc6fed0572ff61bbc116918988bd16glaznev@webrtc.org if (bitrateType.equals(bitrateTypeDefault)) { 176dea5173edfcc6fed0572ff61bbc116918988bd16glaznev@webrtc.org bitratePreferenceValue.setEnabled(false); 177dea5173edfcc6fed0572ff61bbc116918988bd16glaznev@webrtc.org } else { 178dea5173edfcc6fed0572ff61bbc116918988bd16glaznev@webrtc.org bitratePreferenceValue.setEnabled(true); 179dea5173edfcc6fed0572ff61bbc116918988bd16glaznev@webrtc.org } 1802176db343cf269a6f1faa7f0b20e8b5ad001c654henrika@webrtc.org } 181243eb8e9af35f07befa733c86dd320f9f8b021bdglaznev@webrtc.org} 182