tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

SettingsActivity.java (14356B)


      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.ListPreference;
     18 import android.preference.Preference;
     19 import org.webrtc.Camera2Enumerator;
     20 import org.webrtc.audio.JavaAudioDeviceModule;
     21 
     22 /**
     23 * Settings activity for AppRTC.
     24 */
     25 public class SettingsActivity extends Activity implements OnSharedPreferenceChangeListener {
     26  private SettingsFragment settingsFragment;
     27  private String keyprefVideoCall;
     28  private String keyprefScreencapture;
     29  private String keyprefCamera2;
     30  private String keyprefResolution;
     31  private String keyprefFps;
     32  private String keyprefCaptureQualitySlider;
     33  private String keyprefMaxVideoBitrateType;
     34  private String keyprefMaxVideoBitrateValue;
     35  private String keyPrefVideoCodec;
     36  private String keyprefHwCodec;
     37  private String keyprefCaptureToTexture;
     38  private String keyprefFlexfec;
     39 
     40  private String keyprefStartAudioBitrateType;
     41  private String keyprefStartAudioBitrateValue;
     42  private String keyPrefAudioCodec;
     43  private String keyprefNoAudioProcessing;
     44  private String keyprefAecDump;
     45  private String keyprefEnableSaveInputAudioToFile;
     46  private String keyprefOpenSLES;
     47  private String keyprefDisableBuiltInAEC;
     48  private String keyprefDisableBuiltInAGC;
     49  private String keyprefDisableBuiltInNS;
     50  private String keyprefDisableWebRtcAGCAndHPF;
     51  private String keyprefSpeakerphone;
     52 
     53  private String keyPrefRoomServerUrl;
     54  private String keyPrefDisplayHud;
     55  private String keyPrefTracing;
     56  private String keyprefEnabledRtcEventLog;
     57 
     58  private String keyprefEnableDataChannel;
     59  private String keyprefOrdered;
     60  private String keyprefMaxRetransmitTimeMs;
     61  private String keyprefMaxRetransmits;
     62  private String keyprefDataProtocol;
     63  private String keyprefNegotiated;
     64  private String keyprefDataId;
     65 
     66  @Override
     67  protected void onCreate(Bundle savedInstanceState) {
     68    super.onCreate(savedInstanceState);
     69    keyprefVideoCall = getString(R.string.pref_videocall_key);
     70    keyprefScreencapture = getString(R.string.pref_screencapture_key);
     71    keyprefCamera2 = getString(R.string.pref_camera2_key);
     72    keyprefResolution = getString(R.string.pref_resolution_key);
     73    keyprefFps = getString(R.string.pref_fps_key);
     74    keyprefCaptureQualitySlider = getString(R.string.pref_capturequalityslider_key);
     75    keyprefMaxVideoBitrateType = getString(R.string.pref_maxvideobitrate_key);
     76    keyprefMaxVideoBitrateValue = getString(R.string.pref_maxvideobitratevalue_key);
     77    keyPrefVideoCodec = getString(R.string.pref_videocodec_key);
     78    keyprefHwCodec = getString(R.string.pref_hwcodec_key);
     79    keyprefCaptureToTexture = getString(R.string.pref_capturetotexture_key);
     80    keyprefFlexfec = getString(R.string.pref_flexfec_key);
     81 
     82    keyprefStartAudioBitrateType = getString(R.string.pref_startaudiobitrate_key);
     83    keyprefStartAudioBitrateValue = getString(R.string.pref_startaudiobitratevalue_key);
     84    keyPrefAudioCodec = getString(R.string.pref_audiocodec_key);
     85    keyprefNoAudioProcessing = getString(R.string.pref_noaudioprocessing_key);
     86    keyprefAecDump = getString(R.string.pref_aecdump_key);
     87    keyprefEnableSaveInputAudioToFile =
     88        getString(R.string.pref_enable_save_input_audio_to_file_key);
     89    keyprefOpenSLES = getString(R.string.pref_opensles_key);
     90    keyprefDisableBuiltInAEC = getString(R.string.pref_disable_built_in_aec_key);
     91    keyprefDisableBuiltInAGC = getString(R.string.pref_disable_built_in_agc_key);
     92    keyprefDisableBuiltInNS = getString(R.string.pref_disable_built_in_ns_key);
     93    keyprefDisableWebRtcAGCAndHPF = getString(R.string.pref_disable_webrtc_agc_and_hpf_key);
     94    keyprefSpeakerphone = getString(R.string.pref_speakerphone_key);
     95 
     96    keyprefEnableDataChannel = getString(R.string.pref_enable_datachannel_key);
     97    keyprefOrdered = getString(R.string.pref_ordered_key);
     98    keyprefMaxRetransmitTimeMs = getString(R.string.pref_max_retransmit_time_ms_key);
     99    keyprefMaxRetransmits = getString(R.string.pref_max_retransmits_key);
    100    keyprefDataProtocol = getString(R.string.pref_data_protocol_key);
    101    keyprefNegotiated = getString(R.string.pref_negotiated_key);
    102    keyprefDataId = getString(R.string.pref_data_id_key);
    103 
    104    keyPrefRoomServerUrl = getString(R.string.pref_room_server_url_key);
    105    keyPrefDisplayHud = getString(R.string.pref_displayhud_key);
    106    keyPrefTracing = getString(R.string.pref_tracing_key);
    107    keyprefEnabledRtcEventLog = getString(R.string.pref_enable_rtceventlog_key);
    108 
    109    // Display the fragment as the main content.
    110    settingsFragment = new SettingsFragment();
    111    getFragmentManager()
    112        .beginTransaction()
    113        .replace(android.R.id.content, settingsFragment)
    114        .commit();
    115  }
    116 
    117  @Override
    118  protected void onResume() {
    119    super.onResume();
    120    // Set summary to be the user-description for the selected value
    121    SharedPreferences sharedPreferences =
    122        settingsFragment.getPreferenceScreen().getSharedPreferences();
    123    sharedPreferences.registerOnSharedPreferenceChangeListener(this);
    124    updateSummaryB(sharedPreferences, keyprefVideoCall);
    125    updateSummaryB(sharedPreferences, keyprefScreencapture);
    126    updateSummaryB(sharedPreferences, keyprefCamera2);
    127    updateSummary(sharedPreferences, keyprefResolution);
    128    updateSummary(sharedPreferences, keyprefFps);
    129    updateSummaryB(sharedPreferences, keyprefCaptureQualitySlider);
    130    updateSummary(sharedPreferences, keyprefMaxVideoBitrateType);
    131    updateSummaryBitrate(sharedPreferences, keyprefMaxVideoBitrateValue);
    132    setVideoBitrateEnable(sharedPreferences);
    133    updateSummary(sharedPreferences, keyPrefVideoCodec);
    134    updateSummaryB(sharedPreferences, keyprefHwCodec);
    135    updateSummaryB(sharedPreferences, keyprefCaptureToTexture);
    136    updateSummaryB(sharedPreferences, keyprefFlexfec);
    137 
    138    updateSummary(sharedPreferences, keyprefStartAudioBitrateType);
    139    updateSummaryBitrate(sharedPreferences, keyprefStartAudioBitrateValue);
    140    setAudioBitrateEnable(sharedPreferences);
    141    updateSummary(sharedPreferences, keyPrefAudioCodec);
    142    updateSummaryB(sharedPreferences, keyprefNoAudioProcessing);
    143    updateSummaryB(sharedPreferences, keyprefAecDump);
    144    updateSummaryB(sharedPreferences, keyprefEnableSaveInputAudioToFile);
    145    updateSummaryB(sharedPreferences, keyprefOpenSLES);
    146    updateSummaryB(sharedPreferences, keyprefDisableBuiltInAEC);
    147    updateSummaryB(sharedPreferences, keyprefDisableBuiltInAGC);
    148    updateSummaryB(sharedPreferences, keyprefDisableBuiltInNS);
    149    updateSummaryB(sharedPreferences, keyprefDisableWebRtcAGCAndHPF);
    150    updateSummaryList(sharedPreferences, keyprefSpeakerphone);
    151 
    152    updateSummaryB(sharedPreferences, keyprefEnableDataChannel);
    153    updateSummaryB(sharedPreferences, keyprefOrdered);
    154    updateSummary(sharedPreferences, keyprefMaxRetransmitTimeMs);
    155    updateSummary(sharedPreferences, keyprefMaxRetransmits);
    156    updateSummary(sharedPreferences, keyprefDataProtocol);
    157    updateSummaryB(sharedPreferences, keyprefNegotiated);
    158    updateSummary(sharedPreferences, keyprefDataId);
    159    setDataChannelEnable(sharedPreferences);
    160 
    161    updateSummary(sharedPreferences, keyPrefRoomServerUrl);
    162    updateSummaryB(sharedPreferences, keyPrefDisplayHud);
    163    updateSummaryB(sharedPreferences, keyPrefTracing);
    164    updateSummaryB(sharedPreferences, keyprefEnabledRtcEventLog);
    165 
    166    if (!Camera2Enumerator.isSupported(this)) {
    167      Preference camera2Preference = settingsFragment.findPreference(keyprefCamera2);
    168 
    169      camera2Preference.setSummary(getString(R.string.pref_camera2_not_supported));
    170      camera2Preference.setEnabled(false);
    171    }
    172 
    173    if (!JavaAudioDeviceModule.isBuiltInAcousticEchoCancelerSupported()) {
    174      Preference disableBuiltInAECPreference =
    175          settingsFragment.findPreference(keyprefDisableBuiltInAEC);
    176 
    177      disableBuiltInAECPreference.setSummary(getString(R.string.pref_built_in_aec_not_available));
    178      disableBuiltInAECPreference.setEnabled(false);
    179    }
    180 
    181    Preference disableBuiltInAGCPreference =
    182        settingsFragment.findPreference(keyprefDisableBuiltInAGC);
    183 
    184    disableBuiltInAGCPreference.setSummary(getString(R.string.pref_built_in_agc_not_available));
    185    disableBuiltInAGCPreference.setEnabled(false);
    186 
    187    if (!JavaAudioDeviceModule.isBuiltInNoiseSuppressorSupported()) {
    188      Preference disableBuiltInNSPreference =
    189          settingsFragment.findPreference(keyprefDisableBuiltInNS);
    190 
    191      disableBuiltInNSPreference.setSummary(getString(R.string.pref_built_in_ns_not_available));
    192      disableBuiltInNSPreference.setEnabled(false);
    193    }
    194  }
    195 
    196  @Override
    197  protected void onPause() {
    198    super.onPause();
    199    SharedPreferences sharedPreferences =
    200        settingsFragment.getPreferenceScreen().getSharedPreferences();
    201    sharedPreferences.unregisterOnSharedPreferenceChangeListener(this);
    202  }
    203 
    204  @Override
    205  public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key) {
    206    // clang-format off
    207    if (key.equals(keyprefResolution)
    208        || key.equals(keyprefFps)
    209        || key.equals(keyprefMaxVideoBitrateType)
    210        || key.equals(keyPrefVideoCodec)
    211        || key.equals(keyprefStartAudioBitrateType)
    212        || key.equals(keyPrefAudioCodec)
    213        || key.equals(keyPrefRoomServerUrl)
    214        || key.equals(keyprefMaxRetransmitTimeMs)
    215        || key.equals(keyprefMaxRetransmits)
    216        || key.equals(keyprefDataProtocol)
    217        || key.equals(keyprefDataId)) {
    218      updateSummary(sharedPreferences, key);
    219    } else if (key.equals(keyprefMaxVideoBitrateValue)
    220        || key.equals(keyprefStartAudioBitrateValue)) {
    221      updateSummaryBitrate(sharedPreferences, key);
    222    } else if (key.equals(keyprefVideoCall)
    223        || key.equals(keyprefScreencapture)
    224        || key.equals(keyprefCamera2)
    225        || key.equals(keyPrefTracing)
    226        || key.equals(keyprefCaptureQualitySlider)
    227        || key.equals(keyprefHwCodec)
    228        || key.equals(keyprefCaptureToTexture)
    229        || key.equals(keyprefFlexfec)
    230        || key.equals(keyprefNoAudioProcessing)
    231        || key.equals(keyprefAecDump)
    232        || key.equals(keyprefEnableSaveInputAudioToFile)
    233        || key.equals(keyprefOpenSLES)
    234        || key.equals(keyprefDisableBuiltInAEC)
    235        || key.equals(keyprefDisableBuiltInAGC)
    236        || key.equals(keyprefDisableBuiltInNS)
    237        || key.equals(keyprefDisableWebRtcAGCAndHPF)
    238        || key.equals(keyPrefDisplayHud)
    239        || key.equals(keyprefEnableDataChannel)
    240        || key.equals(keyprefOrdered)
    241        || key.equals(keyprefNegotiated)
    242        || key.equals(keyprefEnabledRtcEventLog)) {
    243      updateSummaryB(sharedPreferences, key);
    244    } else if (key.equals(keyprefSpeakerphone)) {
    245      updateSummaryList(sharedPreferences, key);
    246    }
    247    // clang-format on
    248    if (key.equals(keyprefMaxVideoBitrateType)) {
    249      setVideoBitrateEnable(sharedPreferences);
    250    }
    251    if (key.equals(keyprefStartAudioBitrateType)) {
    252      setAudioBitrateEnable(sharedPreferences);
    253    }
    254    if (key.equals(keyprefEnableDataChannel)) {
    255      setDataChannelEnable(sharedPreferences);
    256    }
    257  }
    258 
    259  private void updateSummary(SharedPreferences sharedPreferences, String key) {
    260    Preference updatedPref = settingsFragment.findPreference(key);
    261    // Set summary to be the user-description for the selected value
    262    updatedPref.setSummary(sharedPreferences.getString(key, ""));
    263  }
    264 
    265  private void updateSummaryBitrate(SharedPreferences sharedPreferences, String key) {
    266    Preference updatedPref = settingsFragment.findPreference(key);
    267    updatedPref.setSummary(sharedPreferences.getString(key, "") + " kbps");
    268  }
    269 
    270  private void updateSummaryB(SharedPreferences sharedPreferences, String key) {
    271    Preference updatedPref = settingsFragment.findPreference(key);
    272    updatedPref.setSummary(sharedPreferences.getBoolean(key, true)
    273            ? getString(R.string.pref_value_enabled)
    274            : getString(R.string.pref_value_disabled));
    275  }
    276 
    277  private void updateSummaryList(SharedPreferences sharedPreferences, String key) {
    278    ListPreference updatedPref = (ListPreference) settingsFragment.findPreference(key);
    279    updatedPref.setSummary(updatedPref.getEntry());
    280  }
    281 
    282  private void setVideoBitrateEnable(SharedPreferences sharedPreferences) {
    283    Preference bitratePreferenceValue =
    284        settingsFragment.findPreference(keyprefMaxVideoBitrateValue);
    285    String bitrateTypeDefault = getString(R.string.pref_maxvideobitrate_default);
    286    String bitrateType =
    287        sharedPreferences.getString(keyprefMaxVideoBitrateType, bitrateTypeDefault);
    288    if (bitrateType.equals(bitrateTypeDefault)) {
    289      bitratePreferenceValue.setEnabled(false);
    290    } else {
    291      bitratePreferenceValue.setEnabled(true);
    292    }
    293  }
    294 
    295  private void setAudioBitrateEnable(SharedPreferences sharedPreferences) {
    296    Preference bitratePreferenceValue =
    297        settingsFragment.findPreference(keyprefStartAudioBitrateValue);
    298    String bitrateTypeDefault = getString(R.string.pref_startaudiobitrate_default);
    299    String bitrateType =
    300        sharedPreferences.getString(keyprefStartAudioBitrateType, bitrateTypeDefault);
    301    if (bitrateType.equals(bitrateTypeDefault)) {
    302      bitratePreferenceValue.setEnabled(false);
    303    } else {
    304      bitratePreferenceValue.setEnabled(true);
    305    }
    306  }
    307 
    308  private void setDataChannelEnable(SharedPreferences sharedPreferences) {
    309    boolean enabled = sharedPreferences.getBoolean(keyprefEnableDataChannel, true);
    310    settingsFragment.findPreference(keyprefOrdered).setEnabled(enabled);
    311    settingsFragment.findPreference(keyprefMaxRetransmitTimeMs).setEnabled(enabled);
    312    settingsFragment.findPreference(keyprefMaxRetransmits).setEnabled(enabled);
    313    settingsFragment.findPreference(keyprefDataProtocol).setEnabled(enabled);
    314    settingsFragment.findPreference(keyprefNegotiated).setEnabled(enabled);
    315    settingsFragment.findPreference(keyprefDataId).setEnabled(enabled);
    316  }
    317 }