From 4a6ea47457af10ebc81f5ffa3745a21d023c4312 Mon Sep 17 00:00:00 2001 From: CappielloAntonio Date: Sun, 12 Sep 2021 12:14:36 +0200 Subject: [PATCH] Check network connection type before choosing the default bitrate and transcoding format --- .../cappielloantonio/play/util/MusicUtil.java | 30 ++++++++++++------- .../play/util/PreferenceUtil.java | 11 +++++-- app/src/main/res/values/arrays.xml | 19 ++++++++++-- app/src/main/res/values/strings.xml | 3 +- app/src/main/res/xml/global_preferences.xml | 19 ++++++++---- 5 files changed, 61 insertions(+), 21 deletions(-) diff --git a/app/src/main/java/com/cappielloantonio/play/util/MusicUtil.java b/app/src/main/java/com/cappielloantonio/play/util/MusicUtil.java index c5013573..361ba638 100644 --- a/app/src/main/java/com/cappielloantonio/play/util/MusicUtil.java +++ b/app/src/main/java/com/cappielloantonio/play/util/MusicUtil.java @@ -2,7 +2,6 @@ package com.cappielloantonio.play.util; import android.content.Context; import android.net.ConnectivityManager; -import android.net.NetworkInfo; import android.text.Html; import android.util.Log; @@ -22,9 +21,11 @@ public class MusicUtil { private static final String TAG = "MusicUtil"; public static String getSongStreamUri(Context context, Song song) { + ConnectivityManager connectivityManager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE); + Map params = App.getSubsonicClientInstance(App.getInstance(), false).getParams(); - return App.getSubsonicClientInstance(App.getInstance(), false).getUrl() + + String uri = App.getSubsonicClientInstance(App.getInstance(), false).getUrl() + "stream" + "?u=" + params.get("u") + "&s=" + params.get("s") + @@ -32,8 +33,12 @@ public class MusicUtil { "&v=" + params.get("v") + "&c=" + params.get("c") + "&id=" + song.getId() + - "&maxBitRate=" + getBitratePreference(context) + - "&format=" + getFormatPreference(context); + "&maxBitRate=" + getBitratePreference(context, connectivityManager.getActiveNetworkInfo().getType()) + + "&format=" + getTranscodingFormatPreference(context, connectivityManager.getActiveNetworkInfo().getType()); + + Log.d(TAG, "getSongStreamUri(): " + uri); + + return uri; } public static MediaItem getSongDownloadItem(Song song) { @@ -131,10 +136,8 @@ public class MusicUtil { } } - private static String getBitratePreference(Context context) { - ConnectivityManager connectivityManager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE); - - switch (connectivityManager.getActiveNetworkInfo().getType()) { + private static String getBitratePreference(Context context, int connectionType) { + switch (connectionType) { case ConnectivityManager.TYPE_WIFI: return PreferenceUtil.getInstance(context).getMaxBitrateWifi(); case ConnectivityManager.TYPE_MOBILE: @@ -144,7 +147,14 @@ public class MusicUtil { } } - private static String getFormatPreference(Context context) { - return PreferenceUtil.getInstance(context).getAudioTranscodeFormat(); + private static String getTranscodingFormatPreference(Context context, int connectionType) { + switch (connectionType) { + case ConnectivityManager.TYPE_WIFI: + return PreferenceUtil.getInstance(context).getAudioTranscodeFormatWifi(); + case ConnectivityManager.TYPE_MOBILE: + return PreferenceUtil.getInstance(context).getAudioTranscodeFormatMobile(); + default: + return PreferenceUtil.getInstance(context).getAudioTranscodeFormatWifi(); + } } } diff --git a/app/src/main/java/com/cappielloantonio/play/util/PreferenceUtil.java b/app/src/main/java/com/cappielloantonio/play/util/PreferenceUtil.java index 1bce1882..71065ce7 100644 --- a/app/src/main/java/com/cappielloantonio/play/util/PreferenceUtil.java +++ b/app/src/main/java/com/cappielloantonio/play/util/PreferenceUtil.java @@ -23,7 +23,8 @@ public class PreferenceUtil { public static final String MEDIA_CACHE_SIZE = "media_cache_size"; public static final String MAX_BITRATE_WIFI = "max_bitrate_wifi"; public static final String MAX_BITRATE_MOBILE = "max_bitrate_mobile"; - public static final String AUDIO_TRANSCODE_FORMAT = "audio_transcode_format"; + public static final String AUDIO_TRANSCODE_FORMAT_WIFI = "audio_transcode_format_wifi"; + public static final String AUDIO_TRANSCODE_FORMAT_MOBILE = "audio_transcode_format_mobile"; public static final String WIFI_ONLY = "wifi_only"; private static PreferenceUtil sInstance; @@ -145,8 +146,12 @@ public class PreferenceUtil { return mPreferences.getString(MAX_BITRATE_MOBILE, "0"); } - public final String getAudioTranscodeFormat() { - return mPreferences.getString(AUDIO_TRANSCODE_FORMAT, "raw"); + public final String getAudioTranscodeFormatWifi() { + return mPreferences.getString(AUDIO_TRANSCODE_FORMAT_WIFI, "raw"); + } + + public final String getAudioTranscodeFormatMobile() { + return mPreferences.getString(AUDIO_TRANSCODE_FORMAT_MOBILE, "raw"); } public final boolean isWifiOnly() { diff --git a/app/src/main/res/values/arrays.xml b/app/src/main/res/values/arrays.xml index 3ce1d8b2..72d42607 100644 --- a/app/src/main/res/values/arrays.xml +++ b/app/src/main/res/values/arrays.xml @@ -109,14 +109,29 @@ 320 - + Original Opus AAC Mp3 Flac - + + raw + opus + aac + mp3 + flac + + + + Original + Opus + AAC + Mp3 + Flac + + raw opus aac diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index f8620427..434b367f 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -141,7 +141,8 @@ Add server Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. About - Transcode format + Transcode format in Mobile + Transcode format in WiFi Covers cache https://github.com/CappielloAntonio/play-for-subsonic Follow the development diff --git a/app/src/main/res/xml/global_preferences.xml b/app/src/main/res/xml/global_preferences.xml index 33eaf1f1..d80b30c4 100644 --- a/app/src/main/res/xml/global_preferences.xml +++ b/app/src/main/res/xml/global_preferences.xml @@ -57,11 +57,20 @@ + +