Почему 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

Не стесняйтесь спрашивать дополнительную информацию

0 ответов