通知中心全部控制逻辑已达成,即将进入后台与播放歌曲标题推送的优化
This commit is contained in:
@@ -0,0 +1,9 @@
|
|||||||
|
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
|
android:width="24dp"
|
||||||
|
android:height="24dp"
|
||||||
|
android:viewportWidth="24"
|
||||||
|
android:viewportHeight="24">
|
||||||
|
<path
|
||||||
|
android:fillColor="#FFFFFF"
|
||||||
|
android:pathData="M6,18l8.5-6L6,6v12zM16,6v12h2V6h-2z"/>
|
||||||
|
</vector>
|
||||||
@@ -0,0 +1,9 @@
|
|||||||
|
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
|
android:width="24dp"
|
||||||
|
android:height="24dp"
|
||||||
|
android:viewportWidth="24"
|
||||||
|
android:viewportHeight="24">
|
||||||
|
<path
|
||||||
|
android:fillColor="#FFFFFF"
|
||||||
|
android:pathData="M6,19h4V5H6v14zm8-14v14h4V5h-4z"/>
|
||||||
|
</vector>
|
||||||
@@ -0,0 +1,9 @@
|
|||||||
|
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
|
android:width="24dp"
|
||||||
|
android:height="24dp"
|
||||||
|
android:viewportWidth="24"
|
||||||
|
android:viewportHeight="24">
|
||||||
|
<path
|
||||||
|
android:fillColor="#FFFFFF"
|
||||||
|
android:pathData="M8,5v14l11,-7z"/>
|
||||||
|
</vector>
|
||||||
@@ -0,0 +1,9 @@
|
|||||||
|
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
|
android:width="24dp"
|
||||||
|
android:height="24dp"
|
||||||
|
android:viewportWidth="24"
|
||||||
|
android:viewportHeight="24">
|
||||||
|
<path
|
||||||
|
android:fillColor="#FFFFFF"
|
||||||
|
android:pathData="M6,6h2v12H6zm3.5,6l8.5-6v12z"/>
|
||||||
|
</vector>
|
||||||
@@ -17,23 +17,23 @@ class PlaybackStateManager {
|
|||||||
Duration get duration => _duration;
|
Duration get duration => _duration;
|
||||||
|
|
||||||
// ⭐ 核心改动:使用 playPause 替代 play/pause 分离
|
// ⭐ 核心改动:使用 playPause 替代 play/pause 分离
|
||||||
|
// lib/audio/playback_state_manager.dart
|
||||||
audio_service.PlaybackState get playbackState {
|
audio_service.PlaybackState get playbackState {
|
||||||
// ⭐ 固定使用 playPause,不再动态切换
|
|
||||||
final playControl = audio_service.MediaControl(
|
final playControl = audio_service.MediaControl(
|
||||||
androidIcon: _playing ? 'drawable/ic_pause' : 'drawable/ic_play',
|
androidIcon: _playing ? 'drawable/ic_pause' : 'drawable/ic_play',
|
||||||
label: _playing ? '暂停' : '播放',
|
label: _playing ? '暂停' : '播放',
|
||||||
action: audio_service.MediaAction.playPause, // 固定
|
action: audio_service.MediaAction.playPause,
|
||||||
);
|
);
|
||||||
|
|
||||||
final controls = [
|
final controls = [
|
||||||
audio_service.MediaControl(
|
audio_service.MediaControl(
|
||||||
androidIcon: 'drawable/ic_previous',
|
androidIcon: 'drawable/ic_previous', // 上一首
|
||||||
label: '上一曲',
|
label: '上一曲',
|
||||||
action: audio_service.MediaAction.skipToPrevious,
|
action: audio_service.MediaAction.skipToPrevious,
|
||||||
),
|
),
|
||||||
playControl,
|
playControl,
|
||||||
audio_service.MediaControl(
|
audio_service.MediaControl(
|
||||||
androidIcon: 'drawable/ic_next',
|
androidIcon: 'drawable/ic_next', // 下一首
|
||||||
label: '下一曲',
|
label: '下一曲',
|
||||||
action: audio_service.MediaAction.skipToNext,
|
action: audio_service.MediaAction.skipToNext,
|
||||||
),
|
),
|
||||||
@@ -42,10 +42,9 @@ class PlaybackStateManager {
|
|||||||
return audio_service.PlaybackState(
|
return audio_service.PlaybackState(
|
||||||
controls: controls,
|
controls: controls,
|
||||||
processingState: audio_service.AudioProcessingState.ready,
|
processingState: audio_service.AudioProcessingState.ready,
|
||||||
playing: _playing, // ⭐ 这里才是真正的播放状态,通知栏会根据它显示正确的图标
|
playing: _playing,
|
||||||
androidCompactActionIndices: const [0, 1, 2],
|
androidCompactActionIndices: const [0, 1, 2], // 显示全部三个
|
||||||
updateTime: DateTime.now(),
|
updateTime: DateTime.now(),
|
||||||
//extras: {'_refresh': DateTime.now().millisecondsSinceEpoch},
|
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user