HarmonyOS 鸿蒙Next应用内直播后台播放

HarmonyOS 鸿蒙Next应用内直播后台播放 我想在观看直播的时候切到后台直播声音也能正常播放,我申请了audio_playback的长时任务也没有作用。

8 回复

【解决方案】

AVSession Kit是系统提供的音视频管控服务,用于统一管理系统中所有音视频行为,帮助开发者快速构建音视频统一展示和控制能力。AVSession Kit提供的能力范围包括:

  • 提供音视频统一管控能力,音视频应用接入AVSession后,可以发送应用的数据(比如正在播放的歌曲、歌曲的播放状态等)到系统播控中心。用户可以通过播控中心、语音助手等系统应用切换多个应用、多个设备播放。
  • AVSession Kit提供音频后台约束能力,应用接入AVSession(媒体会话)后,可以进行后台音频播放。通过系统播控中心,应用后台播放可见可控,音视频应用可统一控制。此功能需要同时申请后台任务。

 可以参考下相关示例media-provider:本示例主要展示了媒体会话(媒体提供方)的相关功能,使用@ohos.multimedia.avsession等接口实现媒体提供方与媒体播控中心自定义信息的交互功能。 - AtomGit | GitCode

更多关于HarmonyOS 鸿蒙Next应用内直播后台播放的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


现切到后台,会收到什么事件或错误么?

看看这个对你有没有用:鸿蒙长时任务开发方案

后台长时任务,添加​​​后台权限,KEEP_BACKGROUND_RUNNING,开启长时任务,

可参考下面案例:

https://developer.huawei.com/consumer/cn/blog/topic/03203668382167032

这个后台权限有了,还是不行,需要接入avssion吗,

需要的,

1. 项目概述

本项目旨在开发一个高效、可靠的数据处理系统,用于处理大规模数据集,并提供实时分析功能。系统将采用微服务架构,确保高可用性和可扩展性。

2. 主要功能

  • 数据采集:支持多种数据源(如数据库、API、文件等)的数据采集。
  • 数据处理:提供数据清洗、转换、聚合等处理功能。
  • 实时分析:支持实时数据流处理和分析。
  • 数据可视化:通过图表和仪表板展示分析结果。
  • 用户管理:提供用户认证、授权和角色管理功能。

3. 技术栈

  • 后端:Java (Spring Boot)、Python (Flask)
  • 前端:React.js、TypeScript
  • 数据库:MySQL、MongoDB、Redis
  • 消息队列:Kafka
  • 容器化:Docker、Kubernetes
  • 监控:Prometheus、Grafana

4. 系统架构

系统采用微服务架构,分为以下几个核心服务:

  1. 数据采集服务:负责从各种数据源采集数据。
  2. 数据处理服务:负责数据的清洗、转换和聚合。
  3. 实时分析服务:处理实时数据流并提供分析结果。
  4. 用户管理服务:处理用户认证和授权。
  5. 前端服务:提供用户界面。

各服务之间通过 REST API 和消息队列进行通信。

5. 部署方案

系统将部署在云平台上,采用容器化部署方案:

  • 使用 Docker 容器化每个微服务。
  • 使用 Kubernetes 进行容器编排和管理。
  • 使用 CI/CD 管道实现自动化部署。

6. 项目计划

  • 第一阶段(1-2个月):需求分析和系统设计。
  • 第二阶段(3-4个月):核心功能开发。
  • 第三阶段(1-2个月):测试和优化。
  • 第四阶段(1个月):部署和上线。

7. 团队组成

  • 项目经理:1人
  • 后端开发工程师:3人
  • 前端开发工程师:2人
  • 测试工程师:2人
  • DevOps工程师:1人

8. 预期成果

  • 完成一个可处理大规模数据的数据处理系统。
  • 实现实时数据分析功能。
  • 提供友好的数据可视化界面。
  • 确保系统的高可用性和可扩展性。

9. 风险与应对

  • 技术风险:采用新技术可能带来不确定性。应对:提前进行技术调研和原型验证。
  • 进度风险:项目进度可能延迟。应对:制定详细的项目计划,并定期进行进度评估。
  • 资源风险:人力资源可能不足。应对:提前规划团队组成,并确保资源充足。

10. 总结

本项目将通过采用先进的技术栈和微服务架构,开发一个高效、可靠的数据处理系统,满足大规模数据处理和实时分析的需求。

鸿蒙Next应用内直播后台播放可通过ServiceAbility实现。开发者需在config.json中声明后台播放权限,使用AVSession管理媒体播放状态,并调用AVPlayer的setWakeMode保持音频后台运行。系统会通过AVSessionController控制播放行为,确保应用退至后台时音频持续播放。需注意电量优化策略可能影响长时间后台播放。

在HarmonyOS Next中实现应用内直播后台音频播放,需要正确配置长时任务并管理音频焦点。仅申请audio_playback长时任务可能不足,以下是关键步骤:

  1. 配置长时任务:在module.json5中正确声明后台长时任务权限。

    {
      "module": {
        "abilities": [
          {
            "name": "EntryAbility",
            "backgroundModes": ["audioPlayback"]
          }
        ]
      }
    }
    
  2. 申请长时任务:在Ability中调用backgroundTaskManager.startBackgroundRunning()申请音频播放后台任务。

  3. 管理音频会话:使用AVSession设置播放状态和元数据,确保系统识别为正在播放的媒体。

    let avSession = await avSession.createAVSession(context, 'audio', 'live streaming');
    await avSession.activate();
    
  4. 处理音频焦点:通过audioManager.requestAudioFocus()获取音频焦点,并在失去焦点时适当暂停或降低音量。

  5. 使用Service播放:建议在Service中实现音频播放逻辑,避免Ability退至后台后播放中断。

  6. 通知栏控制:配置媒体样式通知,提供基本播放控制,提升用户体验。

检查是否已正确完成上述配置,特别是AVSession的激活和音频焦点管理,这两点常导致后台播放失败。

回到顶部