For Freezer 0.5.2

This commit is contained in:
exttex 2020-10-11 22:05:18 +02:00
parent b268066d26
commit c169591d41
10 changed files with 337 additions and 188 deletions

View file

@ -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;

View file

@ -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"),