Skip to content

Commit

Permalink
修复通知栏可能不更新的bug;优化播放时发生错误
Browse files Browse the repository at this point in the history
  • Loading branch information
rRemix committed Apr 15, 2022
1 parent 16685c7 commit c4ef597
Show file tree
Hide file tree
Showing 7 changed files with 63 additions and 254 deletions.
2 changes: 1 addition & 1 deletion app/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ android {
minSdkVersion 19
targetSdkVersion 30

versionCode 15810
versionCode 15811
versionName "1.5.8.1"

flavorDimensions "default"
Expand Down
172 changes: 0 additions & 172 deletions app/src/main/java/remix/myplayer/glide/MultiModelLoader.java

This file was deleted.

110 changes: 53 additions & 57 deletions app/src/main/java/remix/myplayer/service/MusicService.kt
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ import android.app.PendingIntent
import android.content.*
import android.graphics.Bitmap
import android.graphics.PixelFormat
import android.graphics.drawable.BitmapDrawable
import android.graphics.drawable.Drawable
import android.media.AudioAttributes
import android.media.AudioManager
Expand Down Expand Up @@ -56,7 +57,7 @@ import remix.myplayer.misc.tryLaunch
import remix.myplayer.service.notification.Notify
import remix.myplayer.service.notification.NotifyImpl
import remix.myplayer.service.notification.NotifyImpl24
import remix.myplayer.theme.Theme
import remix.myplayer.theme.ThemeStore
import remix.myplayer.ui.activity.LockScreenActivity
import remix.myplayer.ui.activity.base.BaseMusicActivity
import remix.myplayer.ui.activity.base.BaseMusicActivity.Companion.EXTRA_PERMISSION
Expand All @@ -83,6 +84,7 @@ import java.util.*
*/
@SuppressLint("CheckResult")
class MusicService : BaseService(), Playback, MusicEventCallback,
MediaPlayer.OnErrorListener, MediaPlayer.OnPreparedListener, MediaPlayer.OnCompletionListener,
SharedPreferences.OnSharedPreferenceChangeListener, CoroutineScope by MainScope() {
// 播放队列
private val playQueue = PlayQueue(this)
Expand Down Expand Up @@ -632,65 +634,60 @@ class MusicService : BaseService(), Playback, MusicEventCallback,
mediaPlayer.setAudioStreamType(audioAttributes.legacyStreamType)
}
mediaPlayer.setWakeMode(this, PowerManager.PARTIAL_WAKE_LOCK)
mediaPlayer.setOnCompletionListener(this)
mediaPlayer.setOnPreparedListener(this)
mediaPlayer.setOnErrorListener(this)

mediaPlayer.setOnCompletionListener { mp ->
if (pendingClose) {
Timber.v("发送Exit广播")
sendBroadcast(Intent(ACTION_EXIT)
.setComponent(ComponentName(this@MusicService, ExitReceiver::class.java)))
return@setOnCompletionListener
}
if (playModel == MODE_REPEAT) {
prepare(playQueue.song)
} else {
playNextOrPrev(true)
}
operation = Command.NEXT
acquireWakeLock()
}
mediaPlayer.setOnPreparedListener { mp ->
Timber.v("准备完成:%s", firstPrepared)

if (firstPrepared) {
firstPrepared = false
if (lastProgress > 0) {
mediaPlayer.seekTo(lastProgress)
}
//自动播放
if (SPUtil.getValue(this, SETTING_KEY.NAME, SETTING_KEY.AUTO_PLAY, NEVER) != OPEN_SOFTWARE) {
return@setOnPreparedListener
}
}
EQHelper.init(this, mediaPlayer.audioSessionId)
EQHelper.open(this, mediaPlayer.audioSessionId)
}

Timber.v("开始播放")
//记录播放历史
updatePlayHistory()
//开始播放
play(false)
override fun onCompletion(mp: MediaPlayer?) {
if (pendingClose) {
Timber.v("发送Exit广播")
sendBroadcast(Intent(ACTION_EXIT)
.setComponent(ComponentName(this@MusicService, ExitReceiver::class.java)))
return
}
if (playModel == MODE_REPEAT) {
prepare(playQueue.song)
} else {
playNextOrPrev(true)
}
operation = Command.NEXT
acquireWakeLock()
}

mediaPlayer.setOnErrorListener { mp, what, extra ->
try {
if (what == 100) {
service.updatePlaybackState()
ToastUtil.show(service, R.string.mediaplayer_error_ignore, what, extra)
} else {
prepared = false
mediaPlayer.release()
setUpPlayer()
ToastUtil.show(service, R.string.mediaplayer_error, what, extra)
return@setOnErrorListener true
}
} catch (ignored: Exception) {
override fun onPrepared(mp: MediaPlayer?) {
Timber.v("准备完成:%s", firstPrepared)

if (firstPrepared) {
firstPrepared = false
if (lastProgress > 0) {
mediaPlayer.seekTo(lastProgress)
}
//自动播放
if (SPUtil.getValue(this, SETTING_KEY.NAME, SETTING_KEY.AUTO_PLAY, NEVER) != OPEN_SOFTWARE) {
return
}
false
}

EQHelper.init(this, mediaPlayer.audioSessionId)
EQHelper.open(this, mediaPlayer.audioSessionId)
Timber.v("开始播放")
//记录播放历史
updatePlayHistory()
//开始播放
play(false)
}

override fun onError(mp: MediaPlayer?, what: Int, extra: Int): Boolean {
Timber.e("onError, what: $what extra: $extra")
ToastUtil.show(service, R.string.mediaplayer_error, what, extra)
prepared = false
mediaPlayer.release()
setUpPlayer()
playNext()
return true
}

/**
* 更新播放历史
Expand Down Expand Up @@ -1374,13 +1371,14 @@ class MusicService : BaseService(), Playback, MusicEventCallback,
builder.putLong(MediaMetadataCompat.METADATA_KEY_NUM_TRACKS, playQueue.size().toLong())
}

if (updatePlayStateOnly(control)) {
mediaSession.setMetadata(builder.build())
} else {
mediaSession.setMetadata(builder.build())

if (!updatePlayStateOnly(control)) {
val placeholder = if (ThemeStore.isLightTheme) R.drawable.album_empty_bg_day else R.drawable.album_empty_bg_night
GlideApp.with(this)
.asBitmap()
.load(currentSong)
.placeholder(Theme.resolveDrawable(this, R.attr.default_album))
.error(placeholder)
.centerCrop()
.override(DensityUtil.dip2px(160f), DensityUtil.dip2px(160f))
.into(object : CustomTarget<Bitmap>() {
Expand All @@ -1389,8 +1387,7 @@ class MusicService : BaseService(), Playback, MusicEventCallback,
}

override fun onLoadFailed(errorDrawable: Drawable?) {
super.onLoadFailed(errorDrawable)
setMediaSessionData(null)
setMediaSessionData((errorDrawable as? BitmapDrawable)?.bitmap)
}

private fun setMediaSessionData(result: Bitmap?) {
Expand All @@ -1404,7 +1401,6 @@ class MusicService : BaseService(), Playback, MusicEventCallback,
}
})
}

updatePlaybackState()
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,6 @@ import android.content.Intent
import android.os.Build
import androidx.annotation.RequiresApi
import androidx.core.app.TaskStackBuilder
import io.reactivex.disposables.Disposable
import remix.myplayer.R
import remix.myplayer.service.Command
import remix.myplayer.service.MusicService
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -93,6 +93,7 @@ class NotifyImpl(context: MusicService) : Notify(context) {

//设置封面
val size = DensityUtil.dip2px(service, 128f)
pushNotify(notification)

GlideApp.with(service)
.asBitmap()
Expand All @@ -114,23 +115,13 @@ class NotifyImpl(context: MusicService) : Notify(context) {
}

override fun onLoadCleared(placeholder: Drawable?) {
remoteBigView.setImageViewResource(R.id.notify_image, R.drawable.album_empty_bg_day)
remoteView.setImageViewResource(R.id.notify_image, R.drawable.album_empty_bg_day)
pushNotify(notification)
}

override fun onLoadFailed(errorDrawable: Drawable?) {
remoteBigView.setImageViewResource(R.id.notify_image, R.drawable.album_empty_bg_day)
remoteView.setImageViewResource(R.id.notify_image, R.drawable.album_empty_bg_day)
pushNotify(notification)
}

override fun onLoadStarted(placeholder: Drawable?) {
remoteBigView.setImageViewResource(R.id.notify_image, R.drawable.album_empty_bg_day)
remoteView.setImageViewResource(R.id.notify_image, R.drawable.album_empty_bg_day)
pushNotify(notification)
}

})
}

Expand Down
Loading

0 comments on commit c4ef597

Please sign in to comment.