电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

您的位置:首頁(yè)技術(shù)文章
文章詳情頁(yè)

詳解Android Automotive車(chē)載應(yīng)用對(duì)駕駛模式Safe Drive Mode的適配

瀏覽:3日期:2022-09-19 15:31:34
前言

最近在Android Automotive 上遇到的一些問(wèn)題,有好幾個(gè)都跟Android 車(chē)載操作系統(tǒng)上應(yīng)用的駕駛模式有關(guān),國(guó)內(nèi)這方面的資料很少,自己在這里總結(jié)一下相關(guān)的知識(shí),主要包含下面幾個(gè)方面:

Android Automotive 和 Android Auto的區(qū)別 Android Automotive 的駕駛模式介紹 Android Automotive 實(shí)現(xiàn)駕駛模式的幾種實(shí)現(xiàn)方式和代碼示例,以及實(shí)現(xiàn)效果

主要是還是想總結(jié)一下Android 車(chē)載應(yīng)用對(duì)Automotive 駕駛模式(Drive Mode)適配的幾種方式。

開(kāi)發(fā)環(huán)境

Android Studio 版本4.1.2

1. Android Automotive 和 Android Auto的區(qū)別

Android Auto:

Android Auto是一個(gè)專(zhuān)門(mén)為駕駛環(huán)境而設(shè)計(jì)的Android端App

可以用來(lái)將Android設(shè)備上的部分功能,通過(guò)數(shù)據(jù)線映射到汽車(chē)的屏幕上。當(dāng)時(shí)做Android Auto主打的是安全性,為了避免用戶在駕駛過(guò)程中拿起手機(jī),谷歌為Android Auto增加了Google Assistant,也就是在駕駛環(huán)境中使用語(yǔ)音交互,使得用戶可以再不改變自身物理姿勢(shì)的情況下實(shí)現(xiàn)一些手機(jī)app的操作。 缺點(diǎn)是通過(guò)數(shù)據(jù)線將手機(jī)應(yīng)用映射到車(chē)機(jī)上,應(yīng)用到底還是在手機(jī)上運(yùn)行的,以手機(jī)為中心,這樣汽車(chē)本身相關(guān)數(shù)據(jù),比如車(chē)速,GPS,傳感器,行駛狀態(tài)這些數(shù)據(jù)無(wú)法同步到手機(jī)上。

Android Automotive 是可以再車(chē)載硬件上運(yùn)行的操作系統(tǒng)和開(kāi)源平臺(tái)

我們最常見(jiàn)的Android平臺(tái)試運(yùn)行在手機(jī)或者平板上的,和我們常見(jiàn)的Android 操作系統(tǒng)相比,Android Automotive具有相同的代碼庫(kù),而且專(zhuān)門(mén)增加了對(duì)汽車(chē)特定的功能和技術(shù)支撐,主要包含下面幾個(gè)方面:

Car App:包括OEM預(yù)裝的,和第三方開(kāi)發(fā)并且通過(guò)車(chē)載應(yīng)用商店下載到車(chē)機(jī)上的app Car API:OEM車(chē)廠提供給汽車(chē)App特有的接口,包括儀表盤(pán)相關(guān)的API,車(chē)輛硬件(座艙,通風(fēng)等)的相關(guān)API,多媒體,導(dǎo)航,車(chē)載系統(tǒng)設(shè)置界面和車(chē)輛傳感器相關(guān)的API Car Service:Car Service是一個(gè)系統(tǒng)service,提供了和車(chē)相關(guān)的一系列的服務(wù)。 Vehicle Network Service:OEM廠商的網(wǎng)絡(luò)服務(wù) Vehicle HAL:汽車(chē)的硬件抽象層描述

Android Auto在車(chē)機(jī)上顯示的其實(shí)是手機(jī)端的數(shù)據(jù),Android Automotive則要考慮和手機(jī)端app的數(shù)據(jù)和賬號(hào)同步的問(wèn)題*

2. Android Automotive 的駕駛模式介紹

