diff --git a/ultrasonic/src/main/kotlin/org/moire/ultrasonic/service/DownloadTask.kt b/ultrasonic/src/main/kotlin/org/moire/ultrasonic/service/DownloadTask.kt
index 4cd4c7df..e36975b8 100644
--- a/ultrasonic/src/main/kotlin/org/moire/ultrasonic/service/DownloadTask.kt
+++ b/ultrasonic/src/main/kotlin/org/moire/ultrasonic/service/DownloadTask.kt
@@ -92,8 +92,8 @@ class DownloadTask(
// Attempt partial HTTP GET, appending to the file if it exists.
val (inStream, isPartial) = musicService.getDownloadInputStream(
downloadTrack.track, fileLength,
- Settings.maxBitRate,
- downloadTrack.pinned
+ if (downloadTrack.pinned) Settings.maxBitRatePinning else Settings.maxBitRate,
+ downloadTrack.pinned && Settings.pinWithHighestQuality
)
inputStream = inStream
diff --git a/ultrasonic/src/main/kotlin/org/moire/ultrasonic/util/Settings.kt b/ultrasonic/src/main/kotlin/org/moire/ultrasonic/util/Settings.kt
index d3aa70f9..5b179ec1 100644
--- a/ultrasonic/src/main/kotlin/org/moire/ultrasonic/util/Settings.kt
+++ b/ultrasonic/src/main/kotlin/org/moire/ultrasonic/util/Settings.kt
@@ -33,18 +33,23 @@ object Settings {
val maxBitRate: Int
get() {
return if (Util.isNetworkRestricted()) {
- maxMobileBitRate
+ maxBitRateMobile
} else {
- maxWifiBitRate
+ maxBitRateWifi
}
}
- private var maxWifiBitRate
+ private var maxBitRateWifi
by StringIntSetting(getKey(R.string.setting_key_max_bitrate_wifi))
- private var maxMobileBitRate
+ private var maxBitRateMobile
by StringIntSetting(getKey(R.string.setting_key_max_bitrate_mobile))
+ var maxBitRatePinning
+ by StringIntSetting(getKey(R.string.setting_key_max_bitrate_pinning))
+ val pinWithHighestQuality: Boolean
+ get() = (maxBitRatePinning == 0)
+
@JvmStatic
val preloadCount: Int
get() {
diff --git a/ultrasonic/src/main/res/values/setting_keys.xml b/ultrasonic/src/main/res/values/setting_keys.xml
index c18a9a92..0e135e5e 100644
--- a/ultrasonic/src/main/res/values/setting_keys.xml
+++ b/ultrasonic/src/main/res/values/setting_keys.xml
@@ -12,6 +12,7 @@
showTrackNumber
maxBitrateWifi
maxBitrateMobile
+ maxBitratePinning
cacheSize
customCacheLocation
cacheLocation
diff --git a/ultrasonic/src/main/res/values/strings.xml b/ultrasonic/src/main/res/values/strings.xml
index 394091ac..4f888cbb 100644
--- a/ultrasonic/src/main/res/values/strings.xml
+++ b/ultrasonic/src/main/res/values/strings.xml
@@ -233,6 +233,7 @@
Max Bitrate - Mobile
Unlimited
Max Bitrate - Wi-Fi
+ Max Bitrate - When pinning a song permanently
Max Songs
Respond to phone, headset and Bluetooth media buttons
Media Buttons
diff --git a/ultrasonic/src/main/res/xml/settings.xml b/ultrasonic/src/main/res/xml/settings.xml
index ee11bda0..692117c5 100644
--- a/ultrasonic/src/main/res/xml/settings.xml
+++ b/ultrasonic/src/main/res/xml/settings.xml
@@ -167,18 +167,25 @@
a:title="@string/settings.network_title"
app:iconSpaceReserved="false">
+