下面的代码是带有使用媒体会话的控件的音乐通知播放器。每当我单击通知中的控件时,它就会崩溃并出现上述错误。请参阅下面的代码,如果我错了,请纠正我。在下面的代码中,我使用媒体会话和广播接收器来构建通知。“track”是我所有歌曲数据的模型类。
try {
if (track.getImage() == null) {
track.setImage(BitmapFactory.decodeResource(context.getResources(),
R.mipmap.ic_launcher));
}
NotificationManagerCompat notificationManagerCompat = NotificationManagerCompat.from(context);
MediaSessionCompat mediaSessionCompat = new MediaSessionCompat(context, "tag");
mediaSessionCompat.setMetadata(
new MediaMetadataCompat.Builder()
.putString(MediaMetadata.METADATA_KEY_TITLE, track.getTitle())
.putString(MediaMetadata.METADATA_KEY_ARTIST, track.getArtist())
.putBitmap(MediaMetadata.METADATA_KEY_ALBUM_ART, track.getImage())
.putString(MediaMetadata.METADATA_KEY_ALBUM, track.getAlbum())
.build()
);
mediaSessionCompat.setFlags(
MediaSessionCompat.FLAG_HANDLES_MEDIA_BUTTONS |
MediaSessionCompat.FLAG_HANDLES_TRANSPORT_CONTROLS);
PlaybackStateCompat.Builder stateBuilder = new PlaybackStateCompat.Builder();
stateBuilder.setActiveQueueItemId(MediaSession.QueueItem.UNKNOWN_ID);
long actions = PlaybackStateCompat.ACTION_PLAY_PAUSE | PlaybackStateCompat.ACTION_STOP | PlaybackStateCompat.ACTION_SKIP_TO_NEXT | PlaybackStateCompat.ACTION_SKIP_TO_PREVIOUS;
stateBuilder.setActions(actions);
if (isPlaying) {
stateBuilder.setState(PlaybackStateCompat.STATE_PLAYING, 0, 1.0f);
mediaSessionCompat.setActive(true);
} else {
stateBuilder.setState(PlaybackStateCompat.STATE_PAUSED, 0, 1.0f);
mediaSessionCompat.setActive(true);
}
mediaSessionCompat.setPlaybackState(stateBuilder.build());
Bitmap icon = track.getImage();
PendingIntent pendingIntentPrevious;
int drw_previous;
// …Run Code Online (Sandbox Code Playgroud) notifications android webview android-mediaplayer mediasession