前面提到谷歌在2014年I/O 大會(huì)上推出Android Auto的初衷是更好地保障駕駛安全,Android Automotive 也增加了駕駛模式(Drive Mode),旨在幫助汽車(chē)OEM廠商從系統(tǒng)層面對(duì)有可能造成駕駛員分心的應(yīng)用進(jìn)行管理。在駕駛模式下,Android Automotive會(huì)對(duì)Driving Distraction提出一系列的建議。OEM廠商也可以要求有可能造成駕駛員分心的 Activity 或者 Fragment 界面,在Manifest File中將自己注冊(cè)成Distraction Optimized,比如需要駕駛員操作的登陸界面,掃碼界面,切換歌曲,或者視頻播放界面,游戲界面。而Android Automotive 則會(huì)在駕駛模式的時(shí)候,主動(dòng)對(duì)標(biāo)記為Distraction Optimized的界面進(jìn)行限制。

3. Android Automotive 實(shí)現(xiàn)駕駛模式的幾種實(shí)現(xiàn)方式和代碼示例

方式一 .在Manifest文件中,使用在元數(shù)據(jù)meta-data對(duì)有可能造成分心駕駛的界面進(jìn)行標(biāo)記

Android Automotive 會(huì)把像下面這個(gè)使用元數(shù)據(jù)把distractionOptimized標(biāo)記的活動(dòng)或Fragment 標(biāo)識(shí)為需要優(yōu)化的界面,并且在駕駛模式時(shí)禁用這些界面,或者在當(dāng)前Activity之上,增加UI 層級(jí)更高的提示框,從而避免在駕駛過(guò)程中這些界面造成用戶分心。

<activity android:name='.QRCodeScanPage'><meta-data android:name='distractionOptimized' android:value='true'/></activity>

上面這段代碼,用于給用戶掃碼登陸的界面QRCodeScanPage,在駕駛狀態(tài)下會(huì)被AndroidAutomotive區(qū)別處理,OEM車(chē)廠也可以對(duì)Android Automotive進(jìn)行客制化的修改,在限制界面之上增加遮蓋。

大家可以看到,這種對(duì)分心界面的處理方式簡(jiǎn)單粗暴,直接在Manifest文件里對(duì)組件的元素增加Meta-data標(biāo)簽就可以了,缺點(diǎn)是不夠靈活,所有的分心界面被遮蓋以后效果都一樣,而系統(tǒng)提供的統(tǒng)一遮蓋方式,為了能夠適用于各個(gè)應(yīng)用的分心界面,往往直接把整個(gè)UI界面都擋住,即使QR碼的UI很小,還是要蓋住整個(gè)屏幕,用戶體驗(yàn)很不好。

方式二 .使用CarDrivingStateManager類(lèi)獲取當(dāng)前汽車(chē)的行駛狀態(tài),應(yīng)用獲取到行駛狀態(tài)以后自己定義分心界面的遮擋方案

Android Automotive的CarDrivingStateManager類(lèi)可以根據(jù)車(chē)輛硬件抽象層(VHAL)提供的傳感器數(shù)據(jù)獲取當(dāng)前汽車(chē)的行駛狀態(tài)(停車(chē),空轉(zhuǎn),行駛),這樣應(yīng)用就可以通過(guò)下面的設(shè)置CarDrivingStateEventListener監(jiān)聽(tīng)器:

導(dǎo)包:

import android.car.Car;/* For CarDrivingState */import android.car.drivingstate.CarDrivingStateEvent;import android.car.drivingstate.CarDrivingStateManager;

private final CarDrivingStateManager.CarDrivingStateEventListenermDrivingStateEventListener = new CarDrivingStateManager.CarDrivingStateEventListener() { @Override public void onDrivingStateChanged(CarDrivingStateEvent event) { mDrivingStateEvent = event; handleDrivingStateChange(); }};

Android Automotive為 DrivingState定義了以下四個(gè)狀態(tài):

/** * This is when we don’t have enough information to infer the car’s driving state. */public static final int DRIVING_STATE_UNKNOWN = -1;/** * Car is parked - Gear is in Parked mode. */public static final int DRIVING_STATE_PARKED = 0;/** * Car is idling. Gear is not in Parked mode and Speed of the vehicle is zero. */public static final int DRIVING_STATE_IDLING = 1;/** * Car is moving. Gear is not in parked mode and speed of the vehicle is non zero. */public static final int DRIVING_STATE_MOVING = 2;

DrivingStateManager的代碼:

mDrivingStateManager = (CarDrivingStateManager) mCar.getCarManager( Car.CAR_DRIVING_STATE_SERVICE);/* Register the listener (implemented below) */mDrivingStateManager.registerListener(mDrivingStateEventListener);/* While we wait for a change to be notified, query the current state */mDrivingStateEvent = mDrivingStateManager.getCurrentCarDrivingState();

