2015-08-24 2 views
0

Я создал собственный макет, который я использую RemoteView для применения макета к моему уведомлению. Все работает нормально.Нормальное уведомление применяется RemoteView, но BigPictureStyle не

Затем я также хотел реализовать BigPictureStyle для моего уведомления, поэтому, когда пользователь расширяет уведомление или когда оно является первым, уведомление становится больше и может отображать больше информации/больше значков.

Проблема заключается в следующем: когда уведомление расширяется, я не вижу кнопок, которые у меня есть на моем собственном макете (который показывает, когда он сжимается).

Мой вопрос: как мое расширенное уведомление имеет одинаковые кнопки?

Вот код, я использую, чтобы настроить свои уведомления:

Target mTarget; 
    String url = mMyTracks.get(mCurrentTrack).getCoverImgs(); 

    Intent notificationIntent; 
    notificationIntent = new Intent(getApplicationContext(), TopTracksActivity.class); 
    notificationIntent.putParcelableArrayListExtra(MediaPlayerDialogFragment.TRACKS, mMyTracks); 
    notificationIntent.putExtra(MediaPlayerDialogFragment.TRACK_NUMBER, mCurrentTrack); 

    PendingIntent notificationPendingIntent = 
      PendingIntent.getActivity(getApplicationContext(), 0, notificationIntent, PendingIntent.FLAG_UPDATE_CURRENT); 

    RemoteViews remoteView = new RemoteViews(getPackageName(), R.layout.notification); 
    remoteView.setTextViewText(R.id.textSongName, track.getName()); 
    remoteView.setTextViewText(R.id.textArtistName, track.getArtist()); 

    // Create base notification 
    NotificationCompat.Builder builder = 
      new NotificationCompat.Builder(getApplicationContext()) 
        .setSmallIcon(R.mipmap.ic_launcher) 
        .setContent(remoteView) 
        .setContentIntent(notificationPendingIntent); 

    //BigPicture notification style 
    final NotificationCompat.BigPictureStyle bigPictureStyle = new NotificationCompat.BigPictureStyle(); 
    bigPictureStyle.setBigContentTitle(track.getName()); 
    bigPictureStyle.setSummaryText(track.getArtist()); 

    mTarget = new Target() { 
     @Override 
     public void onBitmapLoaded(Bitmap bitmap, Picasso.LoadedFrom from) { 
      bigPictureStyle.bigPicture(bitmap); 
     } 

     @Override 
     public void onBitmapFailed(Drawable errorDrawable) {} 

     @Override 
     public void onPrepareLoad(Drawable placeHolderDrawable) {} 
    }; 

    Picasso.with(getApplicationContext()) 
      .load(url) 
      .into(mTarget); 

    // Build the notification 
    builder.setStyle(bigPictureStyle); 
    Notification notification = builder.build(); 

    // Get current track's image 
    Picasso.with(getApplicationContext()) 
      .load(url) 
      .into(remoteView, R.id.imageViewAlbumArt, 2503, notification); 

    startForeground(2503, notification); 

Спасибо! =]

+0

Может быть, вы хотите этого? http://stackoverflow.com/a/13340548/706833 надеюсь, что это поможет;) – iGoDa

ответ

0

Хотя я не смог найти, почему BigPictureStyle не использует RemoteView (пока), я нашел альтернативное решение: задайте действия для строителя. Это будет отображаться ТОЛЬКО при расширении уведомления.

Вот что я добавил в мой код, прямо перед тем, как задать стиль для моего строителя:

builder.addAction(R.drawable.ic_previous, "Previous", notificationPendingIntent); 
builder.addAction(R.drawable.ic_pause, "Pause", notificationPendingIntent); 
builder.addAction(R.drawable.ic_next, "Next", notificationPendingIntent); 
Смежные вопросы