Почему MediaSession не меняет фон экрана блокировки (может быть проблема с размером растрового изображения: читайте для получения дополнительной информации)?
Я застрял в этой проблеме в течение последних 6 дней после глубокого исследования в СМИ, я нашел эту важную линию
- Оформление альбома для отображения на экране блокировки. Изображение представляет собой растровое изображение с максимальным размером 320x320 точек на дюйм (если оно больше, то оно уменьшается).
Теперь, вот мой код сеанса медиа и уведомления...
МЕДИА СЕССИЯ
@RequiresApi(api = Build.VERSION_CODES.LOLLIPOP)
private void initMediaSession() {
if (mediaSessionManager != null) return;
mediaSessionManager = (android.media.session.MediaSessionManager) getSystemService(Context.MEDIA_SESSION_SERVICE);
mediaSession = new MediaSessionCompat(getApplicationContext(), "AudioPlayer");
transportControls = mediaSession.getController().getTransportControls();
mediaSession.setActive(true);
mediaSession.setFlags(MediaSessionCompat.FLAG_HANDLES_TRANSPORT_CONTROLS);
updateMetaData();
//=============callBacks of Methods==============================//
mediaSession.setCallback(new MediaSessionCompat.Callback() {
@Override
public void onPlay() {
play();
super.onPlay();
}
@Override
public void onSkipToNext() {
next();
super.onSkipToNext();
}
@Override
public void onSkipToPrevious() {
back();
super.onSkipToPrevious();
}
});
}
метод метаданных...
public void updateMetaData(){
MediaMetadataCompat.Builder builder = new MediaMetadataCompat.Builder();
builder.putString(MediaMetadataCompat.METADATA_KEY_ARTIST, Artist);
builder.putString(MediaMetadataCompat.METADATA_KEY_ALBUM, Album);
builder.putString(MediaMetadataCompat.METADATA_KEY_TITLE, Title);
// builder.putBitmap(MediaMetadataCompat.METADATA_KEY_ALBUM, bitmap1);
builder.putBitmap(MediaMetadataCompat.METADATA_KEY_ALBUM_ART, bitmap1);
mediaSession.setMetadata(builder.build());
}
Теперь УВЕДОМЛЕНИЕ....
public void BuildNotificatio(){
//============Getting Bitmap for setting large icon==========//
Bitmap bitmap;
MediaMetadataRetriever mmr = new MediaMetadataRetriever();
mmr.setDataSource(PATH.get(position));
byte[] data = mmr.getEmbeddedPicture();
if (data != null) {
bitmap = BitmapFactory.decodeByteArray(data, 0, data.length);
} else {
bitmap=BitmapFactory.decodeResource(getResources(),
R.drawable.example_picture);
}
//==========================================================//
if (Build.VERSION.SDK_INT>=Build.VERSION_CODES.O) {
Notification builder = new NotificationCompat.Builder(this,
notification.CHANNEL_ID_ONE)
.setShowWhen(false)
.setStyle(new
android.support.v4.media.app.NotificationCompat.MediaStyle()
.setMediaSession(mediaSession.getSessionToken())
.setShowActionsInCompactView(0,1,2)
.setShowCancelButton(true))
.setSmallIcon(android.R.drawable.stat_sys_headset)
.setColor(getResources().getColor(R.color.colorAccent))
.setContentTitle(Title)
.setContentText(Artist)
.setLargeIcon(bitmap)
.addAction(android.R.drawable.ic_media_previous,"",backIntent)
.addAction(index,"",playIntent)
.addAction(android.R.drawable.ic_media_next,"",nextIntent)
.setVisibility(NotificationCompat.VISIBILITY_PUBLIC)
.build();
startForeground(Notification_ID,builder);
}else{
Notification notification = new NotificationCompat.Builder(this)
.setStyle(new
android.support.v4.media.app.NotificationCompat.MediaStyle()
.setMediaSession(mediaSession.getSessionToken()))
.setShowWhen(false)
.setSmallIcon(android.R.drawable.stat_sys_headset)
.setVisibility(NotificationCompat.VISIBILITY_PUBLIC)
.setLargeIcon(bitmap)
.build();
startForeground(Notification_ID,notification);
}
}
Все работает нормально, как элементы управления на экране блокировки и т. Д., Но единственная проблема заключается не в изменении обоев экрана блокировки устройства
Как я могу добиться этого... ИЛИ
Как проверить размер dp растрового изображения или уменьшить масштаб растрового изображения до требуемого размера dp
Не стесняйтесь спрашивать дополнительную информацию