Я хочу создать уведомление для моего музыкального плеера.Я хочу использовать два разных пользовательских уведомления, одно для области уведомлений, а другое для экрана блокировки.Я использовал setPublicVersion в конструкторе уведомлений для экрана блокировки, но он не работает.
NotificationCompat.Builder builder = new NotificationCompat.Builder(this, "media");
RemoteViews remoteViews = new RemoteViews(getPackageName(), R.layout.notification);
remoteViews.setOnClickPendingIntent(R.id.play, MediaButtonReceiver.buildMediaButtonPendingIntent(this,
PlaybackStateCompat.ACTION_PLAY_PAUSE));
remoteViews.setOnClickPendingIntent(R.id.pause, MediaButtonReceiver.buildMediaButtonPendingIntent(this,
PlaybackStateCompat.ACTION_PLAY_PAUSE));
builder
.setCustomContentView(remoteViews)
.setContentIntent(contentPendingIntent)
.setSmallIcon(R.drawable.logo)
.setVisibility(VISIBILITY_PRIVATE)
.setPublicVersion(getLockScreenBuilder(state))
.setDeleteIntent(MediaButtonReceiver.buildMediaButtonPendingIntent(getApplicationContext(), PlaybackStateCompat.ACTION_STOP));
startForeground(10, builder.build());
// это уведомление для экрана блокировки
private Notification getLockScreenBuilder(PlaybackStateCompat state) {
NotificationCompat.Builder builder = new NotificationCompat.Builder(this, "media");
PendingIntent contentPendingIntent = PendingIntent.getActivity(this, 0, getPlayerIntent(), PendingIntent.FLAG_UPDATE_CURRENT);
RemoteViews remoteViews = new RemoteViews(getPackageName(), R.layout.notification_lock_screen);
remoteViews.setImageViewBitmap(R.id.track_name, textAsBitmap(currentTrack.getTitle(), Typeface.createFromAsset(getAssets(), "iran_sans_mobile_fa_num_bold.ttf"), 45));
remoteViews.setImageViewBitmap(R.id.channel_title, textAsBitmap(channelTitle, Typeface.createFromAsset(getAssets(), "iran_sans_mobile_fa_num_medium.ttf"), 40));
if (state.getState() == PlaybackStateCompat.STATE_PLAYING) {
remoteViews.setViewVisibility(R.id.pause, VISIBLE);
remoteViews.setViewVisibility(R.id.play, GONE);
} else {
remoteViews.setViewVisibility(R.id.pause, GONE);
remoteViews.setViewVisibility(R.id.play, VISIBLE);
}
remoteViews.setOnClickPendingIntent(R.id.play, MediaButtonReceiver.buildMediaButtonPendingIntent(this,
PlaybackStateCompat.ACTION_PLAY_PAUSE));
remoteViews.setOnClickPendingIntent(R.id.pause, MediaButtonReceiver.buildMediaButtonPendingIntent(this,
PlaybackStateCompat.ACTION_PLAY_PAUSE));
remoteViews.setOnClickPendingIntent(R.id.previous, MediaButtonReceiver.buildMediaButtonPendingIntent
(this, PlaybackStateCompat.ACTION_SKIP_TO_PREVIOUS));
remoteViews.setOnClickPendingIntent(R.id.next, MediaButtonReceiver.buildMediaButtonPendingIntent
(this, PlaybackStateCompat.ACTION_SKIP_TO_NEXT));
Glide.with(getApplicationContext()).load(Url.ROOT_URL + "storage/podcasts/" + currentTrack.getCoverImage()).asBitmap().diskCacheStrategy(DiskCacheStrategy.ALL).into(new SimpleTarget<Bitmap>(100, 100) {
@Override
public void onResourceReady(Bitmap resource, GlideAnimation<? super Bitmap> glideAnimation) {
remoteViews.setImageViewBitmap(R.id.image, resource);
}
});
builder.setCustomContentView(remoteViews)
.setContentIntent(contentPendingIntent)
.setSmallIcon(R.drawable.logo)
.setVisibility(VISIBILITY_PUBLIC)
.setDeleteIntent(MediaButtonReceiver.buildMediaButtonPendingIntent(getApplicationContext(), PlaybackStateCompat.ACTION_STOP));
return builder.build();
}
Моя проблема в том, что уведомление на экране блокировкианалогично пользовательскому представлению, используемому для области уведомлений, и пользовательскому представлению для уведомлений на экране блокировки не работает