codecamp

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

场景介绍

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);
         }
         // 其他限制
         ...
     }
鸿蒙OS 车机概述
鸿蒙OS 定制化系统能力约束
温馨提示
下载编程狮App,免费阅读超1000+编程语言教程
取消
确定
目录

鸿蒙OS 开发

鸿蒙OS 术语

鸿蒙OS Java API参考

鸿蒙OS ohos.aafwk.ability

鸿蒙OS ohos.aafwk.abilityjet.activedata

鸿蒙OS ohos.aafwk.content

鸿蒙OS java.lang

鸿蒙OS java.Util

鸿蒙OS java.Util class

鸿蒙OS ohos.data.dataability

鸿蒙OS ohos.data.dataability class

鸿蒙OS ohos.agp.components

鸿蒙OS ohos.agp.components interface

鸿蒙OS ohos.agp.components class

鸿蒙OS ohos.global.configuration

鸿蒙OS java.io

鸿蒙OS ohos.data.resultset

鸿蒙OS ohos.data.resultset interface

关闭

MIP.setData({ 'pageTheme' : getCookie('pageTheme') || {'day':true, 'night':false}, 'pageFontSize' : getCookie('pageFontSize') || 20 }); MIP.watch('pageTheme', function(newValue){ setCookie('pageTheme', JSON.stringify(newValue)) }); MIP.watch('pageFontSize', function(newValue){ setCookie('pageFontSize', newValue) }); function setCookie(name, value){ var days = 1; var exp = new Date(); exp.setTime(exp.getTime() + days*24*60*60*1000); document.cookie = name + '=' + value + ';expires=' + exp.toUTCString(); } function getCookie(name){ var reg = new RegExp('(^| )' + name + '=([^;]*)(;|$)'); return document.cookie.match(reg) ? JSON.parse(document.cookie.match(reg)[2]) : null; }