設(shè)備應(yīng)用程序的開發(fā)比手機和平板電腦更接近硬件和驅(qū)動昌抠,并且通常呈現(xiàn)一個單一的應(yīng)用程序體驗。本文檔主要討論Android的移動開發(fā)和Android Things的一些主要區(qū)別睁蕾。
Android Things繼承了Android FrameWork和支持庫嗅义,這些API允許在設(shè)備上的開發(fā)。
Things支持庫
- Peripheral I/O API
外圍設(shè)備I/O API讓應(yīng)用程序使用工業(yè)標準協(xié)議和接口與傳感器和執(zhí)行器進行通信认臊。下列接口支持:GPIO、PWM锄奢、I2C失晴、SPI冤议、UART。
了解更多請參看:https://developer.android.google.cn/things/sdk/pio/index.html - User Driver API
用戶驅(qū)動程序繼承現(xiàn)有的Android Fragment Service师坎,并允許應(yīng)用程序注入硬件事件的框架,在該框架中其他應(yīng)用程序可以訪問使用標準的Android API堪滨。
了解更多請參看:https://developer.android.google.cn/things/sdk/drivers/index.html
變化
1.核心應(yīng)用程序包
Android Things不包括標準的系統(tǒng)應(yīng)用程序和 Content Provider 胯陋。避免在應(yīng)用程序中使用普通的intent和以下Content Provider:
- CalendarContract
- ContactsContract
- DocumentsContract
- DownloadManager
- MediaStore
- Settings
- Telephony
- UserDictionary
- VoicemailContract
2.顯示的是可選的
Android Things支持圖形用戶界面使用與傳統(tǒng)Android應(yīng)用相同的UI工具包。在圖形模式下袱箱,應(yīng)用程序窗口占用顯示的全部空間遏乔。Android Things不包括系統(tǒng)狀態(tài)欄或?qū)Ш桨粹o,給應(yīng)用程序完全控制的可視化用戶體驗发笔。
不過盟萨,Android Things并不需要顯示。在不存在圖形顯示的設(shè)備上了讨,Activity仍然是Android應(yīng)用程序的主要組件捻激。這是因為Fragment將所有輸入事件傳遞給具有焦點的前臺Activity,不過應(yīng)用程序無法通過其他組件(例如服務(wù))接收關(guān)鍵事件或活動事件前计。
3.Home activity支持
Android Things期望一個應(yīng)用程序的“Home activity”作為系統(tǒng)自動啟動的主要入口點胞谭。該Activity必須包含一個包括category_default和iot_launcher的 intent filter。
為便于開發(fā)男杈,這樣的Activity應(yīng)該包括category_launcher意圖過濾器作為默認的Activity丈屹。
<application
android:label="@string/app_name">
<activity android:name=".HomeActivity">
<!-- Launch activity as default from Android Studio -->
<intent-filter>
<action android:name="android.intent.action.MAIN"/>
<category android:name="android.intent.category.LAUNCHER"/>
</intent-filter>
<!-- Launch activity automatically on boot -->
<intent-filter>
<action android:name="android.intent.action.MAIN"/>
<category android:name="android.intent.category.IOT_LAUNCHER"/>
<category android:name="android.intent.category.DEFAULT"/>
</intent-filter>
</activity>
</application>
4.Google服務(wù)支持
Android Things作為谷歌API的一個子集,受大多數(shù)Google服務(wù)支持伶棒。不過一般來說旺垒,要求用戶輸入或認證憑證的API不適用于應(yīng)用程序。
支持: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糊闽。
不支持: AdMob梳玫、Android Pay、Firebase App Indexing右犹、Firebase Authentication
Firebase Dynamic Links提澎、Firebase Invites、Firebase Notifications念链、Maps盼忌、Play Games、Search掂墓、Sign-In谦纱。
5.不支持運行時權(quán)限
不支持運行時請求權(quán)限,因為設(shè)備不能保證有一個UI接受運行時權(quán)限對話框君编。在應(yīng)用程序的清單文件中聲明您需要的權(quán)限跨嘉。在您的應(yīng)用程序清單中聲明的所有正常和危險的權(quán)限在安裝時被授予。
6.不支持通知吃嘿。
由于Android系統(tǒng)中沒有系統(tǒng)范圍的狀態(tài)欄和窗口陰影祠乃,所以不支持通知.。避免調(diào)用NotificationManager API在你的應(yīng)用程序