mirror of
https://codeberg.org/Freeyourgadget/Gadgetbridge.git
synced 2025-02-13 19:05:39 +01:00
Fix race condition NPE on media session change
If the music session changes and then stops quickly, the getMetadata call will not be null the 1st call, but would on the 2nd, which would result in an NPE and subsequent crash in the device service.
This commit is contained in:
parent
63f5b2a025
commit
0a38a7a880
@ -34,8 +34,10 @@ import android.database.Cursor;
|
||||
import android.graphics.Bitmap;
|
||||
import android.graphics.Color;
|
||||
import android.graphics.drawable.Drawable;
|
||||
import android.media.MediaMetadata;
|
||||
import android.media.session.MediaController;
|
||||
import android.media.session.MediaSession;
|
||||
import android.media.session.PlaybackState;
|
||||
import android.os.Build;
|
||||
import android.os.Bundle;
|
||||
import android.os.Handler;
|
||||
@ -807,12 +809,14 @@ public class NotificationListener extends NotificationListenerService {
|
||||
public boolean handleMediaSessionNotification(MediaSession.Token mediaSession) {
|
||||
try {
|
||||
final MediaController c = new MediaController(getApplicationContext(), mediaSession);
|
||||
if (c.getMetadata() == null) {
|
||||
final PlaybackState playbackState = c.getPlaybackState();
|
||||
final MediaMetadata metadata = c.getMetadata();
|
||||
if (metadata == null) {
|
||||
return false;
|
||||
}
|
||||
|
||||
final MusicStateSpec stateSpec = MediaManager.extractMusicStateSpec(c.getPlaybackState());
|
||||
final MusicSpec musicSpec = MediaManager.extractMusicSpec(c.getMetadata());
|
||||
final MusicStateSpec stateSpec = MediaManager.extractMusicStateSpec(playbackState);
|
||||
final MusicSpec musicSpec = MediaManager.extractMusicSpec(metadata);
|
||||
|
||||
// finally, tell the device about it
|
||||
if (mSetMusicInfoRunnable != null) {
|
||||
|
Loading…
x
Reference in New Issue
Block a user