diff --git a/app/src/main/java/com/limelight/preferences/PreferenceConfiguration.java b/app/src/main/java/com/limelight/preferences/PreferenceConfiguration.java index 6567b2ac..ec5e45c2 100644 --- a/app/src/main/java/com/limelight/preferences/PreferenceConfiguration.java +++ b/app/src/main/java/com/limelight/preferences/PreferenceConfiguration.java @@ -5,9 +5,9 @@ import android.content.SharedPreferences; import android.preference.PreferenceManager; public class PreferenceConfiguration { - private static final String RES_FPS_PREF_STRING = "list_resolution_fps"; + static final String RES_FPS_PREF_STRING = "list_resolution_fps"; private static final String DECODER_PREF_STRING = "list_decoders"; - private static final String BITRATE_PREF_STRING = "seekbar_bitrate"; + static final String BITRATE_PREF_STRING = "seekbar_bitrate"; private static final String STRETCH_PREF_STRING = "checkbox_stretch_video"; private static final String SOPS_PREF_STRING = "checkbox_enable_sops"; private static final String DISABLE_TOASTS_PREF_STRING = "checkbox_disable_warnings"; @@ -35,6 +35,25 @@ public class PreferenceConfiguration { public int decoder; public boolean stretchVideo, enableSops, playHostAudio, disableWarnings; + public static int getDefaultBitrate(String resFpsString) { + if (resFpsString.equals("720p30")) { + return BITRATE_DEFAULT_720_30; + } + else if (resFpsString.equals("720p60")) { + return BITRATE_DEFAULT_720_60; + } + else if (resFpsString.equals("1080p30")) { + return BITRATE_DEFAULT_1080_30; + } + else if (resFpsString.equals("1080p60")) { + return BITRATE_DEFAULT_1080_60; + } + else { + // Should never get here + return DEFAULT_BITRATE; + } + } + public static int getDefaultBitrate(Context context) { SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context); diff --git a/app/src/main/java/com/limelight/preferences/StreamSettings.java b/app/src/main/java/com/limelight/preferences/StreamSettings.java index e8198aa6..d1d2af6c 100644 --- a/app/src/main/java/com/limelight/preferences/StreamSettings.java +++ b/app/src/main/java/com/limelight/preferences/StreamSettings.java @@ -1,8 +1,11 @@ package com.limelight.preferences; +import android.content.SharedPreferences; import android.os.Bundle; import android.app.Activity; +import android.preference.Preference; import android.preference.PreferenceFragment; +import android.preference.PreferenceManager; import com.limelight.R; @@ -23,6 +26,26 @@ public class StreamSettings extends Activity { super.onCreate(savedInstanceState); addPreferencesFromResource(R.xml.preferences); + + // Add a listener to the FPS and resolution preference + // so the bitrate can be auto-adjusted + Preference pref = findPreference(PreferenceConfiguration.RES_FPS_PREF_STRING); + pref.setOnPreferenceChangeListener(new Preference.OnPreferenceChangeListener() { + @Override + public boolean onPreferenceChange(Preference preference, Object newValue) { + SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(SettingsFragment.this.getActivity()); + String valueStr = (String) newValue; + + // Write the new bitrate value + prefs.edit() + .putInt(PreferenceConfiguration.BITRATE_PREF_STRING, + PreferenceConfiguration.getDefaultBitrate(valueStr)) + .apply(); + + // Allow the original preference change to take place + return true; + } + }); } } }