Android與Android Things,父子還是兄弟?
物聯網應用開發與手機和平板的應用開發有一些區別,那么 Android Things 與 Android 又有哪些差別呢?
變化
Android Things 主要在 Android 的核心框架中擴展了一些支持物聯的 API。開發者可以利用這些 API 直接與自定義的硬件打交道,Android Things 同時也簡化了單個程序的應用,開機可以自動運行用戶程序。
核心應用包
Android Things 不包括標準的 system app 和 content provider。也會在下面的 content provider API 中避免使用 common intent。
- CalendarContract
- ContactsContract
- DocumentsContract
- DownloadManager
- MediaStore
- Settings
- Telephony
- UserDictionary
- VoicemailContract
查看文檔請訪問:
developer.android.google.cn/reference/android/provider/package-summary.html
可選的顯示
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 的調試或者是布署時啟動應用。
Google Service
Android Things 支持 Google Service 的一個子集,下表列出了 Android Things 支持哪些 API,不支持哪些 API。
權限與通知
- 權限:Android Things 無法在運行時申請權限。
- 通知:Android Things 不支持 NotificationManager。
Things Support Library
Android Things 添加了單獨的 API,即 Things Support Library,這組 API 包括兩個主要部分。Peripheral I/O 和 User-space Drivers。
這兩部分 API 是 Android 的標準 SDK 中沒有的。
我們還是先看看 Peripheral IO 里面有哪些東西:
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 的基本的 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 結合起來,把數據再進行相應的處理,是個不錯的思路。
【本文是51CTO專欄機構“谷歌開發者”的原創稿件,轉載請聯系原作者】