mirror of
https://github.com/cmclark00/RetroMusicPlayer.git
synced 2025-05-17 23:55:21 +01:00
Merge pull request #1674 from tomaThomas/local-broadcast-manager
Use LocalBroadcastManager for application internal communication
This commit is contained in:
commit
0489cd8190
7 changed files with 32 additions and 17 deletions
|
@ -19,6 +19,7 @@ import android.graphics.Color
|
||||||
import android.graphics.PorterDuff
|
import android.graphics.PorterDuff
|
||||||
import android.os.Bundle
|
import android.os.Bundle
|
||||||
import androidx.lifecycle.lifecycleScope
|
import androidx.lifecycle.lifecycleScope
|
||||||
|
import androidx.localbroadcastmanager.content.LocalBroadcastManager
|
||||||
import code.name.monkey.retromusic.R
|
import code.name.monkey.retromusic.R
|
||||||
import code.name.monkey.retromusic.activities.base.AbsMusicServiceActivity
|
import code.name.monkey.retromusic.activities.base.AbsMusicServiceActivity
|
||||||
import code.name.monkey.retromusic.databinding.ActivityDriveModeBinding
|
import code.name.monkey.retromusic.databinding.ActivityDriveModeBinding
|
||||||
|
@ -95,7 +96,8 @@ class DriveModeActivity : AbsMusicServiceActivity(), Callback {
|
||||||
} else {
|
} else {
|
||||||
repository.insertSongs(listOf(song.toSongEntity(playlist.playListId)))
|
repository.insertSongs(listOf(song.toSongEntity(playlist.playListId)))
|
||||||
}
|
}
|
||||||
sendBroadcast(Intent(MusicService.FAVORITE_STATE_CHANGED))
|
LocalBroadcastManager.getInstance(this@DriveModeActivity)
|
||||||
|
.sendBroadcast(Intent(MusicService.FAVORITE_STATE_CHANGED))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -20,6 +20,7 @@ import android.os.Bundle
|
||||||
import android.os.IBinder
|
import android.os.IBinder
|
||||||
import androidx.core.content.ContextCompat
|
import androidx.core.content.ContextCompat
|
||||||
import androidx.lifecycle.lifecycleScope
|
import androidx.lifecycle.lifecycleScope
|
||||||
|
import androidx.localbroadcastmanager.content.LocalBroadcastManager
|
||||||
import code.name.monkey.appthemehelper.util.VersionUtils
|
import code.name.monkey.appthemehelper.util.VersionUtils
|
||||||
import code.name.monkey.retromusic.R
|
import code.name.monkey.retromusic.R
|
||||||
import code.name.monkey.retromusic.db.toPlayCount
|
import code.name.monkey.retromusic.db.toPlayCount
|
||||||
|
@ -66,8 +67,8 @@ abstract class AbsMusicServiceActivity : AbsBaseActivity(), IMusicServiceEventLi
|
||||||
override fun onDestroy() {
|
override fun onDestroy() {
|
||||||
super.onDestroy()
|
super.onDestroy()
|
||||||
MusicPlayerRemote.unbindFromService(serviceToken)
|
MusicPlayerRemote.unbindFromService(serviceToken)
|
||||||
if (receiverRegistered) {
|
if (receiverRegistered && musicStateReceiver != null) {
|
||||||
unregisterReceiver(musicStateReceiver)
|
LocalBroadcastManager.getInstance(this).unregisterReceiver(musicStateReceiver!!)
|
||||||
receiverRegistered = false
|
receiverRegistered = false
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -97,7 +98,7 @@ abstract class AbsMusicServiceActivity : AbsBaseActivity(), IMusicServiceEventLi
|
||||||
filter.addAction(MEDIA_STORE_CHANGED)
|
filter.addAction(MEDIA_STORE_CHANGED)
|
||||||
filter.addAction(FAVORITE_STATE_CHANGED)
|
filter.addAction(FAVORITE_STATE_CHANGED)
|
||||||
|
|
||||||
ContextCompat.registerReceiver(this, musicStateReceiver, filter, ContextCompat.RECEIVER_NOT_EXPORTED)
|
LocalBroadcastManager.getInstance(this).registerReceiver(musicStateReceiver!!, filter)
|
||||||
receiverRegistered = true
|
receiverRegistered = true
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -107,8 +108,8 @@ abstract class AbsMusicServiceActivity : AbsBaseActivity(), IMusicServiceEventLi
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun onServiceDisconnected() {
|
override fun onServiceDisconnected() {
|
||||||
if (receiverRegistered) {
|
if (receiverRegistered && musicStateReceiver != null) {
|
||||||
unregisterReceiver(musicStateReceiver)
|
LocalBroadcastManager.getInstance(this).unregisterReceiver(musicStateReceiver!!)
|
||||||
receiverRegistered = false
|
receiverRegistered = false
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -176,7 +177,7 @@ abstract class AbsMusicServiceActivity : AbsBaseActivity(), IMusicServiceEventLi
|
||||||
"from_permissions_changed",
|
"from_permissions_changed",
|
||||||
true
|
true
|
||||||
) // just in case we need to know this at some point
|
) // just in case we need to know this at some point
|
||||||
sendBroadcast(intent)
|
LocalBroadcastManager.getInstance(this).sendBroadcast(intent)
|
||||||
logD("sendBroadcast $hasPermissions")
|
logD("sendBroadcast $hasPermissions")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -25,6 +25,7 @@ import android.graphics.drawable.BitmapDrawable
|
||||||
import android.graphics.drawable.Drawable
|
import android.graphics.drawable.Drawable
|
||||||
import android.widget.RemoteViews
|
import android.widget.RemoteViews
|
||||||
import androidx.core.content.ContextCompat
|
import androidx.core.content.ContextCompat
|
||||||
|
import androidx.localbroadcastmanager.content.LocalBroadcastManager
|
||||||
import code.name.monkey.appthemehelper.util.VersionUtils
|
import code.name.monkey.appthemehelper.util.VersionUtils
|
||||||
import code.name.monkey.retromusic.R
|
import code.name.monkey.retromusic.R
|
||||||
import code.name.monkey.retromusic.model.Song
|
import code.name.monkey.retromusic.model.Song
|
||||||
|
@ -50,7 +51,7 @@ abstract class BaseAppWidget : AppWidgetProvider() {
|
||||||
updateIntent.putExtra(EXTRA_APP_WIDGET_NAME, NAME)
|
updateIntent.putExtra(EXTRA_APP_WIDGET_NAME, NAME)
|
||||||
updateIntent.putExtra(AppWidgetManager.EXTRA_APPWIDGET_IDS, appWidgetIds)
|
updateIntent.putExtra(AppWidgetManager.EXTRA_APPWIDGET_IDS, appWidgetIds)
|
||||||
updateIntent.addFlags(Intent.FLAG_RECEIVER_REGISTERED_ONLY)
|
updateIntent.addFlags(Intent.FLAG_RECEIVER_REGISTERED_ONLY)
|
||||||
context.sendBroadcast(updateIntent)
|
LocalBroadcastManager.getInstance(context).sendBroadcast(updateIntent)
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -33,6 +33,7 @@ import androidx.appcompat.widget.Toolbar
|
||||||
import androidx.core.os.bundleOf
|
import androidx.core.os.bundleOf
|
||||||
import androidx.core.view.isVisible
|
import androidx.core.view.isVisible
|
||||||
import androidx.lifecycle.lifecycleScope
|
import androidx.lifecycle.lifecycleScope
|
||||||
|
import androidx.localbroadcastmanager.content.LocalBroadcastManager
|
||||||
import androidx.navigation.findNavController
|
import androidx.navigation.findNavController
|
||||||
import androidx.navigation.navOptions
|
import androidx.navigation.navOptions
|
||||||
import androidx.viewpager.widget.ViewPager
|
import androidx.viewpager.widget.ViewPager
|
||||||
|
@ -273,7 +274,8 @@ abstract class AbsPlayerFragment(@LayoutRes layout: Int) : AbsMusicServiceFragme
|
||||||
libraryViewModel.insertSongs(listOf(song.toSongEntity(playlist.playListId)))
|
libraryViewModel.insertSongs(listOf(song.toSongEntity(playlist.playListId)))
|
||||||
}
|
}
|
||||||
libraryViewModel.forceReload(ReloadType.Playlists)
|
libraryViewModel.forceReload(ReloadType.Playlists)
|
||||||
requireContext().sendBroadcast(Intent(MusicService.FAVORITE_STATE_CHANGED))
|
LocalBroadcastManager.getInstance(requireContext())
|
||||||
|
.sendBroadcast(Intent(MusicService.FAVORITE_STATE_CHANGED))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -26,6 +26,7 @@ import android.widget.ImageButton
|
||||||
import android.widget.TextView
|
import android.widget.TextView
|
||||||
import androidx.appcompat.widget.PopupMenu
|
import androidx.appcompat.widget.PopupMenu
|
||||||
import androidx.lifecycle.lifecycleScope
|
import androidx.lifecycle.lifecycleScope
|
||||||
|
import androidx.localbroadcastmanager.content.LocalBroadcastManager
|
||||||
import code.name.monkey.appthemehelper.util.ColorUtil
|
import code.name.monkey.appthemehelper.util.ColorUtil
|
||||||
import code.name.monkey.appthemehelper.util.VersionUtils
|
import code.name.monkey.appthemehelper.util.VersionUtils
|
||||||
import code.name.monkey.retromusic.R
|
import code.name.monkey.retromusic.R
|
||||||
|
@ -256,7 +257,8 @@ class FullPlaybackControlsFragment :
|
||||||
libraryViewModel.insertSongs(listOf(song.toSongEntity(playlist.playListId)))
|
libraryViewModel.insertSongs(listOf(song.toSongEntity(playlist.playListId)))
|
||||||
}
|
}
|
||||||
libraryViewModel.forceReload(ReloadType.Playlists)
|
libraryViewModel.forceReload(ReloadType.Playlists)
|
||||||
requireContext().sendBroadcast(Intent(MusicService.FAVORITE_STATE_CHANGED))
|
LocalBroadcastManager.getInstance(requireContext())
|
||||||
|
.sendBroadcast(Intent(MusicService.FAVORITE_STATE_CHANGED))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -26,6 +26,7 @@ import android.database.sqlite.SQLiteOpenHelper;
|
||||||
import android.os.Environment;
|
import android.os.Environment;
|
||||||
|
|
||||||
import androidx.annotation.NonNull;
|
import androidx.annotation.NonNull;
|
||||||
|
import androidx.localbroadcastmanager.content.LocalBroadcastManager;
|
||||||
|
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
|
@ -155,7 +156,7 @@ public class BlacklistStore extends SQLiteOpenHelper {
|
||||||
}
|
}
|
||||||
|
|
||||||
private void notifyMediaStoreChanged() {
|
private void notifyMediaStoreChanged() {
|
||||||
context.sendBroadcast(new Intent(MEDIA_STORE_CHANGED));
|
LocalBroadcastManager.getInstance(context).sendBroadcast(new Intent(MEDIA_STORE_CHANGED));
|
||||||
}
|
}
|
||||||
|
|
||||||
@NonNull
|
@NonNull
|
||||||
|
|
|
@ -42,6 +42,7 @@ import androidx.core.content.ContextCompat
|
||||||
import androidx.core.content.edit
|
import androidx.core.content.edit
|
||||||
import androidx.core.content.getSystemService
|
import androidx.core.content.getSystemService
|
||||||
import androidx.core.os.BundleCompat
|
import androidx.core.os.BundleCompat
|
||||||
|
import androidx.localbroadcastmanager.content.LocalBroadcastManager
|
||||||
import androidx.media.MediaBrowserServiceCompat
|
import androidx.media.MediaBrowserServiceCompat
|
||||||
import androidx.preference.PreferenceManager
|
import androidx.preference.PreferenceManager
|
||||||
import code.name.monkey.appthemehelper.util.VersionUtils
|
import code.name.monkey.appthemehelper.util.VersionUtils
|
||||||
|
@ -287,8 +288,12 @@ class MusicService : MediaBrowserServiceCompat(),
|
||||||
setupMediaSession()
|
setupMediaSession()
|
||||||
|
|
||||||
uiThreadHandler = Handler(Looper.getMainLooper())
|
uiThreadHandler = Handler(Looper.getMainLooper())
|
||||||
ContextCompat.registerReceiver(this, widgetIntentReceiver, IntentFilter(APP_WIDGET_UPDATE), ContextCompat.RECEIVER_NOT_EXPORTED)
|
LocalBroadcastManager.getInstance(this).registerReceiver(
|
||||||
ContextCompat.registerReceiver(this, updateFavoriteReceiver, IntentFilter(FAVORITE_STATE_CHANGED), ContextCompat.RECEIVER_NOT_EXPORTED)
|
widgetIntentReceiver, IntentFilter(APP_WIDGET_UPDATE)
|
||||||
|
)
|
||||||
|
LocalBroadcastManager.getInstance(this).registerReceiver(
|
||||||
|
updateFavoriteReceiver, IntentFilter(FAVORITE_STATE_CHANGED)
|
||||||
|
)
|
||||||
registerReceiver(lockScreenReceiver, IntentFilter(Intent.ACTION_SCREEN_ON))
|
registerReceiver(lockScreenReceiver, IntentFilter(Intent.ACTION_SCREEN_ON))
|
||||||
sessionToken = mediaSession?.sessionToken
|
sessionToken = mediaSession?.sessionToken
|
||||||
notificationManager = getSystemService()
|
notificationManager = getSystemService()
|
||||||
|
@ -318,8 +323,8 @@ class MusicService : MediaBrowserServiceCompat(),
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun onDestroy() {
|
override fun onDestroy() {
|
||||||
unregisterReceiver(widgetIntentReceiver)
|
LocalBroadcastManager.getInstance(this).unregisterReceiver(widgetIntentReceiver)
|
||||||
unregisterReceiver(updateFavoriteReceiver)
|
LocalBroadcastManager.getInstance(this).unregisterReceiver(updateFavoriteReceiver)
|
||||||
unregisterReceiver(lockScreenReceiver)
|
unregisterReceiver(lockScreenReceiver)
|
||||||
if (headsetReceiverRegistered) {
|
if (headsetReceiverRegistered) {
|
||||||
unregisterReceiver(headsetReceiver)
|
unregisterReceiver(headsetReceiver)
|
||||||
|
@ -837,7 +842,8 @@ class MusicService : MediaBrowserServiceCompat(),
|
||||||
fun toggleFavorite() {
|
fun toggleFavorite() {
|
||||||
serviceScope.launch {
|
serviceScope.launch {
|
||||||
toggleFavorite(currentSong)
|
toggleFavorite(currentSong)
|
||||||
sendBroadcast(Intent(FAVORITE_STATE_CHANGED))
|
LocalBroadcastManager.getInstance(this@MusicService)
|
||||||
|
.sendBroadcast(Intent(FAVORITE_STATE_CHANGED))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1311,7 +1317,7 @@ class MusicService : MediaBrowserServiceCompat(),
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun sendChangeInternal(what: String) {
|
private fun sendChangeInternal(what: String) {
|
||||||
sendBroadcast(Intent(what))
|
LocalBroadcastManager.getInstance(this).sendBroadcast(Intent(what))
|
||||||
appWidgetBig.notifyChange(this, what)
|
appWidgetBig.notifyChange(this, what)
|
||||||
appWidgetClassic.notifyChange(this, what)
|
appWidgetClassic.notifyChange(this, what)
|
||||||
appWidgetSmall.notifyChange(this, what)
|
appWidgetSmall.notifyChange(this, what)
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue