Home | History | Annotate | Download | only in apprtc
      1 /*
      2  *  Copyright 2014 The WebRTC Project Authors. All rights reserved.
      3  *
      4  *  Use of this source code is governed by a BSD-style license
      5  *  that can be found in the LICENSE file in the root of the source
      6  *  tree. An additional intellectual property rights grant can be found
      7  *  in the file PATENTS.  All contributing project authors may
      8  *  be found in the AUTHORS file in the root of the source tree.
      9  */
     10 
     11 package org.appspot.apprtc;
     12 
     13 import android.app.Activity;
     14 import android.content.SharedPreferences;
     15 import android.content.SharedPreferences.OnSharedPreferenceChangeListener;
     16 import android.os.Bundle;
     17 import android.preference.Preference;
     18 
     19 /**
     20  * Settings activity for AppRTC.
     21  */
     22 public class SettingsActivity extends Activity
     23     implements OnSharedPreferenceChangeListener{
     24   private SettingsFragment settingsFragment;
     25   private String keyprefVideoCall;
     26   private String keyprefResolution;
     27   private String keyprefFps;
     28   private String keyprefCaptureQualitySlider;
     29   private String keyprefStartVideoBitrateType;
     30   private String keyprefStartVideoBitrateValue;
     31   private String keyPrefVideoCodec;
     32   private String keyprefHwCodec;
     33   private String keyprefCaptureToTexture;
     34 
     35   private String keyprefStartAudioBitrateType;
     36   private String keyprefStartAudioBitrateValue;
     37   private String keyPrefAudioCodec;
     38   private String keyprefNoAudioProcessing;
     39   private String keyprefAecDump;
     40   private String keyprefOpenSLES;
     41 
     42   private String keyPrefRoomServerUrl;
     43   private String keyPrefDisplayHud;
     44   private String keyPrefTracing;
     45 
     46   @Override
     47   protected void onCreate(Bundle savedInstanceState) {
     48     super.onCreate(savedInstanceState);
     49     keyprefVideoCall = getString(R.string.pref_videocall_key);
     50     keyprefResolution = getString(R.string.pref_resolution_key);
     51     keyprefFps = getString(R.string.pref_fps_key);
     52     keyprefCaptureQualitySlider = getString(R.string.pref_capturequalityslider_key);
     53     keyprefStartVideoBitrateType = getString(R.string.pref_startvideobitrate_key);
     54     keyprefStartVideoBitrateValue = getString(R.string.pref_startvideobitratevalue_key);
     55     keyPrefVideoCodec = getString(R.string.pref_videocodec_key);
     56     keyprefHwCodec = getString(R.string.pref_hwcodec_key);
     57     keyprefCaptureToTexture = getString(R.string.pref_capturetotexture_key);
     58 
     59     keyprefStartAudioBitrateType = getString(R.string.pref_startaudiobitrate_key);
     60     keyprefStartAudioBitrateValue = getString(R.string.pref_startaudiobitratevalue_key);
     61     keyPrefAudioCodec = getString(R.string.pref_audiocodec_key);
     62     keyprefNoAudioProcessing = getString(R.string.pref_noaudioprocessing_key);
     63     keyprefAecDump = getString(R.string.pref_aecdump_key);
     64     keyprefOpenSLES = getString(R.string.pref_opensles_key);
     65 
     66     keyPrefRoomServerUrl = getString(R.string.pref_room_server_url_key);
     67     keyPrefDisplayHud = getString(R.string.pref_displayhud_key);
     68     keyPrefTracing = getString(R.string.pref_tracing_key);
     69 
     70     // Display the fragment as the main content.
     71     settingsFragment = new SettingsFragment();
     72     getFragmentManager().beginTransaction()
     73         .replace(android.R.id.content, settingsFragment)
     74         .commit();
     75   }
     76 
     77   @Override
     78   protected void onResume() {
     79     super.onResume();
     80     // Set summary to be the user-description for the selected value
     81     SharedPreferences sharedPreferences =
     82         settingsFragment.getPreferenceScreen().getSharedPreferences();
     83     sharedPreferences.registerOnSharedPreferenceChangeListener(this);
     84     updateSummaryB(sharedPreferences, keyprefVideoCall);
     85     updateSummary(sharedPreferences, keyprefResolution);
     86     updateSummary(sharedPreferences, keyprefFps);
     87     updateSummaryB(sharedPreferences, keyprefCaptureQualitySlider);
     88     updateSummary(sharedPreferences, keyprefStartVideoBitrateType);
     89     updateSummaryBitrate(sharedPreferences, keyprefStartVideoBitrateValue);
     90     setVideoBitrateEnable(sharedPreferences);
     91     updateSummary(sharedPreferences, keyPrefVideoCodec);
     92     updateSummaryB(sharedPreferences, keyprefHwCodec);
     93     updateSummaryB(sharedPreferences, keyprefCaptureToTexture);
     94 
     95     updateSummary(sharedPreferences, keyprefStartAudioBitrateType);
     96     updateSummaryBitrate(sharedPreferences, keyprefStartAudioBitrateValue);
     97     setAudioBitrateEnable(sharedPreferences);
     98     updateSummary(sharedPreferences, keyPrefAudioCodec);
     99     updateSummaryB(sharedPreferences, keyprefNoAudioProcessing);
    100     updateSummaryB(sharedPreferences, keyprefAecDump);
    101     updateSummaryB(sharedPreferences, keyprefOpenSLES);
    102 
    103     updateSummary(sharedPreferences, keyPrefRoomServerUrl);
    104     updateSummaryB(sharedPreferences, keyPrefDisplayHud);
    105     updateSummaryB(sharedPreferences, keyPrefTracing);
    106   }
    107 
    108   @Override
    109   protected void onPause() {
    110     super.onPause();
    111     SharedPreferences sharedPreferences =
    112         settingsFragment.getPreferenceScreen().getSharedPreferences();
    113     sharedPreferences.unregisterOnSharedPreferenceChangeListener(this);
    114   }
    115 
    116   @Override
    117   public void onSharedPreferenceChanged(SharedPreferences sharedPreferences,
    118       String key) {
    119     if (key.equals(keyprefResolution)
    120         || key.equals(keyprefFps)
    121         || key.equals(keyprefStartVideoBitrateType)
    122         || key.equals(keyPrefVideoCodec)
    123         || key.equals(keyprefStartAudioBitrateType)
    124         || key.equals(keyPrefAudioCodec)
    125         || key.equals(keyPrefRoomServerUrl)) {
    126       updateSummary(sharedPreferences, key);
    127     } else if (key.equals(keyprefStartVideoBitrateValue)
    128         || key.equals(keyprefStartAudioBitrateValue)) {
    129       updateSummaryBitrate(sharedPreferences, key);
    130     } else if (key.equals(keyprefVideoCall)
    131         || key.equals(keyPrefTracing)
    132         || key.equals(keyprefCaptureQualitySlider)
    133         || key.equals(keyprefHwCodec)
    134         || key.equals(keyprefCaptureToTexture)
    135         || key.equals(keyprefNoAudioProcessing)
    136         || key.equals(keyprefAecDump)
    137         || key.equals(keyprefOpenSLES)
    138         || key.equals(keyPrefDisplayHud)) {
    139       updateSummaryB(sharedPreferences, key);
    140     }
    141     if (key.equals(keyprefStartVideoBitrateType)) {
    142       setVideoBitrateEnable(sharedPreferences);
    143     }
    144     if (key.equals(keyprefStartAudioBitrateType)) {
    145       setAudioBitrateEnable(sharedPreferences);
    146     }
    147   }
    148 
    149   private void updateSummary(SharedPreferences sharedPreferences, String key) {
    150     Preference updatedPref = settingsFragment.findPreference(key);
    151     // Set summary to be the user-description for the selected value
    152     updatedPref.setSummary(sharedPreferences.getString(key, ""));
    153   }
    154 
    155   private void updateSummaryBitrate(
    156       SharedPreferences sharedPreferences, String key) {
    157     Preference updatedPref = settingsFragment.findPreference(key);
    158     updatedPref.setSummary(sharedPreferences.getString(key, "") + " kbps");
    159   }
    160 
    161   private void updateSummaryB(SharedPreferences sharedPreferences, String key) {
    162     Preference updatedPref = settingsFragment.findPreference(key);
    163     updatedPref.setSummary(sharedPreferences.getBoolean(key, true)
    164         ? getString(R.string.pref_value_enabled)
    165         : getString(R.string.pref_value_disabled));
    166   }
    167 
    168   private void setVideoBitrateEnable(SharedPreferences sharedPreferences) {
    169     Preference bitratePreferenceValue =
    170         settingsFragment.findPreference(keyprefStartVideoBitrateValue);
    171     String bitrateTypeDefault = getString(R.string.pref_startvideobitrate_default);
    172     String bitrateType = sharedPreferences.getString(
    173         keyprefStartVideoBitrateType, bitrateTypeDefault);
    174     if (bitrateType.equals(bitrateTypeDefault)) {
    175       bitratePreferenceValue.setEnabled(false);
    176     } else {
    177       bitratePreferenceValue.setEnabled(true);
    178     }
    179   }
    180 
    181   private void setAudioBitrateEnable(SharedPreferences sharedPreferences) {
    182     Preference bitratePreferenceValue =
    183         settingsFragment.findPreference(keyprefStartAudioBitrateValue);
    184     String bitrateTypeDefault = getString(R.string.pref_startaudiobitrate_default);
    185     String bitrateType = sharedPreferences.getString(
    186         keyprefStartAudioBitrateType, bitrateTypeDefault);
    187     if (bitrateType.equals(bitrateTypeDefault)) {
    188       bitratePreferenceValue.setEnabled(false);
    189     } else {
    190       bitratePreferenceValue.setEnabled(true);
    191     }
    192   }
    193 }
    194