Added setting to disable Now Playing List sending for incompatible bluetooth devices
This commit is contained in:
parent
8ab903c7d2
commit
77f857b1c6
|
@ -119,6 +119,7 @@ public final class Constants
|
|||
public static final String PREFERENCES_KEY_DISC_SORT = "discAndTrackSort";
|
||||
public static final String PREFERENCES_KEY_SEND_BLUETOOTH_NOTIFICATIONS = "sendBluetoothNotifications";
|
||||
public static final String PREFERENCES_KEY_SEND_BLUETOOTH_ALBUM_ART = "sendBluetoothAlbumArt";
|
||||
public static final String PREFERENCES_KEY_DISABLE_SEND_NOW_PLAYING_LIST = "disableNowPlayingListSending";
|
||||
public static final String PREFERENCES_KEY_VIEW_REFRESH = "viewRefresh";
|
||||
public static final String PREFERENCES_KEY_ASK_FOR_SHARE_DETAILS = "sharingAlwaysAskForDetails";
|
||||
public static final String PREFERENCES_KEY_DEFAULT_SHARE_DESCRIPTION = "sharingDefaultDescription";
|
||||
|
|
|
@ -43,7 +43,7 @@ class MediaSessionHandler : KoinComponent {
|
|||
private val applicationContext by inject<Context>()
|
||||
|
||||
private var referenceCount: Int = 0
|
||||
private var cachedPlaylist: Iterable<MusicDirectory.Entry>? = null
|
||||
private var cachedPlaylist: List<MediaSessionCompat.QueueItem>? = null
|
||||
private var playbackPositionDelayCount: Int = 0
|
||||
private var cachedPosition: Long = 0
|
||||
|
||||
|
@ -160,7 +160,7 @@ class MediaSessionHandler : KoinComponent {
|
|||
|
||||
// It seems to be the best practice to set this to true for the lifetime of the session
|
||||
mediaSession?.isActive = true
|
||||
if (cachedPlaylist != null) updateMediaSessionQueue(cachedPlaylist!!)
|
||||
if (cachedPlaylist != null) setMediaSessionQueue(cachedPlaylist)
|
||||
Timber.i("MediaSessionHandler.initialize Media Session created")
|
||||
}
|
||||
|
||||
|
@ -245,7 +245,11 @@ class MediaSessionHandler : KoinComponent {
|
|||
playbackStateBuilder.setActions(playbackActions!!)
|
||||
|
||||
cachedPlayingIndex = currentPlayingIndex
|
||||
if (currentPlayingIndex != null)
|
||||
setMediaSessionQueue(cachedPlaylist)
|
||||
if (
|
||||
currentPlayingIndex != null && cachedPlaylist != null &&
|
||||
!Util.getShouldDisableNowPlayingListSending()
|
||||
)
|
||||
playbackStateBuilder.setActiveQueueItemId(currentPlayingIndex)
|
||||
|
||||
// Save the playback state
|
||||
|
@ -254,18 +258,21 @@ class MediaSessionHandler : KoinComponent {
|
|||
|
||||
fun updateMediaSessionQueue(playlist: Iterable<MusicDirectory.Entry>) {
|
||||
// This call is cached because Downloader may initialize earlier than the MediaSession
|
||||
cachedPlaylist = playlist
|
||||
cachedPlaylist = playlist.mapIndexed { id, song ->
|
||||
MediaSessionCompat.QueueItem(
|
||||
Util.getMediaDescriptionForEntry(song),
|
||||
id.toLong()
|
||||
)
|
||||
}
|
||||
setMediaSessionQueue(cachedPlaylist)
|
||||
}
|
||||
|
||||
private fun setMediaSessionQueue(queue: List<MediaSessionCompat.QueueItem>?) {
|
||||
if (mediaSession == null) return
|
||||
if (Util.getShouldDisableNowPlayingListSending()) return
|
||||
|
||||
mediaSession?.setQueueTitle(applicationContext.getString(R.string.button_bar_now_playing))
|
||||
mediaSession?.setQueue(
|
||||
playlist.mapIndexed { id, song ->
|
||||
MediaSessionCompat.QueueItem(
|
||||
Util.getMediaDescriptionForEntry(song),
|
||||
id.toLong()
|
||||
)
|
||||
}
|
||||
)
|
||||
mediaSession?.setQueue(queue)
|
||||
}
|
||||
|
||||
fun updateMediaSessionPlaybackPosition(playbackPosition: Long) {
|
||||
|
@ -285,7 +292,10 @@ class MediaSessionHandler : KoinComponent {
|
|||
playbackStateBuilder.setState(playbackState!!, playbackPosition, 1.0f)
|
||||
playbackStateBuilder.setActions(playbackActions!!)
|
||||
|
||||
if (cachedPlayingIndex != null)
|
||||
if (
|
||||
cachedPlayingIndex != null && cachedPlaylist != null &&
|
||||
!Util.getShouldDisableNowPlayingListSending()
|
||||
)
|
||||
playbackStateBuilder.setActiveQueueItemId(cachedPlayingIndex!!)
|
||||
|
||||
mediaSession?.setPlaybackState(playbackStateBuilder.build())
|
||||
|
|
|
@ -1097,6 +1097,13 @@ object Util {
|
|||
return preferences.getBoolean(Constants.PREFERENCES_KEY_SEND_BLUETOOTH_ALBUM_ART, true)
|
||||
}
|
||||
|
||||
fun getShouldDisableNowPlayingListSending(): Boolean {
|
||||
val preferences = getPreferences()
|
||||
return preferences.getBoolean(
|
||||
Constants.PREFERENCES_KEY_DISABLE_SEND_NOW_PLAYING_LIST, false
|
||||
)
|
||||
}
|
||||
|
||||
@JvmStatic
|
||||
fun getViewRefreshInterval(): Int {
|
||||
val preferences = getPreferences()
|
||||
|
|
|
@ -284,6 +284,8 @@
|
|||
<string name="settings.search_title">Search Settings</string>
|
||||
<string name="settings.send_bluetooth_album_art_summary">Send album art over Bluetooth (May cause Bluetooth notifications to fail)</string>
|
||||
<string name="settings.send_bluetooth_album_art">Album Art Over Bluetooth</string>
|
||||
<string name="settings.disable_send_now_playing_list_summary">Now Playing List won\'t be sent to connected devices. This may restore compatibility with AVRCP 1.3 devices, when current track display is not updated</string>
|
||||
<string name="settings.disable_send_now_playing_list">Disable sending of Now Playing List</string>
|
||||
<string name="settings.send_bluetooth_notification_summary">Send playback notifications via Bluetooth</string>
|
||||
<string name="settings.send_bluetooth_notification">Send Bluetooth Notification</string>
|
||||
<string name="settings.server_manage_servers">Manage Servers</string>
|
||||
|
|
|
@ -179,6 +179,12 @@
|
|||
a:summary="@string/settings.send_bluetooth_album_art_summary"
|
||||
a:title="@string/settings.send_bluetooth_album_art"
|
||||
app:iconSpaceReserved="false"/>
|
||||
<CheckBoxPreference
|
||||
a:defaultValue="false"
|
||||
a:key="disableNowPlayingListSending"
|
||||
a:summary="@string/settings.disable_send_now_playing_list_summary"
|
||||
a:title="@string/settings.disable_send_now_playing_list"
|
||||
app:iconSpaceReserved="false"/>
|
||||
</PreferenceCategory>
|
||||
<PreferenceCategory
|
||||
a:title="@string/settings.sharing_title"
|
||||
|
|
Loading…
Reference in New Issue