Android Things 專題 4 SDK 框架

wfing123發表於2017-03-27

文| 谷歌開發者技術專家, 物聯網方向 (IOT GDE) 王玉成(York Wang)

物聯網應用開發與手機和平板的應用開發有一些區別,那麼Android Things與Android又有哪些差別呢?

變化

Android Things主要在Android的核心框架中擴充套件了一些支援物聯的API。開發者可以利用這些API直接與自定義的硬體打交道,Android Things同時也簡化了單個程式的應用,開機可以自動執行使用者程式。

Android Things 專題 4 SDK 框架
這裡寫圖片描述

核心應用包

Android Things不包括標準的system app和content provider。也會在下面的content provider API中避免使用common intent。
CalendarContract
ContactsContract
DocumentsContract
DownloadManager
MediaStore
Settings
Telephony
UserDictionary
VoicemailContract

可選的顯示

Android Things支援Android的通用框架,比較傳統的Android佈局,少了狀態列和導航按鈕,使用者只能以全屏方式來體驗應用。
Android Things的應用仍然要包含Activity,這是因為Activity要接收前置應用的焦點用於觸發。Android Things不能通過非前端的應用元件(比如服務)來獲取按鍵、或者是移動資訊。複製程式碼

Home Activity
Android Things只支援單應用,應用總入口為”home activity”。AndroidManifest.xml檔案中,intent filter必須包括兩項內容:
category.DEFAULT和category.IOT_LAUNCHER用於支援iot;
category.LAUNCHER用於Android Studio的除錯或者是佈署時啟動應用。

Android Things 專題 4 SDK 框架
這裡寫圖片描述

Google Service

Android Things支援Google Service的一個子集,下表列出了Android Things支援哪些API,不支援哪些API。複製程式碼

Supported APIs

Cast
Drive
Firebase Analytics
Firebase Cloud Messaging (FCM)
Firebase Crash Reporting
Firebase Realtime Database
Firebase Remote Config
Firebase Storage
Fit
Instance ID
Location
Nearby
Places
Mobile Vision

Unavailable APIs

AdMob
Android Pay
Firebase App Indexing
Firebase Authentication
Firebase Dynamic Links
Firebase Invites
Firebase Notifications
Maps
Play Games
Search
Sign-In

許可權
Android Things無法在執行時申請許可權。
通知
Android Things不支援NotificationManager。

Things Support Library

Android Things新增了單獨的API,即Things Support Library,這組API包括兩個主要部分。Peripheral I/O和User-space Drivers。複製程式碼

Android Things 專題 4 SDK 框架
這裡寫圖片描述

這兩部分API是Android的標準SDK中沒有的。

我們還是先看看Peripheral IO裡面有哪些東西

Android Things 專題 4 SDK 框架
這裡寫圖片描述

GPIO可以用於感測器的控制,也可以用於工業標準協議。Native PIO可以用C/C++去操作GPIO(Developer Preview 2版本新增了NDK的支援)。
PWM用於對電機,燈等外設做細粒度控制。
最重要的一塊,就是硬體協議的支援。

三種通訊協議,各有各的好。其中I2C和SPI協議是同步訊號,SPI比I2C的控制稍微複雜一點,SPI多了片選訊號,一般是用撥碼開關來做SPI的片選訊號。UART屬於非同步訊號,主要用於低速傳輸。三種協議剛好滿足了三種不同場景的速度要求。值得一提的是,國內許多協議模組,還有匯流排模組,都能夠用串列埠進行轉發,而感測器模組,也都支援I2C或者是SPI介面。Android Things支援了這三種通用的序列協議,也就意味著支援了大量的感測器或者是其它外設。

然後接下來看看User-space Divers是個什麼鬼

Android Things 專題 4 SDK 框架
這裡寫圖片描述

這些不是傳統Android的基本的API麼,為啥在Android Things中需要單獨的列為一類API支援呢?回到先前的我們比較Android Things和傳統的Android的差異性上來,Android Things是不支援Service用於後臺廣播的,當我們需要監聽裝置時,需要在Service上面封裝Driver,然後在Activity中去響應事件。

GPS提供高精度的物理定位資訊,我們可以把GPS的資料結合Wi-Fi,或者是 Fused Location Provider,最終得到定位資訊的結果。
利用INPUT介面,我們可以把嵌入式裝置中的觸控式螢幕、鍵盤、遊戲手柄等裝置,與拖拽、手指滑動等操作結合起來,讓使用者和裝置進行簡單互動。
Sensor可以測量和報告物理環境的狀態,Android Things的感測器框架sensor fusion可以把多種物理感測器的原始資料轉化成統一的虛擬感測器資料。這裡稍微補充一下,sensor fusion在Android中已經有API了,網上也有許多程式碼做參考,就不在這兒展開了。在實際的程式碼實現中,開發者自己實現sensor的驅動,然後與sensor fusion結合起來,把資料再進行相應的處理,是個不錯的思路。

後記

歡迎大家更多的留言,涉及到Android Things的方方面面,都可以提,我們會把好的建議轉交給Android Things的產品部,你的建議,也許在某一天,就是Andorid Things的一部分。

下一講我們會去認識一種協議,並且理解如何使用這種協議。

相關文章