Ignore music metadata updates without artist
This commit is contained in:
parent
dbc1444d7f
commit
004212f8c9
@ -6,7 +6,7 @@ import android.content.Intent
|
|||||||
import android.graphics.Bitmap
|
import android.graphics.Bitmap
|
||||||
import android.graphics.BitmapFactory
|
import android.graphics.BitmapFactory
|
||||||
import android.media.AudioManager
|
import android.media.AudioManager
|
||||||
import android.os.Bundle
|
import android.net.Uri
|
||||||
import android.support.v4.media.session.MediaSessionCompat
|
import android.support.v4.media.session.MediaSessionCompat
|
||||||
import android.util.Log
|
import android.util.Log
|
||||||
import android.view.KeyEvent
|
import android.view.KeyEvent
|
||||||
@ -17,11 +17,11 @@ import androidx.media2.common.MediaItem
|
|||||||
import androidx.media2.common.MediaMetadata
|
import androidx.media2.common.MediaMetadata
|
||||||
import androidx.media2.common.SessionPlayer
|
import androidx.media2.common.SessionPlayer
|
||||||
import androidx.media2.session.MediaController
|
import androidx.media2.session.MediaController
|
||||||
import androidx.media2.session.SessionCommand
|
|
||||||
import androidx.media2.session.SessionCommandGroup
|
import androidx.media2.session.SessionCommandGroup
|
||||||
import androidx.media2.session.SessionResult
|
import de.mm20.launcher2.ktx.asBitmap
|
||||||
import kotlinx.coroutines.*
|
import kotlinx.coroutines.*
|
||||||
import java.io.File
|
import java.io.File
|
||||||
|
import java.io.FileNotFoundException
|
||||||
import java.util.concurrent.Executors
|
import java.util.concurrent.Executors
|
||||||
|
|
||||||
class MusicRepository(val context: Context) {
|
class MusicRepository(val context: Context) {
|
||||||
@ -48,9 +48,9 @@ class MusicRepository(val context: Context) {
|
|||||||
if (token.toString() == lastToken.toString()) return
|
if (token.toString() == lastToken.toString()) return
|
||||||
mediaController?.close()
|
mediaController?.close()
|
||||||
mediaController = MediaController.Builder(context)
|
mediaController = MediaController.Builder(context)
|
||||||
.setSessionCompatToken(token)
|
.setSessionCompatToken(token)
|
||||||
.setControllerCallback(Executors.newSingleThreadExecutor(), mediaSessionCallback)
|
.setControllerCallback(Executors.newSingleThreadExecutor(), mediaSessionCallback)
|
||||||
.build()
|
.build()
|
||||||
lastToken = token.toString()
|
lastToken = token.toString()
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -63,7 +63,10 @@ class MusicRepository(val context: Context) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private val mediaSessionCallback = object : MediaController.ControllerCallback() {
|
private val mediaSessionCallback = object : MediaController.ControllerCallback() {
|
||||||
override fun onConnected(controller: MediaController, allowedCommands: SessionCommandGroup) {
|
override fun onConnected(
|
||||||
|
controller: MediaController,
|
||||||
|
allowedCommands: SessionCommandGroup
|
||||||
|
) {
|
||||||
super.onConnected(controller, allowedCommands)
|
super.onConnected(controller, allowedCommands)
|
||||||
updateMetadata()
|
updateMetadata()
|
||||||
updateState()
|
updateState()
|
||||||
@ -79,7 +82,10 @@ class MusicRepository(val context: Context) {
|
|||||||
updateState()
|
updateState()
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun onPlaybackInfoChanged(controller: MediaController, info: MediaController.PlaybackInfo) {
|
override fun onPlaybackInfoChanged(
|
||||||
|
controller: MediaController,
|
||||||
|
info: MediaController.PlaybackInfo
|
||||||
|
) {
|
||||||
super.onPlaybackInfoChanged(controller, info)
|
super.onPlaybackInfoChanged(controller, info)
|
||||||
Log.d("MM20", "CurrentPosition" + controller.currentPosition.toString())
|
Log.d("MM20", "CurrentPosition" + controller.currentPosition.toString())
|
||||||
}
|
}
|
||||||
@ -105,11 +111,12 @@ class MusicRepository(val context: Context) {
|
|||||||
private fun updateMetadata() {
|
private fun updateMetadata() {
|
||||||
val metadata = mediaController?.currentMediaItem?.metadata ?: return
|
val metadata = mediaController?.currentMediaItem?.metadata ?: return
|
||||||
val title = metadata.getString(MediaMetadata.METADATA_KEY_DISPLAY_TITLE)
|
val title = metadata.getString(MediaMetadata.METADATA_KEY_DISPLAY_TITLE)
|
||||||
?: metadata.getString(MediaMetadata.METADATA_KEY_TITLE)
|
?: metadata.getString(MediaMetadata.METADATA_KEY_TITLE)
|
||||||
val artist = metadata.getString(MediaMetadata.METADATA_KEY_ARTIST)
|
val artist = metadata.getString(MediaMetadata.METADATA_KEY_ARTIST)
|
||||||
?: metadata.getString(MediaMetadata.METADATA_KEY_COMPOSER)
|
?: metadata.getString(MediaMetadata.METADATA_KEY_COMPOSER)
|
||||||
?: metadata.getString(MediaMetadata.METADATA_KEY_AUTHOR)
|
?: metadata.getString(MediaMetadata.METADATA_KEY_AUTHOR)
|
||||||
?: metadata.getString(MediaMetadata.METADATA_KEY_WRITER)
|
?: metadata.getString(MediaMetadata.METADATA_KEY_WRITER)
|
||||||
|
?: return
|
||||||
val album = metadata.getString(MediaMetadata.METADATA_KEY_ALBUM)
|
val album = metadata.getString(MediaMetadata.METADATA_KEY_ALBUM)
|
||||||
|
|
||||||
lastPlayer = mediaController?.connectedToken?.packageName ?: lastPlayer
|
lastPlayer = mediaController?.connectedToken?.packageName ?: lastPlayer
|
||||||
@ -226,21 +233,28 @@ class MusicRepository(val context: Context) {
|
|||||||
return it
|
return it
|
||||||
}
|
}
|
||||||
val intent = Intent(Intent.ACTION_MAIN)
|
val intent = Intent(Intent.ACTION_MAIN)
|
||||||
.setPackage(lastPlayer)
|
.setPackage(lastPlayer)
|
||||||
.addCategory(Intent.CATEGORY_APP_MUSIC)
|
.addCategory(Intent.CATEGORY_APP_MUSIC)
|
||||||
.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
|
.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
|
||||||
|
|
||||||
return PendingIntent.getActivity(context, 0, intent, PendingIntent.FLAG_ONE_SHOT or PendingIntent.FLAG_IMMUTABLE)
|
return PendingIntent.getActivity(
|
||||||
|
context,
|
||||||
|
0,
|
||||||
|
intent,
|
||||||
|
PendingIntent.FLAG_ONE_SHOT or PendingIntent.FLAG_IMMUTABLE
|
||||||
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
fun openPlayerChooser(context: Context) {
|
fun openPlayerChooser(context: Context) {
|
||||||
context.startActivity(Intent.createChooser(
|
context.startActivity(
|
||||||
|
Intent.createChooser(
|
||||||
Intent(Intent.ACTION_MAIN)
|
Intent(Intent.ACTION_MAIN)
|
||||||
.apply {
|
.apply {
|
||||||
addCategory(Intent.CATEGORY_APP_MUSIC)
|
addCategory(Intent.CATEGORY_APP_MUSIC)
|
||||||
flags = Intent.FLAG_ACTIVITY_NEW_TASK
|
flags = Intent.FLAG_ACTIVITY_NEW_TASK
|
||||||
},
|
},
|
||||||
null)
|
null
|
||||||
|
)
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user