在 API 30 上,当音轨暂停时,MediaStyle 通知进度条仍然会继续前进的问题可以通过以下方式解决:
在播放音轨时,你需要在 Notification.Builder
中设置 setProgress()
方法来更新进度条。然后,在音轨暂停时,你需要调用 setProgress()
方法,并将进度条设置为当前的进度,以确保进度条停止前进。
以下是一个示例代码:
// 创建一个通知渠道
String channelId = "mediaPlayerChannel";
NotificationChannel channel = new NotificationChannel(channelId, "Media Player", NotificationManager.IMPORTANCE_LOW);
NotificationManager notificationManager = getSystemService(NotificationManager.class);
notificationManager.createNotificationChannel(channel);
// 创建一个 MediaStyle 通知
NotificationCompat.Builder notificationBuilder = new NotificationCompat.Builder(this, channelId)
.setSmallIcon(R.drawable.ic_notification)
.setContentTitle("Media Player")
.setContentText("Playing Music")
.setStyle(new androidx.media.app.NotificationCompat.MediaStyle().setShowActionsInCompactView(0, 1, 2))
.setPriority(NotificationCompat.PRIORITY_LOW);
// 设置进度条
notificationBuilder.setProgress(100, 50, false); // 设置当前进度为 50,总进度为 100
// 在音轨暂停时,更新进度条
notificationBuilder.setProgress(100, 50, true); // 设置当前进度为 50,总进度为 100,并且参数 indeterminate 为 true
// 构建通知并显示
Notification notification = notificationBuilder.build();
notificationManager.notify(1, notification);
在以上示例中,我们使用 setProgress()
方法来设置进度条的当前进度和总进度。在音轨暂停时,我们再次调用 setProgress()
方法,将当前进度设置为已经播放的进度,并将参数 indeterminate
设置为 true
,以确保进度条停止前进。
请注意,以上代码只是一个示例,你需要根据你的实际需求进行适当的修改和调整。