這樣就可以獲取當(dāng)前車(chē)輛的三種行駛狀態(tài):停止,空轉(zhuǎn),駕駛,也可能會(huì)返回UNKNOWN,需要開(kāi)發(fā)者處理。

另外,這里有個(gè)小竅門(mén), 通過(guò) CarUxRestrictions對(duì)象的isRequiresDistractionOptimization() 方法,可以直接獲取當(dāng)前車(chē)輛是否處于駕駛狀態(tài),1表示車(chē)輛處于駕駛狀態(tài),0表示非駕駛狀態(tài)。

我們看到,上面的方法二可以主動(dòng)查詢當(dāng)前車(chē)輛的行駛狀態(tài),然后可以根據(jù)DrivingStateEventListener返回的結(jié)果決定是否展示分心界面,也可以自己寫(xiě)遮蓋代碼。相比方式一,增加了很多靈活性。

方式三 .使用CarUxRestrictionsManager 并監(jiān)聽(tīng)OnUxRestrictionsChangedListener

導(dǎo)包:

import android.car.Car;/* For CarUxRestrictions */import android.car.drivingstate.CarUxRestrictions;import android.car.drivingstate.CarUxRestrictionsManager;

從下面的CarUxRestrictionManager可以看到,OnUxRestrictionsChangedListener 提供了駕駛模式限制狀態(tài)變化的監(jiān)聽(tīng):

@Nullable private CarUxRestrictionsManager mCarUxRestrictionsManager;private CarUxRestrictions mCurrentUxRestrictions;/* Implement the onUxRestrictionsChangedListener interface */private CarUxRestrictionsManager.OnUxRestrictionsChangedListener mUxrChangeListener = new CarUxRestrictionsManager.OnUxRestrictionsChangedListener() {@Overridepublic void onUxRestrictionsChanged(CarUxRestrictions carUxRestrictions) {mCurrentUxRestrictions = carUxRestrictions;/* Handle the new restrictions */handleUxRestrictionsChanged(carUxRestrictions);} };

這個(gè)方法三主要的應(yīng)用場(chǎng)景是:不適于在啟動(dòng)時(shí)監(jiān)聽(tīng)的分心事件或者持續(xù)時(shí)間比較長(zhǎng)的分心界面。比如長(zhǎng)時(shí)間的視頻播放應(yīng)用等等

結(jié)語(yǔ)

以上介紹了Android Automotive的駕駛模式,以及實(shí)現(xiàn)的幾種方法,各個(gè)方式的優(yōu)缺點(diǎn)和應(yīng)用場(chǎng)景。明天膝蓋關(guān)節(jié)鏡手術(shù),這里網(wǎng)不好,等回去了再把代碼在Android 車(chē)載系統(tǒng)的虛擬機(jī)上實(shí)現(xiàn)出來(lái),使用下面的ADB指令是可以模擬出當(dāng)前車(chē)輛速度的,可以驗(yàn)證駕駛狀態(tài)的改變,最后一個(gè)參數(shù)是速度,單位是米/秒。

adb shell dumpsys activity service com.android.car inject-vhal-event 0x11600207 40

以上就是詳解Android Automotive車(chē)載應(yīng)用對(duì)駕駛模式(Safe Drive Mode)的適配的詳細(xì)內(nèi)容,更多關(guān)于Android Automotive適配駕駛模式(Safe Drive Mode)的資料請(qǐng)關(guān)注好吧啦網(wǎng)其它相關(guān)文章!

