GDE專欄 | Android與Android Things,父子還是兄弟?
文| 谷歌開發技術專家 (GDE) 王玉成 (York Wang)
物聯網應用開發與手機和平板的應用開發有一些區別,那麼 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 結合起來,把資料再進行相應的處理,是個不錯的思路。
下一講我們會去認識一種協議,並且理解如何使用這種協議。
後記
您如果有任何涉及到 Android Things 方面的想法,都歡迎大家在下方留言,我們會把好的建議轉交給 Android Things 的產品部門。也許在某一天,你的建議就是 Andorid Things 的一部分。
推薦閱讀:
GDE專欄 | 完美支援Android Things的開發板都在這裡了
相關文章
- GDE專欄 | Android Things開發環境搭建Android開發環境
- GDE專欄 | Android Things中的I2CAndroid
- GDE專欄 | 一個完整的示例:Android Things和TensorFlow能擦出怎樣的火花?Android
- GDE專題 | 完美支援Android Things的開發板都在這裡了Android
- GDE專欄 | 物聯網到底是什麼?
- Android Things 專題 4 SDK 框架Android框架
- Android Things專題 1.前世今生Android
- GDE專欄 | Web開發資源彙總Web
- Android Things 專題 2 硬體介紹Android
- Android Things 專題 3 開發環境搭建Android開發環境
- 我們期待的Android Things是什麼樣子?Android
- 向大家推薦小專欄《Android 面試指南》,還可以內推Android面試
- 正式釋出Android Things 1.0Android
- Android Things 開發入門Android
- react父子、子父、兄弟通訊React
- Android Things Developer Preview 3釋出AndroidDeveloperView
- 釋出Android Things Developer Preview 4.1AndroidDeveloperView
- Android Things Developer Preview 2 釋出AndroidDeveloperView
- Android,開源還是封閉?Android
- Android Things 專題6 完整的栗子:運用TensorFlow解析影象Android
- Android Things 專題6 完整的栗子:運用TensorFlow解析影像Android
- Android Things系統結構及展望Android
- Android app 判斷是手機還是平板AndroidAPP
- Android與iOS/WP8跨平臺整合設計與開發_專欄AndroidiOS
- 快來參加Android Things Hackster競賽Android
- JS 判斷客戶端是iOS還是AndroidJS客戶端iOSAndroid
- vue2.0父子、兄弟元件通訊,$emit使用Vue元件MIT
- JavaScript判斷ios還是android系統JavaScriptiOSAndroid
- #io17# 釋出Android Things Developer Preview 4AndroidDeveloperView
- Android專案中自定義頂部標題欄Android
- 開發Android應用用Kotlin還是Java?AndroidKotlinJava
- 選擇iOS還是Android?這很重要嗎?iOSAndroid
- Android常駐通知欄Android
- 相容 Android 4.4 透明狀態列與導航欄Android
- 【 karle 專欄 】Android 初探底層知識系列——Binder原理。Android
- Dice:Android開發者更喜歡Kotlin還是JavaAndroidKotlinJava
- Android開發實踐:使用Service還是ThreadAndroidthread
- 釋出Android Things Console開發者預覽版Android