阅读(1810) (12)

鸿蒙OS 开发驾驶模式支持应用

2020-09-17 10:42:48 更新

场景介绍

HarmonyOS 除了限制系统能力来保证驾驶员安全,同时提供了驾驶模式相关接口,允许开发者使用第三方能力库来开发驾驶模式下可用的安全应用,本章节主要简述如何开发驾驶模式下安全应用。

接口说明

HarmonyOS 提供了驾驶模式管理类 DrivingSafetyManager,开发者可以使用该类的开放能力,开发符合驾驶模式安全要求的应用。

接口名 描述
getRestraint() 获取当前系统在“驾驶模式”状态下的约束条件。
isDrivingMode() 查询当前车辆是否处于“驾驶模式”状态。
isDrivingSafety() 判断当前的应用是否是安全的。

开发步骤

开发一个应用具备如下能力:

  • 音乐播放能力。
  • 通过弹框来显示通知信息。
  • 视频播放能力(三方视频播放开发库)。
  • 遵守地区法规,在车辆行驶过程中不能弹框和播放视频。

  1. 在开始构建应用之前,请务必遵守 HarmonyOS 的约束和限制。

  1. 为应用添加驾驶模式支持。

HarmonyOS 车载应用需要开发者指定当前应用是否支持“驾驶模式”状态。对于不支持驾驶模式状态的应用,在汽车进入“驾驶模式”状态后,不允许启动,对于已经启动的应用也会冻结操作并退出。因此,开发者需要在应用配置文件(config.json)中"supported-modes"配置项中增加"drive"模式,以表示该应用支持“驾驶模式”状态,保证车辆在行驶过程中,应用可以正常运行。如下所示:

   "abilities": {
       "name": ".carlink",
       "icon": "$carlink:icon",
       "label": "carlink",
       "supported-modes": ["drive"],
   }

  1. 判断当前系统是否处于“驾驶模式”状态,应用后台通过调 isDrivingSafety()接口,判断当前应用是否是驾驶安全的:

  • 如果是非驾驶安全的,则通过 getRestraint() 接口获取当前系统的限制条件,根据系统限制条件,对当前的应用做处理,例如禁止视频播放,禁止输入法弹框;

  • 如果是驾驶安全的,则无需处理。

img

     if (isDrivingSafety(context)) { // 判断应用当前状态是否是驾驶安全的
         int restraintCode = DrivingSafetyManager.getRestraint(); // 获取当前系统限制条件
         if (restraintCode < 0) {
             HiLog.error("GetRestraint error: %d", restraintCode);
             return;
         }
         if (restraintCode == 0) { // 当前系统不受限
              HiLog.error("No restraint");
              return;
         }
         // 限制视频播放
         if (0x2 & restraintCode != 0) {
             Player play = new Player(content); // 第三方视频播放器
             play.stop();
         }
         // 限制输入法弹窗
         if (0x4 & restraintCode != 0) {
             InputMethodController mIMController = InputMethodController.getInstance(); // 第三方输入法
             mIMController.stopInput(InputMethodController.STOP_IM_NORMAL);
         }
         // 其他限制
         ...
     }