| /* |
| * libjingle |
| * Copyright 2014 Google Inc. |
| * |
| * Redistribution and use in source and binary forms, with or without |
| * modification, are permitted provided that the following conditions are met: |
| * |
| * 1. Redistributions of source code must retain the above copyright notice, |
| * this list of conditions and the following disclaimer. |
| * 2. Redistributions in binary form must reproduce the above copyright notice, |
| * this list of conditions and the following disclaimer in the documentation |
| * and/or other materials provided with the distribution. |
| * 3. The name of the author may not be used to endorse or promote products |
| * derived from this software without specific prior written permission. |
| * |
| * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED |
| * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF |
| * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO |
| * EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, |
| * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, |
| * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; |
| * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, |
| * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR |
| * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF |
| * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
| */ |
| |
| package org.appspot.apprtc; |
| |
| import android.app.Activity; |
| import android.content.SharedPreferences; |
| import android.content.SharedPreferences.OnSharedPreferenceChangeListener; |
| import android.os.Bundle; |
| import android.preference.Preference; |
| |
| /** |
| * Settings activity for AppRTC. |
| */ |
| public class SettingsActivity extends Activity |
| implements OnSharedPreferenceChangeListener{ |
| private SettingsFragment settingsFragment; |
| private String keyprefVideoCall; |
| private String keyprefResolution; |
| private String keyprefFps; |
| private String keyprefStartVideoBitrateType; |
| private String keyprefStartVideoBitrateValue; |
| private String keyPrefVideoCodec; |
| private String keyprefHwCodec; |
| |
| private String keyprefStartAudioBitrateType; |
| private String keyprefStartAudioBitrateValue; |
| private String keyPrefAudioCodec; |
| |
| private String keyprefCpuUsageDetection; |
| private String keyPrefRoomServerUrl; |
| private String keyPrefDisplayHud; |
| |
| @Override |
| protected void onCreate(Bundle savedInstanceState) { |
| super.onCreate(savedInstanceState); |
| keyprefVideoCall = getString(R.string.pref_videocall_key); |
| keyprefResolution = getString(R.string.pref_resolution_key); |
| keyprefFps = getString(R.string.pref_fps_key); |
| keyprefStartVideoBitrateType = getString(R.string.pref_startvideobitrate_key); |
| keyprefStartVideoBitrateValue = getString(R.string.pref_startvideobitratevalue_key); |
| keyPrefVideoCodec = getString(R.string.pref_videocodec_key); |
| keyprefHwCodec = getString(R.string.pref_hwcodec_key); |
| |
| keyprefStartAudioBitrateType = getString(R.string.pref_startaudiobitrate_key); |
| keyprefStartAudioBitrateValue = getString(R.string.pref_startaudiobitratevalue_key); |
| keyPrefAudioCodec = getString(R.string.pref_audiocodec_key); |
| |
| keyprefCpuUsageDetection = getString(R.string.pref_cpu_usage_detection_key); |
| keyPrefRoomServerUrl = getString(R.string.pref_room_server_url_key); |
| keyPrefDisplayHud = getString(R.string.pref_displayhud_key); |
| |
| // Display the fragment as the main content. |
| settingsFragment = new SettingsFragment(); |
| getFragmentManager().beginTransaction() |
| .replace(android.R.id.content, settingsFragment) |
| .commit(); |
| } |
| |
| @Override |
| protected void onResume() { |
| super.onResume(); |
| // Set summary to be the user-description for the selected value |
| SharedPreferences sharedPreferences = |
| settingsFragment.getPreferenceScreen().getSharedPreferences(); |
| sharedPreferences.registerOnSharedPreferenceChangeListener(this); |
| updateSummaryB(sharedPreferences, keyprefVideoCall); |
| updateSummary(sharedPreferences, keyprefResolution); |
| updateSummary(sharedPreferences, keyprefFps); |
| updateSummary(sharedPreferences, keyprefStartVideoBitrateType); |
| updateSummaryBitrate(sharedPreferences, keyprefStartVideoBitrateValue); |
| setVideoBitrateEnable(sharedPreferences); |
| updateSummary(sharedPreferences, keyPrefVideoCodec); |
| updateSummaryB(sharedPreferences, keyprefHwCodec); |
| |
| updateSummary(sharedPreferences, keyprefStartAudioBitrateType); |
| updateSummaryBitrate(sharedPreferences, keyprefStartAudioBitrateValue); |
| setAudioBitrateEnable(sharedPreferences); |
| updateSummary(sharedPreferences, keyPrefAudioCodec); |
| |
| updateSummaryB(sharedPreferences, keyprefCpuUsageDetection); |
| updateSummary(sharedPreferences, keyPrefRoomServerUrl); |
| updateSummaryB(sharedPreferences, keyPrefDisplayHud); |
| } |
| |
| @Override |
| protected void onPause() { |
| super.onPause(); |
| SharedPreferences sharedPreferences = |
| settingsFragment.getPreferenceScreen().getSharedPreferences(); |
| sharedPreferences.unregisterOnSharedPreferenceChangeListener(this); |
| } |
| |
| @Override |
| public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, |
| String key) { |
| if (key.equals(keyprefResolution) |
| || key.equals(keyprefFps) |
| || key.equals(keyprefStartVideoBitrateType) |
| || key.equals(keyPrefVideoCodec) |
| || key.equals(keyprefStartAudioBitrateType) |
| || key.equals(keyPrefAudioCodec) |
| || key.equals(keyPrefRoomServerUrl)) { |
| updateSummary(sharedPreferences, key); |
| } else if (key.equals(keyprefStartVideoBitrateValue) |
| || key.equals(keyprefStartAudioBitrateValue)) { |
| updateSummaryBitrate(sharedPreferences, key); |
| } else if (key.equals(keyprefVideoCall) |
| || key.equals(keyprefHwCodec) |
| || key.equals(keyprefCpuUsageDetection) |
| || key.equals(keyPrefDisplayHud)) { |
| updateSummaryB(sharedPreferences, key); |
| } |
| if (key.equals(keyprefStartVideoBitrateType)) { |
| setVideoBitrateEnable(sharedPreferences); |
| } |
| if (key.equals(keyprefStartAudioBitrateType)) { |
| setAudioBitrateEnable(sharedPreferences); |
| } |
| } |
| |
| private void updateSummary(SharedPreferences sharedPreferences, String key) { |
| Preference updatedPref = settingsFragment.findPreference(key); |
| // Set summary to be the user-description for the selected value |
| updatedPref.setSummary(sharedPreferences.getString(key, "")); |
| } |
| |
| private void updateSummaryBitrate( |
| SharedPreferences sharedPreferences, String key) { |
| Preference updatedPref = settingsFragment.findPreference(key); |
| updatedPref.setSummary(sharedPreferences.getString(key, "") + " kbps"); |
| } |
| |
| private void updateSummaryB(SharedPreferences sharedPreferences, String key) { |
| Preference updatedPref = settingsFragment.findPreference(key); |
| updatedPref.setSummary(sharedPreferences.getBoolean(key, true) |
| ? getString(R.string.pref_value_enabled) |
| : getString(R.string.pref_value_disabled)); |
| } |
| |
| private void setVideoBitrateEnable(SharedPreferences sharedPreferences) { |
| Preference bitratePreferenceValue = |
| settingsFragment.findPreference(keyprefStartVideoBitrateValue); |
| String bitrateTypeDefault = getString(R.string.pref_startvideobitrate_default); |
| String bitrateType = sharedPreferences.getString( |
| keyprefStartVideoBitrateType, bitrateTypeDefault); |
| if (bitrateType.equals(bitrateTypeDefault)) { |
| bitratePreferenceValue.setEnabled(false); |
| } else { |
| bitratePreferenceValue.setEnabled(true); |
| } |
| } |
| |
| private void setAudioBitrateEnable(SharedPreferences sharedPreferences) { |
| Preference bitratePreferenceValue = |
| settingsFragment.findPreference(keyprefStartAudioBitrateValue); |
| String bitrateTypeDefault = getString(R.string.pref_startaudiobitrate_default); |
| String bitrateType = sharedPreferences.getString( |
| keyprefStartAudioBitrateType, bitrateTypeDefault); |
| if (bitrateType.equals(bitrateTypeDefault)) { |
| bitratePreferenceValue.setEnabled(false); |
| } else { |
| bitratePreferenceValue.setEnabled(true); |
| } |
| } |
| } |