flutter - Flutter audio_service 实现无队列的skipToNext
问题描述
我有一个包含不同部分的长音频文件。我有一个Map
包含这些部分开始的地方。
我想为它实现skipToNext()
和skipToPrevious
方法。
我可以访问里面的地图BackgroundAudioTask
。
我已经实现onSkipToNext
了这样的:
@override
Future<void> onSkipToNext() async => () {
print('next pressed');
final currentIndex = _getCurrentTrackIndex(_player.position);
print(currentIndex);
if (currentIndex < _tracks.length - 1) {
_player.seek(
Duration(milliseconds: _tracks[currentIndex + 1]['start']),
);
}
};
_tracks
看起来像这样:
[{id: 1, title: INTRODUCTION, start: 0}, {id: 2, title: Next track, start: 68347},]
MediaControl.skipToNext
但是当我从通知或
AudioService.skipToNext();
Flutter UI 中按下时。
它不起作用,即next pressed
控制台中没有显示,音频也不起作用。
难道我做错了什么?MediaControl.skipToNext
如果没有队列,我不能按吗?
如果我不能这样做,我该如何实现这样的功能?
注意:我just_audio
用于播放音频
编辑:这是我的systemActions
systemActions: [
MediaAction.seekTo,
MediaAction.seekForward,
MediaAction.seekBackward,
MediaAction.skipToNext,
MediaAction.skipToPrevious,
],
onSkipToNext()
已解决:正如接受的答案所暗示的那样,问题的情况是错误的实施。
解决方案
假设其他一切正常,只是这两个跳过操作不起作用,您需要做的第一件事是将skipToNext
and包含skipToPrevious
在controls
参数中,AudioServiceBackground.setState
而不是systemActions
. systemActions
仅适用于不可点击的按钮(例如seekTo
)。
如果您希望这些队列跳过操作在 Android 上运行,您还必须传递androidEnableQueue: true
给。AudioService.start
为了完整起见,我还要提一下,除非您在AndroidManifest.xml
文件中声明了广播接收器,否则所有通知按钮(或耳机按钮)都不会在 Android 上工作:
<receiver android:name="com.ryanheise.audioservice.MediaButtonReceiver" >
<intent-filter>
<action android:name="android.intent.action.MEDIA_BUTTON" />
</intent-filter>
</receiver>
但除了所有这些之外,我注意到您的代码包含一个与 audio_service 无关的细微编程错误。您的实现onSkipToNext
只是返回一个闭包() { ... }
,因此即使正在调用此回调,也不会调用闭包内的代码。所以你需要替换=> () { ... }
为{ ... }
.
推荐阅读
- python - One-hot encodings in Keras without for loops
- google-app-engine - How do I force Google App Deploy to upload a tgz file of my node app (Meteor) instead of 57K individual files?
- jestjs - SyntaxError: Unexpected token export with SPFx solution while running Jest
- c++ - Implementations of buttons in Qt / C++
- excel - How do I create Pivot Cache using a defined range as data source without a type mismatch error
- python-3.x - How to compile .py to .exe with modules unsupported by pyinstaller?
- c++ - 是否可以在编译时连接两个 `const char *` 类型的字符串?
- javascript - 如何使用扩展运算符 Javascript 动态推送数组
- sapui5 - sapui5 无法在详细页面显示数据
- performance - Powershell TCP接收文件慢