【问题标题】:Flutter- How to know AudioService is stopped?Flutter-如何知道 AudioService 已停止?
【发布时间】:2021-05-24 16:14:21
【问题描述】:

我正在使用 audio_service 颤振包。如果音频服务停止,我想弹出一个播放器页面。如何获取音频服务停止事件?我没有找到任何事件来检查服务是否停止

【问题讨论】:

    标签: flutter flutter-ios flutter-android


    【解决方案1】:

    (答案更新:从v0.18开始,服务在应用运行时一直有效,因此不再需要检查。以下答案适用于v0.17及更早版本。)

    AudioService.running 将在服务运行时发出true,而在不运行时发出false

    要听它何时从true 变为false,您可以试试这个:

    // Cast runningStream from dynamic to the correct type.
    final runningStream =
        AudioService.runningStream as ValueStream<bool>;
    // Listen to stream pairwise and observe when it becomes false
    runningStream.pairwise().listen((pair) {
      final wasRunning = pair.first;
      final isRunning = pair.last;
      if (wasRunning && !isRunning) {
        // take action
      }
    });
    

    如果您想收听stopped 的播放状态,则需要确保您的后台音频任务实际上在onStop 中发出该状态更改:

      @override
      Future<void> onStop() async {
        await _player.dispose();
        // the "await" is important
        await AudioServiceBackground.setState(
            processingState: AudioProcessingState.stopped);
        // Shut down this task
        await super.onStop();
      }
    

    这样,您可以在 UI 中监听此状态:

    AudioService.playbackStateStream.listen((state) {
      if (state.processingState == AudioProcessingState.stopped)) {
        // take action
      }
    });
    

    【讨论】:

    • v0.18 版是否可以隐藏安卓通知? Stop() 似乎只是停止跟踪,但不隐藏通知。或者这是 v0.18 的伴随现象,我必须处理始终持续的通知?
    猜你喜欢
    • 2022-08-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-03
    • 1970-01-01
    相关资源
    最近更新 更多