更新LargeIcon通知

时间:2019-05-06 21:18:35

标签: java android android-notifications

每当音乐曲目更新时,我都尝试设置Either中的LargeIcon()

从API获取相册封面网址:

Notification

通知:

public String getAlbumCoverURL() {
    final StringRequest stringRequest = new StringRequest(Request.Method.GET, JsonData.getNightWavePlazaRadioLink(), new Response.Listener<String>() {
        @SuppressLint("CheckResult")
        @Override
        public void onResponse(String s) {
            try {
                JSONObject obj = new JSONObject(s);
                JSONObject info = obj.getJSONObject("playback");
                albumCoverURL = "https://plaza.one/img/" + info.getString("artwork");
            } catch (JSONException e) {
                e.printStackTrace();
            }
        }
    }, new Response.ErrorListener() {
        @Override
        public void onErrorResponse(VolleyError error) {
        }
    }
    );
    requestQueue.add(stringRequest);
    return albumCoverURL;
}

使用该库audiostream-metadata-retriever,我可以获得有关曲目的所有信息(艺术家和歌曲名称),该库具有名为void startNotify(Context context, String playbackStatus, String title, String albumCoverURL) { String titlesonge = "Plaza.one"; String artist; try { titlesonge = StringUtils.substringBefore(title, " - "); artist = StringUtils.substringAfter(title, " - "); } catch (Exception e) { titlesonge = title.substring(0, title.indexOf(" - ")); artist = title.substring(title.lastIndexOf(" - ") - 1); } Glide.with(context).asBitmap().load(albumCoverURL).apply(new RequestOptions().placeholder(R.drawable.icon2)).into(new SimpleTarget<Bitmap>() { @Override public void onResourceReady(@NonNull Bitmap resource, @Nullable Transition<? super Bitmap> transition) { largeIcon = resource; } }); int icon = R.drawable.ic_pause_white; Intent playbackAction = new Intent(service, RadioService.class); playbackAction.setAction(RadioService.ACTION_PAUSE); PendingIntent action = PendingIntent.getService(service, 1, playbackAction, 0); if (playbackStatus.equals(PlaybackStatus.PAUSED)) { icon = R.drawable.ic_play_white; playbackAction.setAction(RadioService.ACTION_PLAY); action = PendingIntent.getService(service, 2, playbackAction, 0); } Intent stopIntent = new Intent(service, RadioService.class); stopIntent.setAction(RadioService.ACTION_STOP); PendingIntent stopAction = PendingIntent.getService(service, 3, stopIntent, 0); Intent intent = new Intent(service, MainActivity.class); intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_SINGLE_TOP | Intent.FLAG_ACTIVITY_NEW_TASK); PendingIntent pendingIntent = PendingIntent.getActivity(service, 0, intent, 0); notificationManager.cancel(NOTIFICATION_ID); if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { NotificationManager manager = (NotificationManager) service.getSystemService(Context.NOTIFICATION_SERVICE); NotificationChannel channel = new NotificationChannel(PRIMARY_CHANNEL, PRIMARY_CHANNEL_NAME, NotificationManager.IMPORTANCE_LOW); channel.setLockscreenVisibility(Notification.VISIBILITY_PRIVATE); if (manager != null) { manager.createNotificationChannel(channel); } } NotificationCompat.Builder builder = new NotificationCompat.Builder(service, PRIMARY_CHANNEL) .setAutoCancel(false) .setContentTitle(titlesonge) .setContentText(artist) .setLargeIcon(largeIcon) .setContentIntent(pendingIntent) .setVisibility(NotificationCompat.VISIBILITY_PUBLIC) .setSmallIcon(R.drawable.smallwidth) .setColor(ContextCompat.getColor(context, R.color.khdar)) .addAction(icon, "pause", action) .addAction(R.drawable.ic_stop_white, "stop", stopAction) .setPriority(NotificationCompat.PRIORITY_HIGH) .setWhen(System.currentTimeMillis()) .setStyle(new android.support.v4.media.app.NotificationCompat.MediaStyle() .setMediaSession(service.getMediaSession().getSessionToken()) .setShowActionsInCompactView(0, 1) .setShowCancelButton(true) .setCancelButtonIntent(stopAction)); service.startForeground(NOTIFICATION_ID, builder.build()); } 的方法,每次音乐更改时都会更新,因此它为我提供了所有信息,已在此方法内添加onNewStreamTitle(),以使其在getAlbumCoverURL()方法更新时进行更新:

onNewStreamTitle()

我的问题:即使音乐已更改,通知图标也不会更新

先谢谢您

0 个答案:

没有答案