![](/img/trans.png)
[英]Android - How can I update data or UI in my Activity when Push Notification FCM is received?
[英]How to update activity UI when i click a button in my notification?
我制作了一个媒体播放器应用程序,它通过服务在后台播放歌曲。 我有一个通知,显示上一个、暂停/播放和下一个按钮。
这些按钮可以工作,但是当我单击通知中的暂停/播放按钮时,我想更改活动中的暂停/播放按钮状态。
因此,例如,当我在通知中暂停歌曲时,我希望它也更改我的活动中的按钮暂停可绘制。
我怎样才能做到这一点?
我的服务中的通知代码通过传递 playBackStatus(上一个、暂停/播放、下一个)来处理按钮状态。
private void NotificationBuilder(PlaybackStatus playbackStatus){
int notificationAction = R.drawable.ic_action_pause_white;
PendingIntent play_pause_action = null;
if (playbackStatus == PlaybackStatus.PLAYING){
//Pause button created when song is PLAYING
notificationAction = R.drawable.ic_action_pause_white;
play_pause_action = playbackAction(1);
}else if (playbackStatus == PlaybackStatus.PAUSED){
//Play button created when song is PAUSED
notificationAction = R.drawable.ic_action_play;
play_pause_action = playbackAction(0);
}
编辑:
play_pause_action 是 PendingIntent
notificationBuilder.setShowWhen(false)
.setStyle(new android.support.v4.media.app.NotificationCompat.MediaStyle().setMediaSession(mMediaSessionCompat.getSessionToken()).setShowActionsInCompactView(0, 1 ,2))
.setSmallIcon(android.R.drawable.stat_sys_headset).setContentTitle(activeSong.getTitle()).setContentText(activeSong.getArtist())
.addAction(R.drawable.ic_action_prev_white, null, playbackAction(3))
.addAction(notificationAction, null, play_pause_action).addAction(R.drawable.ic_action_next_white, null, playbackAction(2))
.setColor(getResources().getColor(R.color.theme1));
private PendingIntent playbackAction(int actionNumber) {
Intent playbackAction = new Intent(this, MediaPlayerService.class);
switch (actionNumber) {
case 0:
// Play
playbackAction.setAction(Constants.ACTIONS.mACTION_PLAY);
return PendingIntent.getService(this, actionNumber, playbackAction, 0);
case 1:
// Pause
playbackAction.setAction(Constants.ACTIONS.mACTION_PAUSE);
return PendingIntent.getService(this, actionNumber, playbackAction, 0);
case 2:
// Next track
playbackAction.setAction(Constants.ACTIONS.mACTION_NEXT);
return PendingIntent.getService(this, actionNumber, playbackAction, 0);
case 3:
// Previous track
playbackAction.setAction(Constants.ACTIONS.mACTION_PREVIOUS);
return PendingIntent.getService(this, actionNumber, playbackAction, 0);
default:
break;
}
return null;
}
尝试这个 :
Button btn=((Button)MainActivity.this.findViewById(R.id.btnPlay));
if (playbackStatus == PlaybackStatus.PLAYING){
//Pause button created when song is PLAYING
btn.setImageResource(R.drawable.pause);
notificationAction = R.drawable.ic_action_pause_white;
play_pause_action = playbackAction(1);
}else if (playbackStatus == PlaybackStatus.PAUSED){
//Play button created when song is PAUSED
btn.setImageResource(R.drawable.play);
notificationAction = R.drawable.ic_action_play;
play_pause_action = playbackAction(0);
}
创建一个界面,然后您就可以处理按钮。在您的界面中添加一个方法,例如示例 handleMybutton (View v){ handle your button what ever you want to do }
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.