是否可以创建一个播放特定Uri的通知,即使它是库中的歌曲也是如此?当我尝试传递这种类型的Uri时,我只会得到默认的通知声音。
我一直在寻找解决方案,并且我发现了很多有关如何确保通知不会干扰音乐的评论,但是我找不到能播放音乐的东西。我看到一些讨论在api> = 26中做什么的解决方案,但我不想将其限制在oreo以上,因此我猜测我需要一个
public void showNotification(String title, String content, Uri uriSound) {
if (mNotificationManager == null) return;
NotificationCompat.Builder builder = new NotificationCompat.Builder(mContext, "default")
.setSmallIcon(R.mipmap.ic_launcher) // notification icon
.setContentTitle(title) // title for notification
.setContentText(content)// message for notification
.setSound(uriSound) // set alarm sound for notification
.setAutoCancel(true); // clear notification after click
Intent intent = new Intent(mContext, MyCalendarReceiver.class);
PendingIntent pi = PendingIntent.getActivity(mContext, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT);
builder.setContentIntent(pi);
mNotificationManager.notify(0, builder.build());
}
当我打电话给我时,我传入的是路径为/external/audio/media/2092
的Uri。通过与媒体播放器一起播放,我已经确认这是库中的歌曲。
private void testMedia(Uri uriSound) {
if (mMediaPlayer != null) {
mMediaPlayer.reset();
mMediaPlayer = null;
}
mMediaPlayer = MediaPlayer.create(mContext, uriSound);
mMediaPlayer.start();
}
因此可以通过MediaPlayer播放,但是当我将此Uri传递给通知生成器时,我得到的只是一个“叮!”。 (默认的通知声音)。 是否可以让通知播放歌曲,还是我需要在无声音的情况下显示通知并单独播放歌曲? TIA,迈克