Fix blur and image loading
This commit is contained in:
parent
dd12d9e34b
commit
07b1559350
22 changed files with 85 additions and 785 deletions
|
@ -17,16 +17,10 @@ package code.name.monkey.retromusic.service
|
|||
import android.content.Context
|
||||
import android.content.Intent
|
||||
import android.os.Bundle
|
||||
import android.provider.MediaStore
|
||||
import android.support.v4.media.session.MediaSessionCompat
|
||||
import android.text.TextUtils
|
||||
import code.name.monkey.retromusic.auto.AutoMediaIDHelper
|
||||
import code.name.monkey.retromusic.helper.MusicPlayerRemote
|
||||
import code.name.monkey.retromusic.helper.MusicPlayerRemote.cycleRepeatMode
|
||||
import code.name.monkey.retromusic.helper.ShuffleHelper
|
||||
import code.name.monkey.retromusic.loaders.*
|
||||
import code.name.monkey.retromusic.model.Song
|
||||
import code.name.monkey.retromusic.providers.MusicPlaybackQueueStore
|
||||
import code.name.monkey.retromusic.service.MusicService.*
|
||||
import code.name.monkey.retromusic.util.MusicUtil
|
||||
import java.util.*
|
||||
|
@ -74,93 +68,6 @@ class MediaSessionCallback(private val context: Context,
|
|||
return MediaButtonIntentReceiver.handleIntent(context, mediaButtonIntent)
|
||||
}
|
||||
|
||||
override fun onPlayFromMediaId(mediaId: String?, extras: Bundle?) {
|
||||
super.onPlayFromMediaId(mediaId, extras)
|
||||
|
||||
val musicId = mediaId?.let { AutoMediaIDHelper.extractMusicID(it) }
|
||||
val itemId = musicId?.toInt() ?: -1
|
||||
val songs = arrayListOf<Song>()
|
||||
when (val category = mediaId?.let { AutoMediaIDHelper.extractCategory(it) }) {
|
||||
AutoMediaIDHelper.MEDIA_ID_MUSICS_BY_ALBUM -> {
|
||||
val album = AlbumLoader.getAlbum(context, itemId)
|
||||
album.songs?.let { songs.addAll(it) }
|
||||
openQueue(songs, 0, true)
|
||||
}
|
||||
AutoMediaIDHelper.MEDIA_ID_MUSICS_BY_ARTIST -> {
|
||||
val artist = ArtistLoader.getArtist(context, itemId)
|
||||
songs.addAll(artist.songs)
|
||||
openQueue(songs, 0, true)
|
||||
}
|
||||
AutoMediaIDHelper.MEDIA_ID_MUSICS_BY_PLAYLIST -> {
|
||||
val playlist = PlaylistLoader.getPlaylist(context, itemId)
|
||||
songs.addAll(playlist.getSongs(context))
|
||||
openQueue(songs, 0, true)
|
||||
}
|
||||
AutoMediaIDHelper.MEDIA_ID_MUSICS_BY_GENRE -> {
|
||||
songs.addAll(GenreLoader.getSongs(context, itemId))
|
||||
openQueue(songs, 0, true)
|
||||
}
|
||||
AutoMediaIDHelper.MEDIA_ID_MUSICS_BY_HISTORY,
|
||||
AutoMediaIDHelper.MEDIA_ID_MUSICS_BY_TOP_TRACKS,
|
||||
AutoMediaIDHelper.MEDIA_ID_MUSICS_BY_QUEUE -> {
|
||||
val tracks: List<Song>
|
||||
tracks = when (category) {
|
||||
AutoMediaIDHelper.MEDIA_ID_MUSICS_BY_HISTORY -> TopAndRecentlyPlayedTracksLoader.getRecentlyPlayedTracks(context)
|
||||
AutoMediaIDHelper.MEDIA_ID_MUSICS_BY_TOP_TRACKS -> TopAndRecentlyPlayedTracksLoader.getTopTracks(context)
|
||||
else -> MusicPlaybackQueueStore.getInstance(context).savedOriginalPlayingQueue
|
||||
}
|
||||
songs.addAll(tracks)
|
||||
var songIndex = MusicUtil.indexOfSongInList(tracks, itemId)
|
||||
if (songIndex == -1) {
|
||||
songIndex = 0
|
||||
}
|
||||
openQueue(songs, songIndex, true)
|
||||
}
|
||||
AutoMediaIDHelper.MEDIA_ID_MUSICS_BY_SHUFFLE -> {
|
||||
val allSongs = SongLoader.getAllSongs(context)
|
||||
ShuffleHelper.makeShuffleList(allSongs, -1)
|
||||
openQueue(allSongs, 0, true)
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
override fun onPlayFromSearch(query: String?, extras: Bundle?) {
|
||||
print("query: $query -> extras: ${extras.toString()}")
|
||||
if (TextUtils.isEmpty(query)) {
|
||||
if (MusicPlayerRemote.playingQueue.isEmpty()) {
|
||||
openQueue(SongLoader.getAllSongs(context), 0, true);
|
||||
} else {
|
||||
MusicPlayerRemote.resumePlaying()
|
||||
}
|
||||
} else {
|
||||
handlePlayFromSearch(query, extras)
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
private fun handlePlayFromSearch(query: String?, extras: Bundle?) {
|
||||
val mediaFocus: String? = extras?.getString(MediaStore.EXTRA_MEDIA_FOCUS)
|
||||
println(mediaFocus)
|
||||
when (mediaFocus) {
|
||||
MediaStore.Audio.Artists.ENTRY_CONTENT_TYPE -> {
|
||||
extras.getString(MediaStore.EXTRA_MEDIA_ARTIST)?.let { artist ->
|
||||
println("Artist name $artist")
|
||||
}
|
||||
}
|
||||
MediaStore.Audio.Albums.ENTRY_CONTENT_TYPE -> {
|
||||
extras.getString(MediaStore.EXTRA_MEDIA_ALBUM)?.let { album ->
|
||||
println("Artist name $album")
|
||||
}
|
||||
}
|
||||
MediaStore.Audio.Genres.ENTRY_CONTENT_TYPE -> {
|
||||
extras.getString(MediaStore.EXTRA_MEDIA_GENRE)?.let { genre ->
|
||||
println("Artist name $genre")
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
override fun onCustomAction(action: String, extras: Bundle?) {
|
||||
when (action) {
|
||||
CYCLE_REPEAT -> {
|
||||
|
|
|
@ -15,6 +15,7 @@
|
|||
package code.name.monkey.retromusic.service;
|
||||
|
||||
import android.app.PendingIntent;
|
||||
import android.app.Service;
|
||||
import android.appwidget.AppWidgetManager;
|
||||
import android.content.BroadcastReceiver;
|
||||
import android.content.ComponentName;
|
||||
|
@ -30,7 +31,6 @@ import android.media.AudioManager;
|
|||
import android.media.audiofx.AudioEffect;
|
||||
import android.os.Binder;
|
||||
import android.os.Build;
|
||||
import android.os.Bundle;
|
||||
import android.os.Handler;
|
||||
import android.os.HandlerThread;
|
||||
import android.os.IBinder;
|
||||
|
@ -38,7 +38,6 @@ import android.os.PowerManager;
|
|||
import android.os.Process;
|
||||
import android.preference.PreferenceManager;
|
||||
import android.provider.MediaStore;
|
||||
import android.support.v4.media.MediaBrowserCompat;
|
||||
import android.support.v4.media.MediaMetadataCompat;
|
||||
import android.support.v4.media.session.MediaSessionCompat;
|
||||
import android.support.v4.media.session.PlaybackStateCompat;
|
||||
|
@ -49,7 +48,6 @@ import android.widget.Toast;
|
|||
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.annotation.Nullable;
|
||||
import androidx.media.MediaBrowserServiceCompat;
|
||||
|
||||
import com.bumptech.glide.BitmapRequestBuilder;
|
||||
import com.bumptech.glide.Glide;
|
||||
|
@ -66,9 +64,6 @@ import code.name.monkey.retromusic.appwidgets.AppWidgetCard;
|
|||
import code.name.monkey.retromusic.appwidgets.AppWidgetClassic;
|
||||
import code.name.monkey.retromusic.appwidgets.AppWidgetSmall;
|
||||
import code.name.monkey.retromusic.appwidgets.AppWidgetText;
|
||||
import code.name.monkey.retromusic.auto.AutoMediaIDHelper;
|
||||
import code.name.monkey.retromusic.auto.AutoMusicProvider;
|
||||
import code.name.monkey.retromusic.auto.CarHelper;
|
||||
import code.name.monkey.retromusic.glide.BlurTransformation;
|
||||
import code.name.monkey.retromusic.glide.SongGlideRequest;
|
||||
import code.name.monkey.retromusic.helper.ShuffleHelper;
|
||||
|
@ -89,7 +84,7 @@ import code.name.monkey.retromusic.util.RetroUtil;
|
|||
/**
|
||||
* @author Karim Abou Zeid (kabouzeid), Andrew Neal
|
||||
*/
|
||||
public class MusicService extends MediaBrowserServiceCompat implements
|
||||
public class MusicService extends Service implements
|
||||
SharedPreferences.OnSharedPreferenceChangeListener, Playback.PlaybackCallbacks {
|
||||
public static final String TAG = MusicService.class.getSimpleName();
|
||||
|
||||
|
@ -281,7 +276,6 @@ public class MusicService extends MediaBrowserServiceCompat implements
|
|||
}
|
||||
};
|
||||
private PackageValidator mPackageValidator;
|
||||
private AutoMusicProvider mMusicProvider;
|
||||
|
||||
private static String getTrackUri(@NonNull Song song) {
|
||||
return MusicUtil.getSongFileUri(song.getId()).toString();
|
||||
|
@ -348,7 +342,7 @@ public class MusicService extends MediaBrowserServiceCompat implements
|
|||
restoreState();
|
||||
|
||||
mPackageValidator = new PackageValidator(this, R.xml.allowed_media_browser_callers);
|
||||
mMusicProvider = new AutoMusicProvider(this);
|
||||
|
||||
|
||||
sendBroadcast(new Intent("code.name.monkey.retromusic.RETRO_MUSIC_SERVICE_CREATED"));
|
||||
|
||||
|
@ -389,7 +383,7 @@ public class MusicService extends MediaBrowserServiceCompat implements
|
|||
mediaSession.setCallback(mediasessionCallback);
|
||||
mediaSession.setActive(true);
|
||||
mediaSession.setMediaButtonReceiver(mediaButtonReceiverPendingIntent);
|
||||
setSessionToken(mediaSession.getSessionToken());
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -487,37 +481,9 @@ public class MusicService extends MediaBrowserServiceCompat implements
|
|||
|
||||
@Override
|
||||
public IBinder onBind(Intent intent) {
|
||||
// For Android auto, need to call super, or onGetRoot won't be called.
|
||||
if (intent != null && "android.media.browse.MediaBrowserService".equals(intent.getAction())) {
|
||||
return super.onBind(intent);
|
||||
}
|
||||
return musicBind;
|
||||
}
|
||||
|
||||
@Nullable
|
||||
@Override
|
||||
public BrowserRoot onGetRoot(@NonNull String clientPackageName, int clientUid, @Nullable Bundle rootHints) {
|
||||
|
||||
// Check origin to ensure we're not allowing any arbitrary app to browse app contents
|
||||
if (!mPackageValidator.isKnownCaller(clientPackageName, clientUid)) {
|
||||
// Request from an untrusted package: return an empty browser root
|
||||
return new BrowserRoot(AutoMediaIDHelper.MEDIA_ID_EMPTY_ROOT, null);
|
||||
}
|
||||
|
||||
return new BrowserRoot(AutoMediaIDHelper.MEDIA_ID_ROOT, null);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onLoadChildren(@NonNull String parentId, @NonNull Result<List<MediaBrowserCompat.MediaItem>> result) {
|
||||
if (AutoMediaIDHelper.MEDIA_ID_EMPTY_ROOT.equals(parentId)) {
|
||||
result.sendResult(new ArrayList<>());
|
||||
} else if (mMusicProvider.isInitialized()) {
|
||||
result.sendResult(mMusicProvider.getChildren(parentId, getResources()));
|
||||
} else {
|
||||
result.detach();
|
||||
mMusicProvider.retrieveMediaAsync(success -> result.sendResult(mMusicProvider.getChildren(parentId, getResources())));
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onRebind(Intent intent) {
|
||||
|
@ -744,12 +710,8 @@ public class MusicService extends MediaBrowserServiceCompat implements
|
|||
.putBitmap(MediaMetadataCompat.METADATA_KEY_ALBUM_ART, null)
|
||||
.putLong(MediaMetadataCompat.METADATA_KEY_NUM_TRACKS, getPlayingQueue().size());
|
||||
|
||||
if (CarHelper.isCarUiMode(this)) {
|
||||
mediaSession.setMetadata(metaData.build());
|
||||
}
|
||||
|
||||
|
||||
if (PreferenceUtil.getInstance(this).albumArtOnLockscreen() || CarHelper.isCarUiMode(this)) {
|
||||
if (PreferenceUtil.getInstance(this).albumArtOnLockscreen()) {
|
||||
final Point screenSize = RetroUtil.getScreenSize(MusicService.this);
|
||||
final BitmapRequestBuilder<?, Bitmap> request = SongGlideRequest.Builder.from(Glide.with(MusicService.this), song)
|
||||
.checkIgnoreMediaStore(MusicService.this)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue