长时任务

介绍

本示例展示后台任务的长时任务。通过使用@ohos.resourceschedule.backgroundTaskManager实现后台播放音乐、蓝牙任务断开重连等功能。

效果预览

首页 播音 蓝牙
image image image

使用说明

场景一:后台播放音乐

1.进入应用,点击后台播音进入二级页面,然后点击播放/暂停音乐,申请长时任务,退出音乐界面推送至后台执行,音乐继续播放。

2.再次进入应用,点击播放/暂停音乐,取消长时任务,音乐停止。

场景二:蓝牙断开重连

蓝牙断开重连进行完整功能验证时,需要取消场景一申请的长时任务,同时建议使用具备后台管控能力的真机或模拟器设备进行验证。

针对客户端设备

1.进入应用,启动时会有弹窗提示是否同意授予蓝牙权限,同意授权并点击【蓝牙断开重连】进入二级页面,然后点击【申请蓝牙长时任务】及【注册暂停回调】。

2.点击【注册蓝牙设备监听】及【注册蓝牙连接状态监听】,点击【开始蓝牙扫描】,扫描到对端设备时需要进行连接授权。

3.连接成功之后,将应用退后台,并将两台设备远离直至蓝牙断连,蓝牙断连一段时间之后应用后台被挂起。

4.再将两台设备靠近,蓝牙靠近之后重新连接,应用后台重新保活。

针对服务端设备

进入应用,点击【蓝牙断开重连】进入二级页面,然后点击【gattServerTest】按钮并保持应用在前台运行。

工程目录

entry/src/main/ets/
|---Application
|   |---MyAbilityStage.ets                    
|---feature
|   |---BackgroundPlayerFeature.ts                 // 后台播放
|---MainAbility
|   |---MainAbility.ts                   
|---mock
|   |---BackgroundPlayerData.ts                    // 数据定义
|---pages
|   |---audioPlayback                              // 音频播放
|   |---bluetoothInteraction                       // 蓝牙断开重连
|   |---Index.ets                                  // 首页
|---util
|   |---Logger.ts                                  // 日志打印

具体实现

  • 后台播放使用startBackgroundRunning方法向系统申请长时任务,stopBackgroundRunning方法向系统申请取消长时任务,getWantAgent方法创建一个WantAgent,createAudioPlayer方法创建一个视频播放实例,createAVSession方法创建一个会话对象,fileIo.open方法打开文件等接口实现后台音乐播放。

  • 蓝牙断开重连的申请长时任务、注册长时任务暂停回调、注册蓝牙设备监听、注册蓝牙连接状态监听、开始蓝牙扫描功能封装等功能在BluetoothInteractionIndex中。

    • 申请长时任务:使用startBackgroundRunning方法向系统申请长时任务,stopBackgroundRunning方法向系统申请取消长时任务。
    • 注册长时任务暂停回调:使用backgroundTaskManager.on('continuousTaskSuspend', callback)方法向系统注册暂停回调。
    • 注册蓝牙设备监听:使用ble.on('BLEDeviceFind', callback)方法注册蓝牙设备监听,然后通过ble.createGattClientDevice()方法注册gatt客户端,然后通过gattClient.connect()进行蓝牙连接。
    • 注册蓝牙连接状态监听:通过gattClient.on('BLEConnectionStateChange', callback)方法向系统注册蓝牙连接状态监听,蓝牙断连时通过ble.startBLEScan()重新发起蓝牙扫描。

相关权限

ohos.permission.KEEP_BACKGROUND_RUNNING ohos.permission.USE_BLUETOOTH ohos.permission.DISCOVER_BLUETOOTH ohos.permission.ACCESS_BLUETOOTH

依赖

不涉及。

约束与限制

1.本示例仅支持标准系统上运行;

2.本示例已适配API version 20版本SDK,版本号:6.0 Release;

3.本示例需要使用DevEco Studio 版本号(6.0 Release)及以上版本才可编译运行。

下载

如需单独下载本工程,执行如下命令:

git init
git config core.sparsecheckout true
echo code/DocsSample/BackGroundTasksKit/ContinuousTask/ > .git/info/sparse-checkout
git remote add origin https://gitcode.com/openharmony/applications_app_samples.git
git pull origin master