【视频文稿】车载Android应用开发与分析 - 走进车载操作系统
本期內(nèi)容的視頻地址:https://www.bilibili.com/video/BV1rR4y1B7Qd/
Hello,各位好,我是一個做車載軟件開發(fā)的軟件工程師,之前在CSDN、稀土掘金這些平臺上發(fā)表過一些車載應(yīng)用方面的文章,期間得到了許多朋友的反饋。2023年呢就打算好好開始整理一下這幾年的一些積累,幫助正在從事或以后打算從事車載Android應(yīng)用開發(fā)的朋友,更好的去了解車載應(yīng)用開發(fā)的一些基礎(chǔ)知識。
做視頻的主要目的,其實是鍛煉我自己的總結(jié)以及說話的能力,如果這個系列的視頻對各位有所幫助,那也是非常值得開心的一件事了。
本視頻是《車載Android應(yīng)用開發(fā)與分析》的第一篇,走進(jìn)車載操作系統(tǒng)。
本視頻的文字內(nèi)容,可以掃描這里的二維碼關(guān)注我的個人微信公眾號(《車載Android》)查看,或者訪問這個博客也可以查看。
視頻中的課件我放在了我的Github https://github.com/linxu-link/CarAndroidCourse
上,以后視頻中的所有課件、源碼以后都會放在這里,同時我在編寫視頻文案時參考的一些非常有價值的研究報告,也會放置在這里供大家閱讀,當(dāng)然前提是這些報告不涉及企業(yè)的內(nèi)部機(jī)密。
由于受我個人能力所限,視頻內(nèi)容會不可避免的存在一些錯誤,如果你對視頻內(nèi)容有不一樣的看法,歡迎發(fā)送郵件(linxu_link@foxmail.com)給我,我會盡快核實并改正的。
好了,話不多說,咱們進(jìn)入正題。
車載軟件的機(jī)遇與挑戰(zhàn)
首先,我們來看一則最近的新聞,根據(jù)Counterpoint Research的調(diào)研,2022年中國智能手機(jī)銷量同比下降高達(dá)14%,達(dá)到了近十年來的最低水平。
這里我們要明白一點,手機(jī)出貨量的下降預(yù)示一些原本做手機(jī)硬件或軟件的公司,為了求生存他們不得不把目光轉(zhuǎn)向技術(shù)跨度不大,且目前還能維持增長的領(lǐng)域,那么這個領(lǐng)域其實就是汽車。
所以2023年會有更多的公司或個人轉(zhuǎn)型從事車載相關(guān)的研發(fā),這對于目前已經(jīng)在從事車載研發(fā)的公司或個人并不是一個好消息,這個意味著以后會面臨著更多的挑戰(zhàn)。
那么車載 Android 開發(fā)的前景究竟怎么樣呢?來看一張圖,這就是大名鼎鼎的 ChatGPT 的回復(fù)。
ChatGPT對車載Android開發(fā)的未來,是非常看好,不過,我個人其實并不贊同!
2011年移動互聯(lián)網(wǎng)開始起步,當(dāng)時的應(yīng)用開發(fā)十分火熱,但是沒過多久應(yīng)用開發(fā)就開始走向下坡,作為一個見證了移動互聯(lián)網(wǎng)興衰的人,同時身處各大車企價格戰(zhàn)的年代,我已經(jīng)很難再說車載 Android 開發(fā)的前景是非常光明的了。
例如:理想汽車的CEO不久前接受采訪時就說過:“2023年到2025年是極為殘酷的淘汰賽,不需要那么多公司。”這意味著,對接下來市場競爭的殘酷性,各個車企的參與者們已經(jīng)普遍有比較清晰的認(rèn)知了,而特斯拉年前的大降價,無疑會進(jìn)一步加劇事態(tài)的嚴(yán)重性。
當(dāng)然這里要強(qiáng)調(diào)我個人不想販賣焦慮也不賣課,以上說明只是希望準(zhǔn)備轉(zhuǎn)行的同學(xué)要慎重考慮清楚,已經(jīng)在從事車載 Android 開發(fā)同學(xué)還是要有一定危機(jī)意識的。
好,我們還是要回到視頻的重點車載Android應(yīng)用開發(fā)與分析上來。在開發(fā)車載 Android 應(yīng)用之前,我們需要對目前汽車使用的操作系統(tǒng)有一定的認(rèn)識。
那么我們首先需要了解的就是,什么是車載操作系統(tǒng)?
車用操作系統(tǒng)
在講車載操作系統(tǒng)之前,我們需要先來認(rèn)識一下另一個東西——車用操作系統(tǒng)。
車用操作系統(tǒng)是一個偏學(xué)術(shù)的用語。2019 年 10 月,全國汽車標(biāo)準(zhǔn)化委員會發(fā)布了《車用操作系統(tǒng)標(biāo)準(zhǔn)體系》,其中規(guī)范了車用操作系統(tǒng)定義,明確劃分了車用操作系統(tǒng)包含兩個子系統(tǒng),車控操作系統(tǒng)和車載操作系統(tǒng)。
首先我們來看車控操作系統(tǒng)。
車控操作系統(tǒng)(vehicle-controlled operating system)
車控操作系統(tǒng)分為安全車控操作系統(tǒng)和智能駕駛操作系統(tǒng),其中:
安全車控操作系統(tǒng) 主要面向經(jīng)典車輛控制領(lǐng)域,如動力系統(tǒng)、底盤系統(tǒng)和車身系統(tǒng)等,該類操作系統(tǒng)對實時性和安全性要求很高,生態(tài)發(fā)展已趨于成熟了。
智能駕駛操作系統(tǒng) 主要面向智能駕駛領(lǐng)域,應(yīng)用于智能駕駛域控制器,該類操作系統(tǒng)對安全性和可靠性要求較高,同時對性能和運(yùn)算能力的要求也較高。該類操作系統(tǒng)目前在全世界范圍內(nèi)都處于研究發(fā)展的初期,生態(tài)尚未完備。
然后我們再來看車載操作系統(tǒng)。
車載操作系統(tǒng)(on-vehicle operating system)
車載操作系統(tǒng) 主要面向信息娛樂和智能座艙,主要應(yīng)用于車機(jī)中控系統(tǒng),對于安全性和可靠性的要求處于中等水平,該類操作系統(tǒng)發(fā)展十分迅速,依托于該類操作系統(tǒng)的生態(tài)也處于高速發(fā)展階段。
由于本視頻主要還講解Android車載應(yīng)用的開發(fā)與分析,所以車控操作系統(tǒng)就不再深入介紹了,感興趣的朋友可以在本視頻的GitHub倉庫中查找“車控操作系統(tǒng)架構(gòu)研究報告”進(jìn)行學(xué)習(xí)。
下面我們來繼續(xù)介紹車載Android工程師,主要工作的領(lǐng)域,就是車載操作系統(tǒng)的現(xiàn)狀是怎樣的。
車載操作系統(tǒng)的現(xiàn)狀
目前,應(yīng)用于車載領(lǐng)域的操作系統(tǒng)包括有 QNX、Linux/AGL、RT-Linux、 AliOS、AliOS RT、Android 和鴻蒙 OS 等。
車載操作系統(tǒng)從功能角度可分為,非實時操作系統(tǒng)和實時操作系統(tǒng)。
從應(yīng)用的角度又可分為,用于中控的車載操作系統(tǒng),用于儀表的車載操系統(tǒng)和用于 T-box 的車載操作系統(tǒng)。
下面這張表格展示了當(dāng)前各大主流汽車廠商所搭載的車載操作系統(tǒng)。
目前國內(nèi)的汽車企業(yè),儀表一般采用QNX或Linux系統(tǒng),中控則多數(shù)采用Android系統(tǒng),T-box則基本以Linux系統(tǒng)為主,也有少部分使用QNX系統(tǒng)。
接下來我們就逐個介紹一下這些常見的車載操作系統(tǒng)。
車載操作系統(tǒng)簡介
QNX
QNX 最初應(yīng)用在儀表上的,是第一個符合 ISO 26262 ASIL D 規(guī)范的實時操作系統(tǒng),它能滿足數(shù)字化儀表盤功能性安全的要求,同時也滿足數(shù)據(jù)安全要求,通過了美國軍方的EAL4+,目前是QNX由黑莓公司持有。
QNX的應(yīng)用范圍非常廣,從汽車到核電站、以及無人作戰(zhàn)坦克的控制系統(tǒng)都有涉及。
因為 QNX 并不開源,針對 QNX 開發(fā)是需要支付一定的商業(yè)授權(quán)費用的。
Linux
Linux 是基于社區(qū)開源模式的多用戶、多任務(wù)、支持多線程和多 CPU 的分時操作系統(tǒng),因為 Linux 是在 GNU 公共許可權(quán)限下免費獲得的,無需商業(yè)授權(quán)費用,用戶可自主定制,開發(fā)成本相對較低。正因為開源,Linux 系統(tǒng)開發(fā)工具非常豐富,幾乎所有應(yīng)用芯片都支持 Linux。Linux 系統(tǒng)上的程序是編譯執(zhí)行的,執(zhí)行效率比較高。
但是,Linux 內(nèi)核復(fù)雜度較高,Linux V4.19 的內(nèi)核代碼有一千七百多萬行,而且還在持續(xù)增長。正因如此,在安全性和啟動速度等方面,Linux 要落后于 QNX。針對汽車的應(yīng)用場景,AGL(Automotive Grade Linux)和 GENIVI 都在極力打造 Linux 生態(tài)系統(tǒng),以加速 Linux 在車載系統(tǒng)上的應(yīng)用。
AliOS
AliOS是阿里巴巴發(fā)布全新的品牌,整合了原先的AliYunOS移動端業(yè)務(wù),主要面向汽車、IoT終端、IoT芯片和工業(yè)領(lǐng)域的物聯(lián)網(wǎng)操作系統(tǒng)。
AliOS 車載操作系統(tǒng)基于 Linux 內(nèi)核,具備自主知識產(chǎn)權(quán),支持多個類型的端設(shè)備,除了具備最基礎(chǔ)的進(jìn)程、線程調(diào)度等功能外,還 支持定位和地圖、輔助駕駛、輕量化的車載語音智能等服務(wù),可連接 AIoT 設(shè)備 2.72 億+,提供 5200+實用 AI 技能和 3 億+生態(tài)資源,為智能汽車、數(shù)字交通和產(chǎn)業(yè)數(shù)字化三類解決方案提供技術(shù)基礎(chǔ)。AliOS 車載操作系統(tǒng)架構(gòu)主要包括 AliOS 核心系統(tǒng)、數(shù)據(jù)服務(wù)平臺以及工程 化支持平臺三大部分。
AliOS 核心系統(tǒng)主要實現(xiàn) Linux 內(nèi)核、設(shè)備驅(qū)動、內(nèi)核安全、多核實時調(diào)度、硬件抽象、基礎(chǔ)庫、圖形處理、多媒 體框架、電源管理、網(wǎng)絡(luò)連接、安全管理、云應(yīng)用管理和運(yùn)行時環(huán)境 等功能;數(shù)據(jù)服務(wù)平臺提供基礎(chǔ)服務(wù)、核心云服務(wù)以及車云互聯(lián)的服務(wù);工程化支持平臺基于開放的車輛服務(wù)融合平臺和云測平臺,提供開發(fā)、測試、服務(wù)接入為一體的車載應(yīng)用和服務(wù)生態(tài)
目前上汽的榮威以及智己等車型均有搭載AliOS。
Android
Android 車載操作系統(tǒng)基于 Linux 內(nèi)核,主要功能模塊集中在 用戶空間,在 Linux 內(nèi)核中僅增加了用于進(jìn)程間通信的 Binder 和用于內(nèi)存共享的 ION,其突出優(yōu)點是應(yīng)用生態(tài)。Android 應(yīng)用程序在 Android 虛擬機(jī)里是解釋執(zhí)行的,相對于編譯執(zhí)行來說,執(zhí)行效率較低。
Google 于 2019 年開放了 Android Automotive,原本為移動互聯(lián)設(shè)備開發(fā)的 Android 應(yīng)用生態(tài)可遷移到 Android Automotive。
目前,Tier1 和車企多數(shù)都是基于 Android 自研車載操作系統(tǒng)。
鴻蒙 OS
車載的鴻蒙OS是華為研發(fā)的一款面向全場景的分布式操作系統(tǒng),目標(biāo)是提升操作系統(tǒng)的跨平臺能力,包括支持全場景、跨多設(shè)備和平臺、低時延和高安全性。
鴻蒙 系統(tǒng)包括三層架構(gòu):第一層是內(nèi)核,第二層是基礎(chǔ)服務(wù),第三層是程序框架。
鴻蒙車載操作系統(tǒng) Harmony 是通過一芯多屏、多并發(fā)、運(yùn)行時確定保障等能力,滿足出行場景需要,具有“多用戶,多外設(shè),多 聯(lián)接”的特點,定義了 HMS-A(HMS for Auto,包括:語音、音效、 視覺、AI 等 7 大核心能力)、12 個車機(jī)子系統(tǒng)和 500 多個 HOS-C API, 支撐 OEM、合作伙伴、第三方應(yīng)用快速開發(fā)、持續(xù)升級。
圍繞鴻蒙OS的爭議非常多,這里我不做任何評價。不過2023年前我閱讀了一份由中汽創(chuàng)智發(fā)布的《2022年智能座艙年度報告》,其中對于問界M5搭載的鴻蒙OS的流暢度評價非常高,而且我們還要認(rèn)識到一點麒麟990A是一款28nm制程的芯片,其綜合性能是遜于7nm制程的8155芯片。在硬件性能劣勢的情況下,問界M5的車機(jī)流暢度依然達(dá)到了頂級,相信這其中鴻蒙OS 一定起到了功不可沒的作用。
車載操作系統(tǒng)架構(gòu)
車載操作系統(tǒng)架構(gòu)可分為單系統(tǒng)架構(gòu)和多系統(tǒng)架構(gòu)。兩類架構(gòu)都可實現(xiàn)一芯多屏(多屏融合、多屏互動)、單屏多系統(tǒng)(虛擬運(yùn)行環(huán)境、多應(yīng)用生態(tài)融合)、一芯多功能(信息娛樂、T-box 等)。
先來看單系統(tǒng)架構(gòu)。
- 單系統(tǒng)架構(gòu)(single system architecture)
單系統(tǒng)架構(gòu),它由車載操作系統(tǒng)內(nèi)核、資源抽象層、基礎(chǔ)庫、基礎(chǔ)服務(wù)、運(yùn)行時環(huán)境、程序運(yùn)行框架和車載操作系統(tǒng)安全模塊組成, 對底層硬件和上層應(yīng)用程序提供統(tǒng)一的接口,這樣就能實現(xiàn)車載操作系統(tǒng)與硬件和上層應(yīng)用程序間解耦。
- 多系統(tǒng)架構(gòu)(multisystem architecture)
多系統(tǒng)架構(gòu)是同一套硬件上運(yùn)行多個車載操作系統(tǒng)的架構(gòu),技術(shù)上可分為硬件隔離、虛擬機(jī)管理器、容器三類多系統(tǒng)基礎(chǔ)架構(gòu),以及兩類或三類基礎(chǔ)架構(gòu)組合成的混合架構(gòu),用于滿足不同功能、性能和安全的隔離需求。
有關(guān)單系統(tǒng)架構(gòu)和多系統(tǒng)架構(gòu)的詳細(xì)實現(xiàn),作為應(yīng)用開發(fā)者我們不需要過多關(guān)心,有興趣的同學(xué)可以閱讀《車載操作系統(tǒng)架構(gòu)研究報告》中的有關(guān)章節(jié),進(jìn)行進(jìn)一步學(xué)習(xí)。
接下來我們來看,目前較為主流的車載操作系統(tǒng)架構(gòu)是什么樣子的。
這張圖描述了目前較為常用的車載操作系統(tǒng)架構(gòu),我們從下往上看,其他硬件這里面就是汽車主機(jī)以外的硬件,例如汽車電子控制模塊、電池管理系)、ADAS高級駕駛輔助系統(tǒng)等等。這里面我們最需要關(guān)注的硬件是T-Box。
T-Box
T-Box 又稱 TCU,是汽車上獨立于主機(jī)之外的一個硬件,英文叫Telematics Box (遠(yuǎn)程通信終端),它有一套獨立的操作系統(tǒng)一般是Linux系統(tǒng),它里面內(nèi)置了一張SIM卡,與這個盒子配套的硬件還有GPS天線,4G/5G天線等等,量產(chǎn)后的汽車要實現(xiàn)聯(lián)網(wǎng)功能必須有T-Box設(shè)備才能可以。
這里額外提一嘴,UP是17年大學(xué)畢業(yè)19年開始從事車載Android應(yīng)用開發(fā)的,出于個人興趣的原因,我現(xiàn)在其實是在做T-Box也就是Linux應(yīng)用的開發(fā),所以做“車載Android 應(yīng)用開發(fā)與分析”這個系列的視頻也可以看做是我個人在工作之余,為了繼續(xù)保持Android開發(fā)能力的一種行為。
以太網(wǎng)
以太網(wǎng)(Ethernet),是一種計算機(jī)局域網(wǎng)技術(shù)。也是移動應(yīng)用開發(fā)者,天天都會打交道的東西。在汽車座艙中硬件間的相互通信有時需要借助以太網(wǎng)來實現(xiàn),例如:Tbox與車機(jī)與中控系統(tǒng)間的通信就是基于以太網(wǎng)實現(xiàn)的。
它常用的通信協(xié)議有MQTT、HTTP以及SOME/IP等等。
CAN
控制器局域網(wǎng) (Controller Area Network,簡稱CAN或者CAN bus) 是一種功能豐富的車用總線標(biāo)準(zhǔn)。被設(shè)計用于在不需要主機(jī)(Host)的情況下,允許網(wǎng)絡(luò)上的單片機(jī)和儀器相互通信。 它基于消息傳遞協(xié)議,設(shè)計之初在車輛上采用復(fù)用通信線纜,以降低銅線使用量,后來也被其他行業(yè)所使用。例如一些超市的電動卷閘門控制系統(tǒng),也有使用 CAN 進(jìn)行通信的。
CAN 是車載領(lǐng)域很重要的一種通信總線,我們在中控屏上查看、設(shè)置車門、發(fā)動機(jī)、后備箱這些模塊,其實就是借助CAN bus實現(xiàn)的,即使是Android程序員也經(jīng)常會和它打交道。
SOC
SoC的定義非常多,一般可以理解為單片系統(tǒng)或片上系統(tǒng),是一個將電腦或其他電子系統(tǒng)集成到單一芯片的集成電路。更通俗的來講,我們可以把它理解為CPU+GPU的一種嵌入式芯片組合。
車載Soc和手機(jī)Soc基本類似。目前最主流的車載Soc是高通的驍龍8155芯片,下一代的8295芯片也由集度汽車實現(xiàn)了首發(fā),鴻蒙座艙的Soc多數(shù)是使用華為的麒麟990A芯片,不過也有車企開始更換為雙8155的芯片組合。
MCU
單片機(jī),全稱單片微型計算機(jī),又稱微控制器單元(microcontroller unit),是把中央處理器、存儲器、定時/計數(shù)器(timer/counter)、各種輸入輸出接口等都集成在一塊集成電路芯片上的微型計算機(jī)。
常見的車機(jī)開發(fā)板上一般同時包含一個SOC 和一個MCU,二者之間通過串口通信,協(xié)同工作。SOC 擅長處理多媒體信息,負(fù)責(zé)渲染用戶界面以及控制音視頻播放等等。MCU 的性能比較差,但是相對的功耗很低,實時性好,負(fù)責(zé)電源和車輛的信號控制。
Hypervisor
虛擬機(jī)管理器,是一種運(yùn)行在硬件層和操作系統(tǒng)之間的中間軟件層,是用來創(chuàng)建與執(zhí)行虛擬機(jī)的軟件。
Hypervisor包含兩種類型,裸機(jī)型和宿主型。
- 祼機(jī)型
裸機(jī)型 Hypervisor 最常見,直接安裝在硬件資源之上,操作系統(tǒng)安裝并運(yùn)行在 Hypervisor 之上。
目前常見的虛擬機(jī)管理器就包括有黑莓的 QNX和英特爾的 ACRN等等,還有很多。
- 宿主型
宿主型,又稱基于操作系統(tǒng)的虛擬化。將虛擬化層安裝在主機(jī)操作系統(tǒng)中,虛擬化軟件以應(yīng)用程序進(jìn)程形式運(yùn)行在主機(jī)操作系統(tǒng)中,而主機(jī)操作系統(tǒng)運(yùn)行在物理硬件之上。
這張圖繼續(xù)往上的這一部分就是本系列視頻的重點了 - 車載 Android 系統(tǒng)。
車載 Android 系統(tǒng)
官方網(wǎng)址:https://source.android.google.cn/docs/devices/automotive
Android Automotive OS 簡介
車載 Android 系統(tǒng)也被稱為 Android Automotive OS,是對原始 Android 系統(tǒng)的一個功能擴(kuò)充版本。與手機(jī)系統(tǒng)一樣,Android Automotive OS 源代碼完全開放,第三方供應(yīng)商和汽車制造商可以官方源碼的基礎(chǔ)上自行開發(fā)和拓展,無論是編程語言還是各項接口,都與Android系統(tǒng)保持了一致。
與Android手機(jī)上的google服務(wù)類似,google在汽車上也提供了用于汽車的google汽車服務(wù)(GAS,Google automotive service),包含有g(shù)oogle地圖、應(yīng)用市場、google汽車助理等等。google汽車服務(wù)同樣沒有開源,而是以軟件包的形式提供給制造商。
Android 7.0 是google首次開始在Android系統(tǒng)提供汽車相關(guān)的服務(wù)支持,Android 8.0 則進(jìn)一步完善了汽車服務(wù),也推翻了一些Android 7.0中實現(xiàn)。Android 9.0 是Android Automotive真正實現(xiàn)落地的版本,首個搭載標(biāo)準(zhǔn)Android Automotive OS的汽車是沃爾沃旗下的Polestar2,該型汽車于2020年開始進(jìn)行交付,此后越來越多基于Android Automotive OS修改的車載信息娛樂系統(tǒng)(IVI)開始問世。
這里需要注意,由于汽車廠商間的差異化競爭日漸加劇,目前國內(nèi)汽車搭載的Android系統(tǒng)與標(biāo)準(zhǔn)的Android Automotive OS無論是架構(gòu)層還是應(yīng)用都已經(jīng)存在較大的差別了。
說了那么多 Android Automotive 的架構(gòu)那么它和 Android 之間難道沒有區(qū)別嗎?
Android Automotive OS 和 Android 的區(qū)別
首先,還是要強(qiáng)調(diào)Android Automotive 基于 Android 平臺打造的,它并不是 Android 的分支或并行開發(fā)版本。它與手機(jī)、平板電腦等設(shè)備上搭載的 Android 系統(tǒng)使用同樣的代碼庫,在Android上可以運(yùn)行的應(yīng)用同樣可以在 Android Automotive上運(yùn)行。
不過 Android Automotive畢竟是為汽車打造的平臺,所以在 Android 的基礎(chǔ)上擴(kuò)展了很多與汽車相關(guān)的服務(wù)和功能,比較典型的就是Framework 層的 CarService 和 HAL 層的 VehicleHAL,應(yīng)用層由于需要適配汽車的交互方式,所以修改也非常大,但是以上種種都還沒脫離Android系統(tǒng)的范疇
Android Automotive OS 架構(gòu)
圖中綠色部分是 Android 原生的代碼,藍(lán)色部分是車廠需要修改或添加功能的代碼,紫色部分是集成的第三方應(yīng)用。不過在國內(nèi)實際開發(fā)中,無論是綠色還是藍(lán)色部分,我們都會根據(jù)需要進(jìn)行修改和裁剪。
- System APP
系統(tǒng)應(yīng)用,系統(tǒng)應(yīng)用是為了操作系統(tǒng)能正常、高效工作所配備的各種管理、監(jiān)控和維護(hù)系統(tǒng)的程序。例如:SystemUI、Luancher、系統(tǒng)設(shè)置。
- OEM APP
廠商應(yīng)用,由主機(jī)或車廠開發(fā)、集成的應(yīng)用,基本功能都是與車輛有關(guān)。例如:用戶手冊,電源管理、車輛設(shè)置等。
汽車供應(yīng)商招聘Android應(yīng)用開發(fā)者,實際上就是為了開發(fā)這些系統(tǒng)應(yīng)用和廠商應(yīng)用,這些應(yīng)用的實現(xiàn)細(xì)節(jié)將會是我們以后一起學(xué)習(xí)的重點。
- 3RD Party APP
第三方應(yīng)用,在車機(jī)中集成各種第三方軟件公司開發(fā)的APP。一般以音視頻娛樂類為主,例如:嗶哩嗶哩、愛奇藝等。部分廠商的車機(jī)系統(tǒng)中還附帶了應(yīng)用商店,用戶也可以在其中選擇下載自己需要第三方應(yīng)用。
- Android Framework API
用于實現(xiàn)上層應(yīng)用與System Service通信的接口。
- Android System Services
系統(tǒng)服務(wù),不必多說是Android系統(tǒng)的核心模塊,支持著 Android 系統(tǒng)的正常運(yùn)行。
- Car API
用于實現(xiàn)上層應(yīng)用與CarService通信的接口。
- CarService
CarService是車載Android系統(tǒng)新增的核心服務(wù),所有應(yīng)用都需要通過CarService來查詢、控制整車的狀態(tài)。CarService中包含的車載系統(tǒng)服務(wù)非常多,例如:CarInputService 、 CarMediaService、CarPowerManagementService等等,更多內(nèi)容可以閱讀我之前寫過的文章【Android R】車載 Android 核心服務(wù) - CarService 解析。
- Traditional Android HAL
傳統(tǒng)Android 硬件抽象層,就是對Linux內(nèi)核驅(qū)動程序的封裝,向上提供穩(wěn)定的接口,屏蔽底層的實現(xiàn)細(xì)節(jié),同事還有有規(guī)避Linux內(nèi)核開源協(xié)議的作用。
- Vehicle HAL
汽車硬件抽象層,這是車載Android系統(tǒng)新增的硬件抽象層,它的作用使用定義標(biāo)準(zhǔn)接口,讓CarService可以忽略各個汽車廠商的具體實現(xiàn),也就是說CarService負(fù)責(zé)調(diào)用VehicleHAL定義的接口,而 Android Automotive OS中VehicleHAL并沒有具體的實現(xiàn)細(xì)節(jié),所以VehicleHAL需要汽車制造商或芯片廠商來實現(xiàn)。
但是說到底,我們從事車載應(yīng)用開發(fā)的程序員還是要多了解車載應(yīng)用,所以最后我們再看一下,常見的車載 Android應(yīng)用有哪些。
常見應(yīng)用
系統(tǒng)應(yīng)用
- SystemUI
系統(tǒng)界面,在Android中也是一個標(biāo)準(zhǔn)的APK應(yīng)用程序,用來顯示一些不屬于應(yīng)用程序的交互界面。
常見的狀態(tài)欄、導(dǎo)航欄、消息中心、 快捷設(shè)置、音量調(diào)節(jié)彈窗、藍(lán)牙連接彈窗等一系列界面都是由SystemUI模塊負(fù)責(zé)管理、顯示的。SystemUI中的大部分組件都與framewok service存在耦合。是車載應(yīng)用開發(fā)中需要重點定制的項目。
該應(yīng)用通過 SystemServer 啟動。
- Launcher
桌面啟動器,桌面啟動器是幫助用戶查找和啟動其他應(yīng)用程序的軟件。主要負(fù)責(zé)擺放小部件,顯示其它應(yīng)用程序入口。
現(xiàn)代智能座艙的HMI在設(shè)計上,開始賦予Launcher越來越多的功能,例如:顯示3D的車輛模型、地圖定位等等。
該應(yīng)用由SystemServer進(jìn)程下的ActivityManagerService啟動。
- 系統(tǒng)設(shè)置
系統(tǒng)設(shè)置是操作系統(tǒng)中非常重要的一個系統(tǒng)級應(yīng)用,能夠使用戶能夠改變操作系統(tǒng)的狀態(tài)和行為。
系統(tǒng)設(shè)置是整個IVI(車載信息娛樂系統(tǒng))的控制中心,車輛的音效、無線通信、狀態(tài)信息、安全信息等都是需要通過系統(tǒng)設(shè)置來查看和操作。
多媒體應(yīng)用
- 收音機(jī)
目前的車載收音機(jī)包括傳統(tǒng)的模擬信號收音機(jī)和現(xiàn)代化的數(shù)字信號收音機(jī),根據(jù)銷售國家的不同,車載收音機(jī)支持的種類也有所不同。
AM/FM
最常見的模擬收音機(jī)制式,AM - 調(diào)幅收音機(jī),FM - 調(diào)頻收音機(jī)。在不同國家和地區(qū),頻率范圍有一定的差別。
RDS
無線電數(shù)據(jù)廣播(英語:Radio Data System, RDS)是一種在傳統(tǒng)的FM廣播中嵌入少量的數(shù)字信息的通信協(xié)議標(biāo)準(zhǔn)。它在發(fā)射信號時可以利用副載波將電臺名稱、節(jié)目類型、節(jié)目內(nèi)容及其它信息以數(shù)字的形式發(fā)送出去。
DAB 及 DAB+
數(shù)字信號廣播( Digital Audio Broadcasting 簡稱DAB)是繼AM、FM傳統(tǒng)模擬廣播之后的第三代數(shù)字信號廣播,它提供了接近CD質(zhì)量的聲音,具有抗噪聲、抗干擾、抗電波傳播衰落、適合高速移動接收等優(yōu)點。目前主要應(yīng)用于歐美和香港等地區(qū)
除此以外還有 HD Radio、SXM Radio等較為少見的收音機(jī)制式。
- 音視頻播放
音視頻播放屬于車內(nèi)駕駛體驗的不可缺少的一部分,現(xiàn)代汽車的音視頻播放功能主要用于播放SD卡或U盤中的離線音視頻文件,在線音視頻播放功能基本都集成第三應(yīng)用實現(xiàn)。
實際開發(fā)中我們基本上使用 MediaPlayer 或 ExoPlayer 即可。
工具類應(yīng)用
- 地圖導(dǎo)航
車載地圖導(dǎo)航與手機(jī)地圖導(dǎo)航相比,一般都會調(diào)整界面以方便駕駛員觀察,并且都增加了慣性導(dǎo)航功能,現(xiàn)代智能座艙還支持將導(dǎo)航信息輸出到儀表盤和 HUD(抬頭顯示)中。
早期的汽車座艙由于受網(wǎng)絡(luò)限制,并不支持在線更新地圖,一般會有4s 店進(jìn)行離線的地圖更新。隨著移動互聯(lián)網(wǎng)的發(fā)展,當(dāng)代的智能座艙已經(jīng)支持在線更新地圖并提供實時路況功能。
國內(nèi)知名的車載地圖導(dǎo)航供應(yīng)商有,高德、百度和騰訊等。
- 語音識別與語音控制
語音技術(shù)在我們的日常生活已經(jīng)隨處可見,汽車可以說是語音技術(shù)應(yīng)用的最佳案例之一。
駕駛過程中駕駛員很難像使用手機(jī)那樣操作車機(jī)系統(tǒng),語音控制技術(shù)的引入可以幫助駕駛員在不額外分心駕駛的基礎(chǔ)上,完成各類車輛操控。
目前國內(nèi)語音供應(yīng)商非常多,主要有科大訊飛、百度、騰訊、華為等等。
車控應(yīng)用
車控應(yīng)用主要包含車載空調(diào)應(yīng)用與車控車設(shè)應(yīng)用。
- 空調(diào)
車載空調(diào)用于調(diào)節(jié)車內(nèi)溫度、濕度,給乘員提供舒適的環(huán)境。除了基本空調(diào)功能外,高級的空調(diào)系統(tǒng)還包含,空氣凈化、香氛系統(tǒng)等等。
- 車控車設(shè)
車控車設(shè)主要負(fù)責(zé)舒適性控制、車輛控制以及智能駕駛。舒適性控制包含座椅通風(fēng)、座椅姿態(tài)控制、車內(nèi)照明、門窗開閉等等,車輛控制包含剎車輔助、車身姿態(tài)控制、方向盤助力等等。
車控車設(shè)的功能與整體的車輛設(shè)計有很大關(guān)系,以往不同車輛之間差異較大,但是隨著智能座艙的發(fā)展,車控車設(shè)也出現(xiàn)了同質(zhì)化的趨勢。
輔助駕駛應(yīng)用
輔助駕駛的應(yīng)用有很多,Android開發(fā)者需要重點了解的是倒車影像和全景影像,其他的輔助駕駛功能一般會集成在車控車設(shè)應(yīng)用里面,當(dāng)然也有一些是獨立存在的,這與各個汽車制造商對產(chǎn)品的定義有關(guān)系。
首先我們來看倒車影像。
- 倒車影像
倒車影像是駕駛輔助系統(tǒng)中的一個重要配置項,在車輛倒車時可通過裝備在車輛后方的攝像頭,將車后狀況實時顯示在中控或后視鏡的顯示屏上,方便駕駛員觀察。
倒車影像需要覆蓋倒車輔助線,倒車輔助線用于駕駛員判斷車輛行駛過程中的軌跡和車輛與物體的距離,通常分為靜態(tài)倒車輔助線和動態(tài)倒車輔助線。動態(tài)倒車輔助線的線條會隨著方向盤轉(zhuǎn)動而轉(zhuǎn)動,從而準(zhǔn)確的描出倒車的軌跡。
- 360全景影像
360全景影像又稱全景泊車系統(tǒng),是2005年后逐漸出現(xiàn)的一種泊車輔助技術(shù)。早期泊車輔助系統(tǒng)常采用雷達(dá)或單攝像頭,使用聲音報警或顯示車輛后方攝像頭視頻圖像的方式,幫助車輛駕駛員判斷盲角處車輛與障礙物距離。采用雷達(dá)報警方式,距離的顯示并不直觀;采用后置攝像頭方式,則仍會存在盲角和距離判斷不準(zhǔn)的問題。于是逐漸興起了全景泊車技術(shù)。
這種技術(shù)方案里面,車輛裝備4個廣角魚眼攝像頭,分別位于車前、車后和兩個倒車鏡內(nèi),可以完整采集車輛四周的影像。四幅影像通過Soc中的DSP或GPU進(jìn)行拼接,最終將4路視頻圖像合成為一幅完整的鳥瞰圖。也有的方案是使用外部硬件對圖像進(jìn)行圖拼接,這樣輸出到Soc里的畫面就已經(jīng)是拼接好的了。
車輛互聯(lián)
- CarPlay
CarPlay 是蘋果公司推出的一種車載服務(wù)應(yīng)用,蘋果手機(jī)連上支持carplay的車機(jī)后,車機(jī)系統(tǒng)界面就會出現(xiàn)手機(jī)上的地圖和音樂等應(yīng)用,手機(jī)上只要適配了carplay功能的應(yīng)用,都可以在車機(jī)屏幕上直接使用。
CarPlay的市場占有率一度超過50%,但是隨著智能座艙系統(tǒng)的崛起,雖然現(xiàn)在依然是應(yīng)用范圍最廣的車輛互聯(lián)方案,但是它的市場占有率正在逐年下降,目前已經(jīng)不足30%。
- Android Auto
Android Auto 與 Carplay類似,是google公司推出的車輛互聯(lián)方案,通過把手機(jī)應(yīng)用界面投射到車載系統(tǒng)上,來取代汽車制造商的原生車載系統(tǒng)來執(zhí)行Android應(yīng)用與服務(wù)。
由于Android Auto依賴Google服務(wù),所以在國內(nèi)幾乎無法使用,目前國內(nèi)銷售的汽車很少會支持Android Auto。
Android Auto 和 Android Automotive 兩者的命名方式雖然可能有點讓人迷惑,通俗講,Android Automotive 是一個完整的車載操作系統(tǒng),而Android Auto是運(yùn)行在Android系統(tǒng)上的一個服務(wù)于車輛的超級APP。
- CarLife
CarLife 是百度在2015年推出的車聯(lián)網(wǎng)解決方案。和CarPlay和Android Auto產(chǎn)品相比,CarLife的用戶不用在意自己的智能手機(jī)是什么操作系統(tǒng),只需要通過數(shù)據(jù)線或者wifi將手機(jī)連接到車載系統(tǒng)上,就可以使用。
除了以上三種方案,車輛互聯(lián)方案還有華為的HiCar以及小米的CarWith等等。
結(jié)尾
以上就是本次視頻的全部內(nèi)容,由于是第一次做視頻內(nèi)容,文字經(jīng)驗上還是比較欠缺的,錄音效果也不是很好,隨著經(jīng)驗的逐漸積累希望以后能越做越好吧。
好,感謝各位的觀看,有任何意見歡迎在評論區(qū)告訴我,或者發(fā)郵件給告訴我,拜拜!
做視頻真得好費力,要比寫文章多花10倍的時間,UP主們真乃神人!!
總結(jié)
以上是生活随笔為你收集整理的【视频文稿】车载Android应用开发与分析 - 走进车载操作系统的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: JavaWeb --第四章Maven详解
- 下一篇: 【数字信号调制】基于matlab GUI