標(biāo)簽: Android
相關(guān)文章:
主站蜘蛛池模板: 智能化的检漏仪_气密性测试仪_流量测试仪_流阻阻力测试仪_呼吸管快速检漏仪_连接器防水测试仪_车载镜头测试仪_奥图自动化科技 | HDPE土工膜,复合土工膜,防渗膜价格,土工膜厂家-山东新路通工程材料有限公司 | 高速混合机_锂电混合机_VC高效混合机-无锡鑫海干燥粉体设备有限公司 | ERP企业管理系统永久免费版_在线ERP系统_OA办公_云版软件官网 | 玻纤土工格栅_钢塑格栅_PP焊接_单双向塑料土工格栅_复合防裂布厂家_山东大庚工程材料科技有限公司 | 乐考网-银行从业_基金从业资格考试_初级/中级会计报名时间_中级经济师 | 拉曼光谱仪_便携式|激光|显微共焦拉曼光谱仪-北京卓立汉光仪器有限公司 | 济南ISO9000认证咨询代理公司,ISO9001认证,CMA实验室认证,ISO/TS16949认证,服务体系认证,资产管理体系认证,SC食品生产许可证- 济南创远企业管理咨询有限公司 郑州电线电缆厂家-防火|低压|低烟无卤电缆-河南明星电缆 | PSI渗透压仪,TPS酸度计,美国CHAI PCR仪,渗透压仪厂家_价格,微生物快速检测仪-华泰和合(北京)商贸有限公司 | 加盟店-品牌招商加盟-创业项目商机平台| 包装设计公司,产品包装设计|包装制作,包装盒定制厂家-汇包装【官方网站】 | 铝机箱_铝外壳加工_铝外壳厂家_CNC散热器加工-惠州市铂源五金制品有限公司 | 上海防爆真空干燥箱-上海防爆冷库-上海防爆冷柜?-上海浦下防爆设备厂家? | 智能风向风速仪,风速告警仪,数字温湿仪,综合气象仪(气象五要素)-上海风云气象仪器有限公司 | 长沙发电机-湖南发电机-柴油发电机供应厂家-长沙明邦智能科技 | 溶氧传感器-pH传感器|哈美顿(hamilton) | 丽陂特官网_手机信号屏蔽器_Wifi信号干扰器厂家_学校考场工厂会议室屏蔽仪 | EFM 022静电场测试仪-套帽式风量计-静电平板监测器-上海民仪电子有限公司 | 电缆接头_防水接头_电缆防水接头 - 乐清市新豪电气有限公司 | 能量回馈_制动单元_电梯节能_能耗制动_深圳市合兴加能科技有限公司 | 深圳市索富通实业有限公司-可燃气体报警器 | 可燃气体探测器 | 气体检测仪 | 粘弹体防腐胶带,聚丙烯防腐胶带-全民塑胶 | 宿舍管理系统_智慧园区系统_房屋/房产管理系统_公寓管理系统 | 广州迈驰新GMP兽药包装机首页_药品包装机_中药散剂包装机 | 越南专线物流_东莞国际物流_东南亚专线物流_行通物流 | 铝扣板-铝方通-铝格栅-铝条扣板-铝单板幕墙-佳得利吊顶天花厂家 elisa试剂盒价格-酶联免疫试剂盒-猪elisa试剂盒-上海恒远生物科技有限公司 | 热处理炉-退火炉-回火炉设备厂家-丹阳市电炉厂有限公司 | 安徽华耐泵阀有限公司-官方网站| 工装定制/做厂家/公司_工装订做/制价格/费用-北京圣达信工装 | 全自动变压器变比组别测试仪-手持式直流电阻测试仪-上海来扬电气 | 成都亚克力制品,PVC板,双色板雕刻加工,亚克力门牌,亚克力标牌,水晶字雕刻制作-零贰捌广告 | 万烁建筑设计院-建筑设计公司加盟,设计院加盟分公司,市政设计加盟 | 工业胀紧套_万向节联轴器_链条-规格齐全-型号选购-非标订做-厂家批发价格-上海乙谛精密机械有限公司 | 水质监测站_水质在线分析仪_水质自动监测系统_多参数水质在线监测仪_水质传感器-山东万象环境科技有限公司 | 哈尔滨京科脑康神经内科医院-哈尔滨治疗头痛医院-哈尔滨治疗癫痫康复医院 | 二手Sciex液质联用仪-岛津气质联用仪-二手安捷伦气质联用仪-上海隐智科学仪器有限公司 | 吉祥新世纪铝塑板_生产铝塑板厂家_铝塑板生产厂家_临沂市兴达铝塑装饰材料有限公司 | 葡萄酒灌装机-食用油灌装机-液体肥灌装设备厂家_青州惠联灌装机械 | 振动筛-交叉筛-螺旋筛-滚轴筛-正弦筛-方形摇摆筛「新乡振动筛厂家」 | 山东聚盛新型材料有限公司-纳米防腐隔热彩铝板和纳米防腐隔热板以及钛锡板、PVDF氟膜板供应商 | jrs高清nba(无插件)直播-jrs直播低调看直播-jrs直播nba-jrs直播 上海地磅秤|电子地上衡|防爆地磅_上海地磅秤厂家–越衡称重 |