For Freezer 0.5.2
This commit is contained in:
parent
b268066d26
commit
c169591d41
10 changed files with 337 additions and 188 deletions
|
@ -15,8 +15,6 @@ import android.graphics.BitmapFactory;
|
|||
import android.media.AudioAttributes;
|
||||
import android.media.AudioFocusRequest;
|
||||
import android.media.AudioManager;
|
||||
import android.media.MediaDescription;
|
||||
import android.media.MediaMetadata;
|
||||
import android.os.Build;
|
||||
import android.os.Bundle;
|
||||
import android.os.Handler;
|
||||
|
@ -29,7 +27,6 @@ import android.support.v4.media.RatingCompat;
|
|||
import android.support.v4.media.session.MediaControllerCompat;
|
||||
import android.support.v4.media.session.MediaSessionCompat;
|
||||
import android.support.v4.media.session.PlaybackStateCompat;
|
||||
import android.util.Log;
|
||||
import android.util.LruCache;
|
||||
import android.view.KeyEvent;
|
||||
|
||||
|
@ -161,8 +158,13 @@ public class AudioService extends MediaBrowserServiceCompat {
|
|||
mediaSession.setActive(false);
|
||||
releaseWakeLock();
|
||||
stopForeground(true);
|
||||
notificationCreated = false;
|
||||
stopSelf();
|
||||
// This still does not solve the Android 11 problem.
|
||||
// if (notificationCreated) {
|
||||
// NotificationManager notificationManager = (NotificationManager)getSystemService(Context.NOTIFICATION_SERVICE);
|
||||
// notificationManager.cancel(NOTIFICATION_ID);
|
||||
// }
|
||||
notificationCreated = false;
|
||||
}
|
||||
|
||||
public static boolean isRunning() {
|
||||
|
@ -377,7 +379,7 @@ public class AudioService extends MediaBrowserServiceCompat {
|
|||
wakeLock.release();
|
||||
}
|
||||
|
||||
static MediaMetadataCompat createMediaMetadata(String mediaId, String album, String title, String artist, String genre, Long duration, String artUri, String displayTitle, String displaySubtitle, String displayDescription, RatingCompat rating, Map<?, ?> extras) {
|
||||
static MediaMetadataCompat createMediaMetadata(String mediaId, String album, String title, String artist, String genre, Long duration, String artUri, Boolean playable, String displayTitle, String displaySubtitle, String displayDescription, RatingCompat rating, Map<?, ?> extras) {
|
||||
MediaMetadataCompat.Builder builder = new MediaMetadataCompat.Builder()
|
||||
.putString(MediaMetadataCompat.METADATA_KEY_MEDIA_ID, mediaId)
|
||||
.putString(MediaMetadataCompat.METADATA_KEY_ALBUM, album)
|
||||
|
@ -402,7 +404,8 @@ public class AudioService extends MediaBrowserServiceCompat {
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (playable != null)
|
||||
builder.putLong("playable_long", playable ? 1 : 0);
|
||||
if (displayTitle != null)
|
||||
builder.putString(MediaMetadataCompat.METADATA_KEY_DISPLAY_TITLE, displayTitle);
|
||||
if (displaySubtitle != null)
|
||||
|
@ -422,6 +425,10 @@ public class AudioService extends MediaBrowserServiceCompat {
|
|||
builder.putLong("extra_long_" + key, (Integer)value);
|
||||
} else if (value instanceof String) {
|
||||
builder.putString("extra_string_" + key, (String)value);
|
||||
} else if (value instanceof Boolean) {
|
||||
builder.putLong("extra_boolean_" + key, (Boolean)value ? 1 : 0);
|
||||
} else if (value instanceof Double) {
|
||||
builder.putString("extra_double_" + key, value.toString());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -554,7 +561,6 @@ public class AudioService extends MediaBrowserServiceCompat {
|
|||
}
|
||||
|
||||
public class MediaSessionCallback extends MediaSessionCompat.Callback {
|
||||
|
||||
@Override
|
||||
public void onAddQueueItem(MediaDescriptionCompat description) {
|
||||
if (listener == null) return;
|
||||
|
|
|
@ -60,7 +60,6 @@ import io.flutter.embedding.engine.dart.DartExecutor;
|
|||
import io.flutter.embedding.engine.dart.DartExecutor.DartCallback;
|
||||
|
||||
import android.content.res.AssetManager;
|
||||
import android.util.Log;
|
||||
|
||||
import io.flutter.view.FlutterNativeView;
|
||||
import io.flutter.view.FlutterRunArguments;
|
||||
|
@ -997,6 +996,7 @@ public class AudioServicePlugin implements FlutterPlugin, ActivityAware {
|
|||
raw.put("genre", metadataToString(mediaMetadata, MediaMetadataCompat.METADATA_KEY_GENRE));
|
||||
if (mediaMetadata.containsKey(MediaMetadataCompat.METADATA_KEY_DURATION))
|
||||
raw.put("duration", mediaMetadata.getLong(MediaMetadataCompat.METADATA_KEY_DURATION));
|
||||
raw.put("playable", mediaMetadata.getLong("playable_long") != 0);
|
||||
raw.put("displayTitle", metadataToString(mediaMetadata, MediaMetadataCompat.METADATA_KEY_DISPLAY_TITLE));
|
||||
raw.put("displaySubtitle", metadataToString(mediaMetadata, MediaMetadataCompat.METADATA_KEY_DISPLAY_SUBTITLE));
|
||||
raw.put("displayDescription", metadataToString(mediaMetadata, MediaMetadataCompat.METADATA_KEY_DISPLAY_DESCRIPTION));
|
||||
|
@ -1011,6 +1011,12 @@ public class AudioServicePlugin implements FlutterPlugin, ActivityAware {
|
|||
} else if (key.startsWith("extra_string_")) {
|
||||
String rawKey = key.substring("extra_string_".length());
|
||||
extras.put(rawKey, mediaMetadata.getString(key));
|
||||
} else if (key.startsWith("extra_boolean_")) {
|
||||
String rawKey = key.substring("extra_boolean_".length());
|
||||
extras.put(rawKey, mediaMetadata.getLong(key) != 0);
|
||||
} else if (key.startsWith("extra_double_")) {
|
||||
String rawKey = key.substring("extra_double_".length());
|
||||
extras.put(rawKey, new Double(mediaMetadata.getString(key)));
|
||||
}
|
||||
}
|
||||
if (extras.size() > 0) {
|
||||
|
@ -1028,6 +1034,7 @@ public class AudioServicePlugin implements FlutterPlugin, ActivityAware {
|
|||
(String)rawMediaItem.get("genre"),
|
||||
getLong(rawMediaItem.get("duration")),
|
||||
(String)rawMediaItem.get("artUri"),
|
||||
(Boolean)rawMediaItem.get("playable"),
|
||||
(String)rawMediaItem.get("displayTitle"),
|
||||
(String)rawMediaItem.get("displaySubtitle"),
|
||||
(String)rawMediaItem.get("displayDescription"),
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue