Replaced Ion with Glide. Big performance boost, and should also fix the FCs many people get because of recycled bitmaps. Fixed the ripple flickering by using ?selectableItemBackground on Lollipop again instead of custom ripple. Search is broken for now, remake in progress.
This commit is contained in:
parent
c75ab6bf15
commit
ee2b661eb4
34 changed files with 448 additions and 667 deletions
|
|
@ -22,6 +22,10 @@ import android.preference.PreferenceManager;
|
|||
import android.util.Log;
|
||||
import android.widget.Toast;
|
||||
|
||||
import com.bumptech.glide.Glide;
|
||||
import com.bumptech.glide.request.Request;
|
||||
import com.bumptech.glide.request.RequestListener;
|
||||
import com.bumptech.glide.request.target.Target;
|
||||
import com.kabouzeid.gramophone.App;
|
||||
import com.kabouzeid.gramophone.R;
|
||||
import com.kabouzeid.gramophone.appwidget.MusicPlayerWidget;
|
||||
|
|
@ -32,9 +36,6 @@ import com.kabouzeid.gramophone.model.MusicRemoteEvent;
|
|||
import com.kabouzeid.gramophone.model.Song;
|
||||
import com.kabouzeid.gramophone.util.InternalStorageUtil;
|
||||
import com.kabouzeid.gramophone.util.MusicUtil;
|
||||
import com.koushikdutta.async.future.Future;
|
||||
import com.koushikdutta.async.future.FutureCallback;
|
||||
import com.koushikdutta.ion.Ion;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.util.ArrayList;
|
||||
|
|
@ -79,7 +80,7 @@ public class MusicService extends Service implements MediaPlayer.OnPreparedListe
|
|||
private PlayingNotificationHelper playingNotificationHelper;
|
||||
private AudioManager audioManager;
|
||||
private RemoteControlClient remoteControlClient;
|
||||
private Future remoteControlClientAlbumArtTask;
|
||||
private Request remoteControlClientAlbumArtRequest;
|
||||
private PowerManager.WakeLock wakeLock;
|
||||
|
||||
public MusicService() {
|
||||
|
|
@ -357,17 +358,26 @@ public class MusicService extends Service implements MediaPlayer.OnPreparedListe
|
|||
.putLong(MediaMetadataRetriever.METADATA_KEY_DURATION, song.duration)
|
||||
.apply();
|
||||
|
||||
if (remoteControlClientAlbumArtTask != null) remoteControlClientAlbumArtTask.cancel();
|
||||
remoteControlClientAlbumArtTask = Ion.with(this)
|
||||
.load(MusicUtil.getAlbumArtUri(song.albumId).toString())
|
||||
.noCache()
|
||||
if (remoteControlClientAlbumArtRequest != null) remoteControlClientAlbumArtRequest.clear();
|
||||
remoteControlClientAlbumArtRequest = Glide.with(this)
|
||||
.loadFromMediaStore(MusicUtil.getAlbumArtUri(song.albumId))
|
||||
.asBitmap()
|
||||
.setCallback(new FutureCallback<Bitmap>() {
|
||||
.skipMemoryCache(true)
|
||||
.listener(new RequestListener<Uri, Bitmap>() {
|
||||
@Override
|
||||
public void onCompleted(Exception e, Bitmap result) {
|
||||
updateRemoteControlClientBitmap(result);
|
||||
public boolean onException(Exception e, Uri model, Target<Bitmap> target, boolean isFirstResource) {
|
||||
updateRemoteControlClientBitmap(null);
|
||||
return false;
|
||||
}
|
||||
});
|
||||
|
||||
@Override
|
||||
public boolean onResourceReady(Bitmap resource, Uri model, Target<Bitmap> target, boolean isFromMemoryCache, boolean isFirstResource) {
|
||||
updateRemoteControlClientBitmap(resource);
|
||||
return false;
|
||||
}
|
||||
})
|
||||
.into(-1, -1)
|
||||
.getRequest();
|
||||
}
|
||||
|
||||
private void updateRemoteControlClientBitmap(final Bitmap albumArt) {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue