HarmonyOS鸿蒙Next中应用切换到后台再切回前台时,如何保持视频录制和语音播报等功能不被系统关闭或中断?

发布于 1周前 作者 bupafengyu 来自 鸿蒙OS

HarmonyOS鸿蒙Next中应用切换到后台再切回前台时,如何保持视频录制和语音播报等功能不被系统关闭或中断? 鸿蒙NEXT开发遇到的问题:用户进行视频录制或者双向视频功能时,用户切换到后台,再切回前台,发现功能中断或者关闭退出到首页,想要功能不被系统关闭,应该如何处理,希望有老师具体指导了解一下?

3 回复

背景知识

  • Video 是一个用于播放视频文件并控制其播放状态的组件。接口为 Video(value: VideoOptions),VideoOptions是Video组件的入参。VideoOptions的属性已经说明如下:

    • src 表示视频的数据源,支持本地视频和网络视频。src的类型可以是string 或者 Resource
    • currentProgressRate 表示视频播放倍速。数据类型是number | string | PlaybackSpeed
    • previewUri 表示视频未播放时的预览图片路径,默认不显示图片。数据类型是string | PixelMap | Resource
    • controller 是设置视频控制器,可以控制视频的播放状态。数据类型为 VideoController。通过VideoController可以控制视频的开始播放,暂停播放,停止播放,重置,指定视频播放的进度位置,全屏播放,退出全屏播放…等等功能。
    • imageAIOptions 设置图像AI分析选项,可配置分析类型或绑定一个分析控制器。
  • onPageHide 页面每次隐藏时触发一次,包括路由过程、应用进入后台等场景,@Entry装饰的自定义组件生效

  • onPageShow 页面每次显示时触发一次,包括路由过程、应用进入前台等场景,@Entry装饰的自定义组件生效

解决方案

onPageHide 时,暂停视频,当触发 onPageShow 时播放视频。视频的播放和暂停通过音视频控制器 VideoControllerstart()pause() 函数来实现。

  • 首先从 rawfile 目录读取本地视频,读取视频未播放时的预览的本地图片。如果需要读取网络视频时,需要申请权限 ohos.permission.INTERNET。在 onPageShow 控制视频的播放,onPageHide 控制视频的暂停。
[@Entry](/user/Entry)
@Component
struct VideoPlayerPage {
  @State videoSrc: Resource = $rawfile('videoTest.mp4')
  @State previewUri: Resource = $r('app.media.preview');
  controller: VideoController = new VideoController();

  // 页面显示,继续播放
  onPageShow() {
    this.controller.start();
  }
  // 页面隐藏,暂停播放
  onPageHide() {
    this.controller.pause();
  }
  build() {
    Row() {
      Column() {
        Video({
          src: this.videoSrc,
          previewUri: this.previewUri,
          controller: this.controller
        })
          .width('100%')
          .height(600)
          .autoPlay(false)
          .controls(true)
          .loop(false)
          .objectFit(ImageFit.Contain)
      }
      .width('100%')
    }
    .height('100%')
  }
}

更多关于HarmonyOS鸿蒙Next中应用切换到后台再切回前台时,如何保持视频录制和语音播报等功能不被系统关闭或中断?的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


在HarmonyOS鸿蒙Next中,应用切换到后台再切回前台时,保持视频录制和语音播报等功能不被系统关闭或中断,可以通过以下方式实现:

  1. 使用后台任务管理机制:鸿蒙系统提供了后台任务管理机制,开发者可以通过AbilityonBackgroundonForeground生命周期方法来处理应用切换到后台和前台时的逻辑。在onBackground中,可以申请后台持续运行权限,确保视频录制和语音播报等功能在后台继续执行。

  2. 使用Service Ability:通过创建Service Ability,可以在后台执行长时间运行的任务,如视频录制和语音播报。Service Ability不会因为应用切换到后台而被系统终止,除非系统资源极度紧张。

  3. 使用后台持续运行权限:在应用的config.json文件中,可以声明backgroundModes权限,申请后台持续运行权限。例如,视频录制可以申请audiolocation权限,语音播报可以申请audio权限,确保这些功能在后台不被中断。

  4. 使用系统通知机制:在应用切换到后台时,可以通过系统通知机制提醒用户应用仍在后台执行任务,避免用户误操作导致功能中断。

  5. 使用后台任务保活机制:鸿蒙系统提供了后台任务保活机制,可以通过keepBackgroundRunning方法申请保活,确保应用在后台运行时不会被系统轻易终止。

通过以上方式,可以在鸿蒙Next中实现应用切换到后台再切回前台时,保持视频录制和语音播报等功能不被系统关闭或中断。

在HarmonyOS鸿蒙Next中,为了确保应用切换到后台再切回前台时,视频录制和语音播报等功能不被系统关闭或中断,开发者可以通过以下方式实现:

  1. 使用后台任务管理:在config.json中声明backgroundModes,申请后台运行权限,确保应用在后台时能继续执行关键任务。

  2. 生命周期管理:在onBackgroundonForeground生命周期回调中,合理管理资源,避免系统回收。

  3. 使用Service Ability:将视频录制等耗时操作放在Service Ability中运行,确保其在后台持续执行。

  4. 优化资源使用:减少内存和CPU占用,避免因资源不足被系统强制终止。

通过这些措施,可以有效保持应用功能的连续性。

回到顶部
AI 助手
你好,我是IT营的 AI 助手
您可以尝试点击下方的快捷入口开启体验!