|
|
@ -38,7 +38,7 @@ class MusicService : MediaBrowserServiceCompat() { |
|
|
private const val DELETE_ACTION = "com.yunqiinnovation.music_service.DELETE_NOTIFICATION" |
|
|
private const val DELETE_ACTION = "com.yunqiinnovation.music_service.DELETE_NOTIFICATION" |
|
|
|
|
|
|
|
|
private val isRunning = AtomicBoolean(false) |
|
|
private val isRunning = AtomicBoolean(false) |
|
|
private var currentIdInternal: Int? = null |
|
|
private var currentIdInternal: String? = null |
|
|
private var currentStatus = false |
|
|
private var currentStatus = false |
|
|
private var playlist = mutableListOf<Map<String,Any>>() |
|
|
private var playlist = mutableListOf<Map<String,Any>>() |
|
|
private var currentIndex = 0 |
|
|
private var currentIndex = 0 |
|
|
@ -48,7 +48,7 @@ class MusicService : MediaBrowserServiceCompat() { |
|
|
|
|
|
|
|
|
fun isServiceRunning() = isRunning.get() |
|
|
fun isServiceRunning() = isRunning.get() |
|
|
fun isPlaying() = currentStatus |
|
|
fun isPlaying() = currentStatus |
|
|
fun getCurrentId(): Int? = currentIdInternal |
|
|
fun getCurrentId(): String? = currentIdInternal |
|
|
|
|
|
|
|
|
// // 获取播放进度信息 |
|
|
// // 获取播放进度信息 |
|
|
// fun getProgress(): Map<String, Any> { |
|
|
// fun getProgress(): Map<String, Any> { |
|
|
@ -121,7 +121,8 @@ class MusicService : MediaBrowserServiceCompat() { |
|
|
val title = song["title"] as? String ?: song["name"] as? String ?: "未知标题" |
|
|
val title = song["title"] as? String ?: song["name"] as? String ?: "未知标题" |
|
|
val artist = song["artist"] as? String ?: song["sgener"] as? String ?: "未知歌手" |
|
|
val artist = song["artist"] as? String ?: song["sgener"] as? String ?: "未知歌手" |
|
|
val coverUrl = song["coverUrl"] as? String ?: song["image"] as? String ?: "" |
|
|
val coverUrl = song["coverUrl"] as? String ?: song["image"] as? String ?: "" |
|
|
currentIdInternal = song["id"] as? Int ?: song["id"] as? Int ?: 0 |
|
|
currentIdInternal = song["id"] as? String ?: song["id"] as? String ?: "0" |
|
|
|
|
|
Log.i(TAG, "updateMediaSessionMetadata currentIdInternal: $currentIdInternal") |
|
|
val metadata = android.support.v4.media.MediaMetadataCompat.Builder() |
|
|
val metadata = android.support.v4.media.MediaMetadataCompat.Builder() |
|
|
.putString(android.support.v4.media.MediaMetadataCompat.METADATA_KEY_TITLE, title) |
|
|
.putString(android.support.v4.media.MediaMetadataCompat.METADATA_KEY_TITLE, title) |
|
|
.putString(android.support.v4.media.MediaMetadataCompat.METADATA_KEY_ARTIST, artist) |
|
|
.putString(android.support.v4.media.MediaMetadataCompat.METADATA_KEY_ARTIST, artist) |
|
|
@ -238,8 +239,10 @@ private fun updateProgress() { |
|
|
"play" -> intent.getSerializableExtra("song")?.let { url -> |
|
|
"play" -> intent.getSerializableExtra("song")?.let { url -> |
|
|
val songMap = intent.getSerializableExtra("song") as? Map<String, Any> |
|
|
val songMap = intent.getSerializableExtra("song") as? Map<String, Any> |
|
|
songMap?.let { song -> |
|
|
songMap?.let { song -> |
|
|
val songId = song["id"] ?: return@let |
|
|
val songId = song["id"]as? String ?:"0" |
|
|
// currentIdInternal = songId |
|
|
Log.i(TAG, "command songId: $songId") |
|
|
|
|
|
currentIdInternal = songId |
|
|
|
|
|
|
|
|
val existingIndex = playlist.indexOfFirst { it["id"] == songId } |
|
|
val existingIndex = playlist.indexOfFirst { it["id"] == songId } |
|
|
if (existingIndex == -1) { |
|
|
if (existingIndex == -1) { |
|
|
playlist.add(song) |
|
|
playlist.add(song) |
|
|
@ -547,13 +550,15 @@ private fun updateProgress() { |
|
|
private fun play(song: Map<String,Any>) { |
|
|
private fun play(song: Map<String,Any>) { |
|
|
val url = song["url"] as? String ?: return |
|
|
val url = song["url"] as? String ?: return |
|
|
Log.i(TAG, "开始播放: $url") |
|
|
Log.i(TAG, "开始播放: $url") |
|
|
val id = song["id"] as? Int ?: 0 |
|
|
val id = song["id"] as? String ?: "0" |
|
|
|
|
|
Log.i(TAG, "开始播放play id: $id") |
|
|
val title = song["title"] as? String ?: "未知标题" |
|
|
val title = song["title"] as? String ?: "未知标题" |
|
|
val artist = song["artist"] as? String ?: "未知歌手" |
|
|
val artist = song["artist"] as? String ?: "未知歌手" |
|
|
val coverUrl = song["coverUrl"] as String |
|
|
val coverUrl = song["coverUrl"] as String |
|
|
mediaPlayer?.release() |
|
|
mediaPlayer?.release() |
|
|
currentStatus = true |
|
|
currentStatus = true |
|
|
currentIdInternal = id |
|
|
currentIdInternal = id |
|
|
|
|
|
Log.i(TAG, "开始播放play currentIdInternal: $currentIdInternal") |
|
|
mediaPlayer = MediaPlayer().apply { |
|
|
mediaPlayer = MediaPlayer().apply { |
|
|
setDataSource(url) |
|
|
setDataSource(url) |
|
|
setAudioStreamType(AudioManager.STREAM_MUSIC) |
|
|
setAudioStreamType(AudioManager.STREAM_MUSIC) |
|
|
@ -585,7 +590,8 @@ private fun updateProgress() { |
|
|
val title = song["title"] as? String ?: "未知标题" |
|
|
val title = song["title"] as? String ?: "未知标题" |
|
|
val artist = song["artist"] as? String ?: "未知歌手" |
|
|
val artist = song["artist"] as? String ?: "未知歌手" |
|
|
val coverUrl = song["coverUrl"] as String |
|
|
val coverUrl = song["coverUrl"] as String |
|
|
val id = song["id"] as? Int ?: 0 |
|
|
val id = song["id"] as? String ?: "0" |
|
|
|
|
|
Log.i(TAG, "pause id: $id") |
|
|
currentIdInternal = id |
|
|
currentIdInternal = id |
|
|
updateNotification(title,artist,coverUrl) |
|
|
updateNotification(title,artist,coverUrl) |
|
|
setPlaybackState(PlaybackStateCompat.STATE_PAUSED); |
|
|
setPlaybackState(PlaybackStateCompat.STATE_PAUSED); |
|
|
@ -605,7 +611,8 @@ private fun updateProgress() { |
|
|
val title = song["title"] as? String ?: "未知标题" |
|
|
val title = song["title"] as? String ?: "未知标题" |
|
|
val artist = song["artist"] as? String ?: "未知歌手" |
|
|
val artist = song["artist"] as? String ?: "未知歌手" |
|
|
val coverUrl = song["coverUrl"] as String |
|
|
val coverUrl = song["coverUrl"] as String |
|
|
val id = song["id"] as? Int ?: 0 |
|
|
val id = song["id"] as? String ?: "0" |
|
|
|
|
|
Log.i(TAG, "resume id: $id") |
|
|
currentIdInternal = id |
|
|
currentIdInternal = id |
|
|
updateNotification(title,artist,coverUrl) |
|
|
updateNotification(title,artist,coverUrl) |
|
|
setPlaybackState(PlaybackStateCompat.STATE_PLAYING); |
|
|
setPlaybackState(PlaybackStateCompat.STATE_PLAYING); |
|
|
|