package com.quickblox.sample.groupchatwebrtc.activities; import android.content.Context; import android.content.Intent; import android.content.SharedPreferences; import android.os.Bundle; import android.preference.EditTextPreference; import android.preference.Preference; import android.view.View; import com.quickblox.sample.core.utils.Toaster; import com.quickblox.sample.groupchatwebrtc.R; import com.quickblox.sample.groupchatwebrtc.fragments.SettingsFragment; import com.quickblox.sample.groupchatwebrtc.view.SeekBarPreference; /** * QuickBlox team */ public class SettingsActivity extends BaseActivity implements SharedPreferences.OnSharedPreferenceChangeListener { private static final int MAX_VIDEO_START_BITRATE = 2000; private String bitrateStringKey; private SettingsFragment settingsFragment; public static void start(Context context) { Intent intent = new Intent(context, SettingsActivity.class); context.startActivity(intent); } @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); initActionBar(); // Display the fragment as the main content. settingsFragment = new SettingsFragment(); getFragmentManager().beginTransaction() .replace(android.R.id.content, settingsFragment) .commit(); bitrateStringKey = getString(R.string.pref_startbitratevalue_key); } private void initActionBar() { actionBar.setTitle(R.string.actionbar_title_settings); } @Override protected View getSnackbarAnchorView() { return null; } @Override protected void onResume() { super.onResume(); SharedPreferences sharedPreferences = settingsFragment.getPreferenceScreen().getSharedPreferences(); sharedPreferences.registerOnSharedPreferenceChangeListener(this); } @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(bitrateStringKey)) { int bitrateValue = sharedPreferences.getInt(bitrateStringKey, Integer.parseInt( getString(R.string.pref_startbitratevalue_default))); if (bitrateValue == 0){ setDefaultstartingBitrate(sharedPreferences); return; } int startBitrate = bitrateValue; if (startBitrate > MAX_VIDEO_START_BITRATE){ Toaster.longToast("Max value is:" + MAX_VIDEO_START_BITRATE); setDefaultstartingBitrate(sharedPreferences); } } } private void setDefaultstartingBitrate(SharedPreferences sharedPreferences){ SharedPreferences.Editor editor = sharedPreferences.edit(); editor.putInt(bitrateStringKey, Integer.parseInt(getString(R.string.pref_startbitratevalue_default))); editor.apply(); updateSummary(sharedPreferences, bitrateStringKey); } private void updateSummary(SharedPreferences sharedPreferences, String key) { Preference updatedPref = settingsFragment.findPreference(key); // Set summary to be the user-description for the selected value if (updatedPref instanceof EditTextPreference) { ((EditTextPreference) updatedPref).setText(sharedPreferences.getString(key, "")); } else if (updatedPref instanceof SeekBarPreference){ updatedPref.setSummary(String.valueOf(sharedPreferences.getInt(key, 0))); } else { updatedPref.setSummary(sharedPreferences.getString(key, "")); } } }