Sunucudan tüm yükleme görüntüleri için Glide kullanıyorum, ancak bunları bildirimlere ve RemoteControlClientCompat'a (kilit ekranlı bu harika şey) doğru bir şekilde ayarlamaya çalışırken sorun gidermeye çalışıyorum. Bir müzik çalar geliştiriyorum, bu yüzden bir şarkı değiştiğinde her zaman bildirimlerin şarkı kapağı değişmelidir. Bu koda sahibim ve ilk kez çalışıyor (imajın url'den veya çekilişten yüklenmesi), ancak ikinci kez çağrıldığında değil. Görüntü değişmiyor! Bir şarkı değiştirildiğinde CustomNotification çağrılır. Ve StartRemoteClient başlangıç etkinliğinde çağrılır.RemoteViews'ta Glide nasıl kullanılır?
Bunu yapmanın doğru yolu değilse, lütfen nasıl olduğunu bildirin.
public void CustomNotification() {
Log.d(TAG, "Set custom notification");
simpleRemoteView = new RemoteViews(getApplicationContext().getPackageName(), R.layout.notification_custom);
expandedRemoteView = new RemoteViews(getApplicationContext().getPackageName(), R.layout.notification_big);
mNotification = new NotificationCompat.Builder(getApplicationContext())
.setSmallIcon(R.mipmap.ic_main_logo)
.setTicker(mSongTitle + " - " + mSongAuthors)
.setContentTitle(mSongTitle).build();
setRemoteListeners(simpleRemoteView);
setRemoteListeners(expandedRemoteView);
try {
//Check if playingSong has a cover url, if not set one from drawable
if(!playingSong.has("cover")){
mDummyAlbumArt = BitmapFactory.decodeResource(getResources(),R.drawable.image_song_album);
mDummyAlbumArt2 = BitmapFactory.decodeResource(getResources(),R.drawable.image_song_album);
mDummyAlbumArt3 = BitmapFactory.decodeResource(getResources(),R.drawable.image_song_album);
}else {
Glide.with(MainActivity.context)
.load(API.imgUrl(playingSong.getString("cover_img")))
.asBitmap()
.into(new SimpleTarget<Bitmap>(100, 100) {
@Override
public void onResourceReady(Bitmap bitmap, GlideAnimation anim) {
mDummyAlbumArt = bitmap;
mDummyAlbumArt2 = bitmap;
mDummyAlbumArt3 = bitmap;
}
});
}
} catch (JSONException e) {
e.printStackTrace();
}
mNotification.contentView = simpleRemoteView;
mNotification.contentView.setTextViewText(R.id.textSongName, mSongTitle);
mNotification.contentView.setTextViewText(R.id.textAlbumName, mSongAuthors);
mNotification.contentView.setImageViewBitmap(R.id.imageViewAlbumArt, mDummyAlbumArt);
if (currentVersionSupportBigNotification) {
mNotification.bigContentView = expandedRemoteView;
mNotification.bigContentView.setTextViewText(R.id.textSongName, mSongTitle);
mNotification.bigContentView.setTextViewText(R.id.textAlbumName, mSongAuthors);
mNotification.bigContentView.setImageViewBitmap(R.id.imageViewAlbumArt, mDummyAlbumArt2);
}
if (mPlayer != null) {
if (!mPlayer.isPlaying()) {
mNotification.contentView.setImageViewResource(R.id.btnPlayPause, R.mipmap.play);
if (currentVersionSupportBigNotification) {
mNotification.bigContentView.setImageViewResource(R.id.btnPlayPause, R.mipmap.play);
}
} else {
mNotification.contentView.setImageViewResource(R.id.btnPlayPause, R.mipmap.pause);
if (currentVersionSupportBigNotification) {
mNotification.bigContentView.setImageViewResource(R.id.btnPlayPause, R.mipmap.pause);
}
}
}
mNotification.flags |= Notification.FLAG_ONGOING_EVENT;
if(currentVersionSupportBigNotification) { //As priority_max only suported on API 16, the same as big notification
mNotification.priority = Notification.PRIORITY_MAX;
}
startForeground(NOTIFICATION_ID, mNotification);
//update remote controls
if (currentVersionSupportLockScreenControls) {
remoteControlClientCompat.editMetadata(true)
.putString(MediaMetadataRetriever.METADATA_KEY_TITLE, mSongTitle + " - " + mSongAuthors)
.putBitmap(RemoteControlClientCompat.MetadataEditorCompat.METADATA_KEY_ARTWORK, mDummyAlbumArt3)
.apply();
}
}
public void setRemoteListeners(RemoteViews remoteViews){
Log.d(TAG,"Setting remote listeners");
PendingIntent piAppActivity = PendingIntent.getActivity(this, 0, new Intent(this, MainActivity.class),
PendingIntent.FLAG_UPDATE_CURRENT);
PendingIntent piPlayPause = PendingIntent.getService(this, 0, new Intent(MusicService.ACTION_TOGGLE_PLAYBACK), PendingIntent.FLAG_UPDATE_CURRENT);
PendingIntent piNext = PendingIntent.getService(this, 0, new Intent(MusicService.ACTION_SKIP), PendingIntent.FLAG_UPDATE_CURRENT);
PendingIntent piClose = PendingIntent.getService(this, 0, new Intent(MusicService.ACTION_STOP), PendingIntent.FLAG_UPDATE_CURRENT);
PendingIntent piPrevious = PendingIntent.getService(this, 0, new Intent(MusicService.ACTION_PREVIOUS), PendingIntent.FLAG_UPDATE_CURRENT);
remoteViews.setOnClickPendingIntent(R.id.linearLayoutNotification, piAppActivity);
remoteViews.setOnClickPendingIntent(R.id.btnPlayPause, piPlayPause);
remoteViews.setOnClickPendingIntent(R.id.btnNext, piNext);
remoteViews.setOnClickPendingIntent(R.id.btnDelete, piClose);
remoteViews.setOnClickPendingIntent(R.id.btnPrevious, piPrevious);
}
private void RegisterRemoteClient(){
// Use the media button APIs (if available) to register ourselves for media button
// events
MediaButtonHelper.registerMediaButtonEventReceiverCompat(mAudioManager, mMediaButtonReceiverComponent);
// Use the remote control APIs (if available) to set the playback state
if (remoteControlClientCompat == null) {
Intent intent = new Intent(Intent.ACTION_MEDIA_BUTTON);
intent.setComponent(mMediaButtonReceiverComponent);
remoteControlClientCompat = new RemoteControlClientCompat(PendingIntent.getBroadcast(this /*context*/,0 /*requestCode, ignored*/, intent /*intent*/, 0 /*flags*/));
RemoteControlHelper.registerRemoteControlClient(mAudioManager,remoteControlClientCompat);
}
remoteControlClientCompat.setPlaybackState(RemoteControlClient.PLAYSTATE_PLAYING);
remoteControlClientCompat.setTransportControlFlags(
RemoteControlClient.FLAG_KEY_MEDIA_PAUSE |
RemoteControlClient.FLAG_KEY_MEDIA_PREVIOUS |
RemoteControlClient.FLAG_KEY_MEDIA_NEXT |
RemoteControlClient.FLAG_KEY_MEDIA_STOP);
}
Bu konu engelleyebilir –