Ignore music metadata updates without artist

This commit is contained in:
MM20 2021-10-10 14:08:43 +02:00
parent dbc1444d7f
commit 004212f8c9
No known key found for this signature in database
GPG Key ID: 0B61A8F2DEAFA389

View File

@ -6,7 +6,7 @@ import android.content.Intent
import android.graphics.Bitmap
import android.graphics.BitmapFactory
import android.media.AudioManager
import android.os.Bundle
import android.net.Uri
import android.support.v4.media.session.MediaSessionCompat
import android.util.Log
import android.view.KeyEvent
@ -17,11 +17,11 @@ import androidx.media2.common.MediaItem
import androidx.media2.common.MediaMetadata
import androidx.media2.common.SessionPlayer
import androidx.media2.session.MediaController
import androidx.media2.session.SessionCommand
import androidx.media2.session.SessionCommandGroup
import androidx.media2.session.SessionResult
import de.mm20.launcher2.ktx.asBitmap
import kotlinx.coroutines.*
import java.io.File
import java.io.FileNotFoundException
import java.util.concurrent.Executors
class MusicRepository(val context: Context) {
@ -48,9 +48,9 @@ class MusicRepository(val context: Context) {
if (token.toString() == lastToken.toString()) return
mediaController?.close()
mediaController = MediaController.Builder(context)
.setSessionCompatToken(token)
.setControllerCallback(Executors.newSingleThreadExecutor(), mediaSessionCallback)
.build()
.setSessionCompatToken(token)
.setControllerCallback(Executors.newSingleThreadExecutor(), mediaSessionCallback)
.build()
lastToken = token.toString()
}
@ -63,7 +63,10 @@ class MusicRepository(val context: Context) {
}
private val mediaSessionCallback = object : MediaController.ControllerCallback() {
override fun onConnected(controller: MediaController, allowedCommands: SessionCommandGroup) {
override fun onConnected(
controller: MediaController,
allowedCommands: SessionCommandGroup
) {
super.onConnected(controller, allowedCommands)
updateMetadata()
updateState()
@ -79,7 +82,10 @@ class MusicRepository(val context: Context) {
updateState()
}
override fun onPlaybackInfoChanged(controller: MediaController, info: MediaController.PlaybackInfo) {
override fun onPlaybackInfoChanged(
controller: MediaController,
info: MediaController.PlaybackInfo
) {
super.onPlaybackInfoChanged(controller, info)
Log.d("MM20", "CurrentPosition" + controller.currentPosition.toString())
}
@ -105,11 +111,12 @@ class MusicRepository(val context: Context) {
private fun updateMetadata() {
val metadata = mediaController?.currentMediaItem?.metadata ?: return
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)
?: metadata.getString(MediaMetadata.METADATA_KEY_COMPOSER)
?: metadata.getString(MediaMetadata.METADATA_KEY_AUTHOR)
?: metadata.getString(MediaMetadata.METADATA_KEY_WRITER)
?: metadata.getString(MediaMetadata.METADATA_KEY_COMPOSER)
?: metadata.getString(MediaMetadata.METADATA_KEY_AUTHOR)
?: metadata.getString(MediaMetadata.METADATA_KEY_WRITER)
?: return
val album = metadata.getString(MediaMetadata.METADATA_KEY_ALBUM)
lastPlayer = mediaController?.connectedToken?.packageName ?: lastPlayer
@ -226,21 +233,28 @@ class MusicRepository(val context: Context) {
return it
}
val intent = Intent(Intent.ACTION_MAIN)
.setPackage(lastPlayer)
.addCategory(Intent.CATEGORY_APP_MUSIC)
.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
.setPackage(lastPlayer)
.addCategory(Intent.CATEGORY_APP_MUSIC)
.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) {
context.startActivity(Intent.createChooser(
context.startActivity(
Intent.createChooser(
Intent(Intent.ACTION_MAIN)
.apply {
addCategory(Intent.CATEGORY_APP_MUSIC)
flags = Intent.FLAG_ACTIVITY_NEW_TASK
},
null)
.apply {
addCategory(Intent.CATEGORY_APP_MUSIC)
flags = Intent.FLAG_ACTIVITY_NEW_TASK
},
null
)
)
}