原文地址:http://blog.csdn.net/appdevdaily/article/details/44156135
App開發智能車載之SDK篇
網絡資源
-
視頻資源 - DevBytes:安卓車載介紹 http://v.youku.com/v_show/id_XODY4NjM1NTI0.html - 安卓車載系統設計介紹: http://v.youku.com/v_show/id_XODY4NjI4ODY0.html - DevBytes:安卓車載音頻處理 http://v.youku.com/v_show/id_XODY4NjM3NzE2.html - DevBytes:安卓車載通知處理 http://v.youku.com/v_show/id_XODY4NjQwNDQw.html - 官方開發介紹 - 車載開發教程 https://developer.android.com/training/auto/index.html - 車載應用質量控制 https://developer.android.com/distribute/essentials/quality/auto.html - github: - 展示如何通過安卓車載系統播放音樂: https://github.com/googlesamples/android-MediaBrowserService - 演示當收到信息的時候如何通過車載系統API來通知用戶: https://github.com/googlesamples/android-MessagingService
開發環境設置 -
進行安卓車載應用開發,需要設置必要的開發環境。目前上來說Google開放了如下兩類應用的開發和測試模擬器, 可以用來對原型設計進行驗證 - 音頻應用(audio app): 利用車載音響系統來控制手機中音樂播放 - 消息應用(messaging app): 接收消息通知,消息語音閱讀與回覆 - 依賴版本和庫信息: - API Level: Android5.0(API level 21)提供了android auto開發支持,當創建車載應用的時候,需要指定API level 21 - Support Library: 車載通知相關類NotificationCompat.CarExtender包含在V4 suppport library中, - 配置車載應用配置 - 在車載項目res/xml目錄中添加文件automotive_app_desc.xml來標示車載應用需要用到的車載系統的功能
-
media: 標明應用需要利用車載系統音響進行播放 - notificaiton: 標明應用需要在車載系統屏幕上顯示信息 - 在應用manifest.xml中添加車載應用能力說明
…
模擬器安裝
- Google提供了兩款模擬器apk, 可以安裝到手機上模擬車載系統顯示屏 - Android Media Browser模擬器,可以在Android SDK目錄下找到/extras/google/simulators/media-browser-simulator.apk,這個模擬器專門爲車載音響應用設計的 - Android Messaging模擬器(/extras/google/simulators/media-browser-simulator.apk),進行如下配置Setting=>Sounds& Notifications=>Notification Access勾選Messing Simulator. 這個模擬器是專門爲車載消息通知應用設計的
carplay auto
安卓車載音響系統應用
github上有個Android media browser service的例程項目 https://github.com/googlesamples/android-MediaBrowserService 我們可以通過這個項目來了解車載音頻應用開發
Android framework已經對底層的底層的實現細節進行了封裝,應用開發者很容易直接採用framework現有提供的MediaBrowserService, MediaSession,MediaPlayer等接口進行開發
編譯運行
下載github上的googlesamples/android-MediaBrowserService進行編譯
git clone https://github.com/googlesamples/android-MediaBrowserService.git .
這個project主要是爲演示MediaBrowserService的使用方法的,我們可以稍微改改動一下就可以支持Auto應用
這個project默認是基於android studio的,習慣用使用eclipse+ADT的可以通過以下很方便的把他轉成Eclipse的項目
config
創建一個新的eclispe Android Application Project, 在創建嚮導中不要創建Activity
拷貝Application/src/main/java/到eclipse workspace/src目錄
拷貝Application/src/main/res到eclipse workspace/res目錄
拷貝Application/src/main/AndroidManifest.xml到eclipse workspace/AndroidManifest.xml
Project Properties=>Java Compiler=>Compiler compliance level 1.7
在AndroidManifest.xml中添加Auto描述信息
- 將App安裝在帶有Android Media Browser模擬器的設備上,打開模擬器,會有如下界面, 可以選擇Media Browser Service, 播放音樂
media sim
MediaBrowserService播放控制
車載應用需要在manifest文件中聲明MediaBrowserService, 車載設備通過該Service與車載應用進行交互。MediaBrowserService可以讓車載設備查詢車載應用所提供的內容,車載設備通過MediaBrowserService創建的MediaSession對象來進行播放控制。
Android Auto的媒體播放實現和Phone android媒體播放類似,framework爲我們封裝了底層實現細節,提供了統一的API接口. Andriod Auto音頻播放主要涉及到如下的幾個類
MediaBrowserService: 提供該服務的應用,允許其他應用來查詢該應用所提供的媒體內容並接收其他應用的媒體播放請求.
MediaSession: 當應用需要發佈媒體信息或者處理媒體相關事件的時候需要創建MediaSession對象,通過該對象,應用程序可以同媒體控制器,音量控制器和媒體按鍵等系統資源進行交互。通過實現與註冊MediaSession.Callback接口, 應用可以接收系統傳遞來的媒體事件。
MediaPlayer: 應用程序通過該類型對象實現媒體的播放和控制。
playback
MediaBrowserService組織播放列表
MediaBrowserService通過一個樹形結構來組織其所發佈的內容。根節點可以通過MEDIA_ID_ROOT來標識,中間節點可以使用FLAG_BROWSABLE來標識,葉節點可以通過FLAG_PLAYABLE來標識。
當車載設備和MediaBrowserService進行交互的時候,會調用其OnGetRoot()函數,在該函數實現中可以做一下權限檢查的工作,然後返回一個BrowserRoot類型的根節點對象。
在需要的時候(用戶操作驅動), 車載設備會反覆調用MediaBrowserService的onLoadChildren()函數來載入整個媒體樹狀結構。
歡迎訂閱App開發日報
app.memect.com
2015-03-08 (加長版 5條)
iOS 開發知識與能力體系
如何檢測一個APP:從解密到批量獲取他人信息
Material Design風格安卓對話框
NativeScript構建原生應用
Android性能優化典範