问题描述
在我的应用程序中,当用户选择要播放的音频文件时,当文件准备就绪并且播放开始时,会成功显示MediaStyle通知.
In my app when the user chooses an audio file for playing, when the file is ready and the playback starts a MediaStyle Notification is shown successfully.
元数据信息已更新,标题,图标等.但是……
The metadata info is updated, title, icon etc. But…
1.Play/Pause button does not respond to clicks.
2.Clicking the notification does not open the activity.
3.Swipe gesture triggers also… nothing
我不知道我在想什么.您可以看看我的 MediaBrowserService 类.
I don’t know what I am missing. You can have a look at my MediaBrowserService class.
推荐答案
正在讨论的代码:
private void showMediaStyleNotification() {
// Given a media session and its context (usually the component containing the session)
// Create a NotificationCompat.Builder
// Get the session's metadata
MediaControllerCompat controller = session.getController();
MediaMetadataCompat mediaMetadata = controller.getMetadata();
MediaDescriptionCompat description = mediaMetadata.getDescription();
NotificationCompat.Builder builder = new NotificationCompat.Builder(this);
// Add the metadata for the currently playing track
builder
.setContentTitle(description.getTitle())
.setContentText(description.getSubtitle())
.setSubText(description.getDescription())
.setLargeIcon(description.getIconBitmap())
// Enable launching the player by clicking the notification
.setContentIntent(controller.getSessionActivity())
// Stop the service when the notification is swiped away
.setDeleteIntent(MediaButtonReceiver.buildMediaButtonPendingIntent(this,
PlaybackStateCompat.ACTION_STOP))
// Make the transport controls visible on the lockscreen
.setVisibility(NotificationCompat.VISIBILITY_PUBLIC)
// Add an app icon and set its accent color
// Be careful about the color
.setSmallIcon(R.drawable.ic_headset_pink_40dp)
.setColor(ContextCompat.getColor(this, R.color.secondaryColor))
// Add a pause button
.addAction(new NotificationCompat.Action(
R.drawable.ic_pause_white_40dp, getString(R.string.pause_label),
MediaButtonReceiver.buildMediaButtonPendingIntent(this,
PlaybackStateCompat.ACTION_PLAY_PAUSE)))
// Take advantage of MediaStyle features
.setStyle(new MediaStyle()
.setMediaSession(session.getSessionToken())
.setShowActionsInCompactView(0)
// Add a cancel button
.setShowCancelButton(true)
.setCancelButtonIntent(MediaButtonReceiver.buildMediaButtonPendingIntent(this,
PlaybackStateCompat.ACTION_STOP)));
// Display the notification and place the service in the foreground
startForeground(FOREGROUND_ID, builder.build());
}
}
initializeMediaSession:
initializeMediaSession:
stateBuilder = new PlaybackStateCompat.Builder()
.setActions(PlaybackStateCompat.ACTION_PLAY |
PlaybackStateCompat.ACTION_PLAY_PAUSE);
session.setPlaybackState(stateBuilder.build());
当我按播放/暂停键时,它会进入以下位置:getPlaybackStateFromPlayerState.唯一有问题的是播放/暂停按钮图形未更新.它总是显示暂停...
When I press play/pause it goes into here: getPlaybackStateFromPlayerState. The only problematic thing is that the play/pause button graphic is not updated. It always shows pause...
case STARTED:
return stateBuilder.setState(PlaybackStateCompat.STATE_PLAYING, currentPosition, playbackSpeed)
.setActions(PlaybackStateCompat.ACTION_PAUSE | PlaybackStateCompat.ACTION_PLAY_PAUSE
| PlaybackStateCompat.ACTION_STOP | PlaybackStateCompat.ACTION_SEEK_TO
| PlaybackStateCompat.ACTION_PLAY)
.build();
case PAUSED:
return stateBuilder.setState(PlaybackStateCompat.STATE_PAUSED, currentPosition, playbackSpeed)
.setActions(PlaybackStateCompat.ACTION_PLAY | PlaybackStateCompat.ACTION_PLAY_PAUSE
| PlaybackStateCompat.ACTION_STOP | PlaybackStateCompat.ACTION_SEEK_TO
| PlaybackStateCompat.ACTION_PAUSE)
.build();
这篇关于MediaStyleNotification:播放/暂停按钮不响应单击的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!