HarmonyOS鸿蒙Next中应用切换到后台再切回前台时,如何保持视频录制和语音播报等功能不被系统关闭或中断?
HarmonyOS鸿蒙Next中应用切换到后台再切回前台时,如何保持视频录制和语音播报等功能不被系统关闭或中断? 鸿蒙NEXT开发遇到的问题:用户进行视频录制或者双向视频功能时,用户切换到后台,再切回前台,发现功能中断或者关闭退出到首页,想要功能不被系统关闭,应该如何处理,希望有老师具体指导了解一下?
背景知识
-
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
时播放视频。视频的播放和暂停通过音视频控制器 VideoController 的 start()
和 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中,应用切换到后台再切回前台时,保持视频录制和语音播报等功能不被系统关闭或中断,可以通过以下方式实现:
-
使用后台任务管理机制:鸿蒙系统提供了后台任务管理机制,开发者可以通过
Ability
的onBackground
和onForeground
生命周期方法来处理应用切换到后台和前台时的逻辑。在onBackground
中,可以申请后台持续运行权限,确保视频录制和语音播报等功能在后台继续执行。 -
使用Service Ability:通过创建
Service Ability
,可以在后台执行长时间运行的任务,如视频录制和语音播报。Service Ability
不会因为应用切换到后台而被系统终止,除非系统资源极度紧张。 -
使用后台持续运行权限:在应用的
config.json
文件中,可以声明backgroundModes
权限,申请后台持续运行权限。例如,视频录制可以申请audio
和location
权限,语音播报可以申请audio
权限,确保这些功能在后台不被中断。 -
使用系统通知机制:在应用切换到后台时,可以通过系统通知机制提醒用户应用仍在后台执行任务,避免用户误操作导致功能中断。
-
使用后台任务保活机制:鸿蒙系统提供了后台任务保活机制,可以通过
keepBackgroundRunning
方法申请保活,确保应用在后台运行时不会被系统轻易终止。
通过以上方式,可以在鸿蒙Next中实现应用切换到后台再切回前台时,保持视频录制和语音播报等功能不被系统关闭或中断。