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.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
|
||||
)
|
||||
)
|
||||
}
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user