Merge pull request #342 from qwertyfinger/fix-audio-focus
Don't remove MusicService from foreground on focus loss during playback
This commit is contained in:
commit
7af3378432
1 changed files with 11 additions and 5 deletions
|
@ -15,10 +15,7 @@ import android.media.MediaPlayer
|
||||||
import android.media.audiofx.Equalizer
|
import android.media.audiofx.Equalizer
|
||||||
import android.media.session.PlaybackState.PLAYBACK_POSITION_UNKNOWN
|
import android.media.session.PlaybackState.PLAYBACK_POSITION_UNKNOWN
|
||||||
import android.net.Uri
|
import android.net.Uri
|
||||||
import android.os.CountDownTimer
|
import android.os.*
|
||||||
import android.os.Handler
|
|
||||||
import android.os.Looper
|
|
||||||
import android.os.PowerManager
|
|
||||||
import android.provider.MediaStore
|
import android.provider.MediaStore
|
||||||
import android.provider.MediaStore.Audio
|
import android.provider.MediaStore.Audio
|
||||||
import android.support.v4.media.MediaMetadataCompat
|
import android.support.v4.media.MediaMetadataCompat
|
||||||
|
@ -136,6 +133,8 @@ class MusicService : Service(), MediaPlayer.OnPreparedListener, MediaPlayer.OnEr
|
||||||
return START_NOT_STICKY
|
return START_NOT_STICKY
|
||||||
}
|
}
|
||||||
|
|
||||||
|
notifyFocusGained()
|
||||||
|
|
||||||
val action = intent.action
|
val action = intent.action
|
||||||
if (isOreoPlus() && action != NEXT && action != PREVIOUS && action != PLAYPAUSE) {
|
if (isOreoPlus() && action != NEXT && action != PREVIOUS && action != PLAYPAUSE) {
|
||||||
setupFakeNotification()
|
setupFakeNotification()
|
||||||
|
@ -169,6 +168,11 @@ class MusicService : Service(), MediaPlayer.OnPreparedListener, MediaPlayer.OnEr
|
||||||
return START_NOT_STICKY
|
return START_NOT_STICKY
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private fun notifyFocusGained() {
|
||||||
|
mWasPlayingAtFocusLost = false
|
||||||
|
mPrevAudioFocusState = AUDIOFOCUS_GAIN
|
||||||
|
}
|
||||||
|
|
||||||
private fun initService(intent: Intent?) {
|
private fun initService(intent: Intent?) {
|
||||||
mTracks.clear()
|
mTracks.clear()
|
||||||
mCurrTrack = null
|
mCurrTrack = null
|
||||||
|
@ -477,7 +481,9 @@ class MusicService : Service(), MediaPlayer.OnPreparedListener, MediaPlayer.OnEr
|
||||||
|
|
||||||
// delay foreground state updating a bit, so the notification can be swiped away properly after initial display
|
// delay foreground state updating a bit, so the notification can be swiped away properly after initial display
|
||||||
Handler(Looper.getMainLooper()).postDelayed({
|
Handler(Looper.getMainLooper()).postDelayed({
|
||||||
if (!getIsPlaying()) {
|
val isFocusLost = mPrevAudioFocusState == AUDIOFOCUS_LOSS || mPrevAudioFocusState == AUDIOFOCUS_LOSS_TRANSIENT
|
||||||
|
val isPlaybackStoppedAfterFocusLoss = mWasPlayingAtFocusLost && isFocusLost
|
||||||
|
if (!getIsPlaying() && !isPlaybackStoppedAfterFocusLoss) {
|
||||||
stopForeground(false)
|
stopForeground(false)
|
||||||
}
|
}
|
||||||
}, 200L)
|
}, 200L)
|
||||||
|
|
Loading…
Reference in a new issue