Compare commits

...

4 Commits

Author SHA1 Message Date
birdbird
291528a309 Merge branch 'selectQuality' into 'develop'
Add setting to control the max bitrate when pinning

Closes #894

See merge request ultrasonic/ultrasonic!1022
2023-05-20 19:38:21 +00:00
birdbird
2a7cdbeded Merge branch 'fixStars' into 'develop'
Fix StarRating when setting a rating through AutoMediaController

See merge request ultrasonic/ultrasonic!1023
2023-05-20 19:37:27 +00:00
birdbird
c09739cea4 Fix StarRating when setting a rating through AutoMediaController 2023-05-20 19:37:27 +00:00
tzugen
315271390f
Add setting to control the max bitrate when pinning 2023-05-20 21:28:28 +02:00
6 changed files with 30 additions and 11 deletions

View File

@ -18,6 +18,7 @@ import androidx.media3.common.MediaMetadata.FOLDER_TYPE_MIXED
import androidx.media3.common.MediaMetadata.FOLDER_TYPE_PLAYLISTS import androidx.media3.common.MediaMetadata.FOLDER_TYPE_PLAYLISTS
import androidx.media3.common.MediaMetadata.FOLDER_TYPE_TITLES import androidx.media3.common.MediaMetadata.FOLDER_TYPE_TITLES
import androidx.media3.common.Rating import androidx.media3.common.Rating
import androidx.media3.common.StarRating
import androidx.media3.session.CommandButton import androidx.media3.session.CommandButton
import androidx.media3.session.LibraryResult import androidx.media3.session.LibraryResult
import androidx.media3.session.MediaLibraryService import androidx.media3.session.MediaLibraryService
@ -296,7 +297,11 @@ class AutoMediaBrowserCallback(val libraryService: MediaLibraryService) :
): ListenableFuture<SessionResult> { ): ListenableFuture<SessionResult> {
val mediaItem = session.player.currentMediaItem val mediaItem = session.player.currentMediaItem
if (mediaItem != null) { if (mediaItem != null) {
mediaItem.toTrack().starred = (rating as HeartRating).isHeart if (rating is HeartRating) {
mediaItem.toTrack().starred = rating.isHeart
} else if (rating is StarRating) {
mediaItem.toTrack().userRating = rating.starRating.toInt()
}
return onSetRating( return onSetRating(
session, session,
controller, controller,

View File

@ -92,8 +92,8 @@ class DownloadTask(
// Attempt partial HTTP GET, appending to the file if it exists. // Attempt partial HTTP GET, appending to the file if it exists.
val (inStream, isPartial) = musicService.getDownloadInputStream( val (inStream, isPartial) = musicService.getDownloadInputStream(
downloadTrack.track, fileLength, downloadTrack.track, fileLength,
Settings.maxBitRate, if (downloadTrack.pinned) Settings.maxBitRatePinning else Settings.maxBitRate,
downloadTrack.pinned downloadTrack.pinned && Settings.pinWithHighestQuality
) )
inputStream = inStream inputStream = inStream

View File

@ -33,18 +33,23 @@ object Settings {
val maxBitRate: Int val maxBitRate: Int
get() { get() {
return if (Util.isNetworkRestricted()) { return if (Util.isNetworkRestricted()) {
maxMobileBitRate maxBitRateMobile
} else { } else {
maxWifiBitRate maxBitRateWifi
} }
} }
private var maxWifiBitRate private var maxBitRateWifi
by StringIntSetting(getKey(R.string.setting_key_max_bitrate_wifi)) 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)) 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 @JvmStatic
val preloadCount: Int val preloadCount: Int
get() { get() {

View File

@ -12,6 +12,7 @@
<string name="setting_key.show_track_number" translatable="false">showTrackNumber</string> <string name="setting_key.show_track_number" translatable="false">showTrackNumber</string>
<string name="setting_key.max_bitrate_wifi" translatable="false">maxBitrateWifi</string> <string name="setting_key.max_bitrate_wifi" translatable="false">maxBitrateWifi</string>
<string name="setting_key.max_bitrate_mobile" translatable="false">maxBitrateMobile</string> <string name="setting_key.max_bitrate_mobile" translatable="false">maxBitrateMobile</string>
<string name="setting_key.max_bitrate_pinning" translatable="false">maxBitratePinning</string>
<string name="setting_key.cache_size" translatable="false">cacheSize</string> <string name="setting_key.cache_size" translatable="false">cacheSize</string>
<string name="setting_key.custom_cache_location" translatable="false">customCacheLocation</string> <string name="setting_key.custom_cache_location" translatable="false">customCacheLocation</string>
<string name="setting_key.cache_location" translatable="false">cacheLocation</string> <string name="setting_key.cache_location" translatable="false">cacheLocation</string>

View File

@ -233,6 +233,7 @@
<string name="settings.max_bitrate_mobile">Max Bitrate - Mobile</string> <string name="settings.max_bitrate_mobile">Max Bitrate - Mobile</string>
<string name="settings.max_bitrate_unlimited">Unlimited</string> <string name="settings.max_bitrate_unlimited">Unlimited</string>
<string name="settings.max_bitrate_wifi">Max Bitrate - Wi-Fi</string> <string name="settings.max_bitrate_wifi">Max Bitrate - Wi-Fi</string>
<string name="settings.max_bitrate_pinning">Max Bitrate - When pinning a song permanently</string>
<string name="settings.max_songs">Max Songs</string> <string name="settings.max_songs">Max Songs</string>
<string name="settings.media_button_summary">Respond to phone, headset and Bluetooth media buttons</string> <string name="settings.media_button_summary">Respond to phone, headset and Bluetooth media buttons</string>
<string name="settings.media_button_title">Media Buttons</string> <string name="settings.media_button_title">Media Buttons</string>

View File

@ -167,18 +167,25 @@
a:title="@string/settings.network_title" a:title="@string/settings.network_title"
app:iconSpaceReserved="false"> app:iconSpaceReserved="false">
<ListPreference <ListPreference
a:defaultValue="0" a:defaultValue="256"
a:entries="@array/maxBitrateNames"
a:entryValues="@array/maxBitrateValues"
a:key="@string/setting_key.max_bitrate_mobile"
a:title="@string/settings.max_bitrate_mobile"
app:iconSpaceReserved="false"/>
<ListPreference
a:defaultValue="320"
a:entries="@array/maxBitrateNames" a:entries="@array/maxBitrateNames"
a:entryValues="@array/maxBitrateValues" a:entryValues="@array/maxBitrateValues"
a:key="@string/setting_key.max_bitrate_wifi" a:key="@string/setting_key.max_bitrate_wifi"
a:title="@string/settings.max_bitrate_wifi" a:title="@string/settings.max_bitrate_wifi"
app:iconSpaceReserved="false"/> app:iconSpaceReserved="false"/>
<ListPreference <ListPreference
a:defaultValue="0" a:defaultValue="320"
a:entries="@array/maxBitrateNames" a:entries="@array/maxBitrateNames"
a:entryValues="@array/maxBitrateValues" a:entryValues="@array/maxBitrateValues"
a:key="@string/setting_key.max_bitrate_mobile" a:key="@string/setting_key.max_bitrate_pinning"
a:title="@string/settings.max_bitrate_mobile" a:title="@string/settings.max_bitrate_pinning"
app:iconSpaceReserved="false"/> app:iconSpaceReserved="false"/>
<CheckBoxPreference <CheckBoxPreference
a:defaultValue="false" a:defaultValue="false"