Android 物联网SDK

原文链接

支持库

主要包含两方面的支持:外部器件 IO API用户驱动API

外部器件 IO API实现了相关的工业标准协议和接口,可以让App与传感器和制动元件进行通信。支持的接口主要有:GPIOPWMI2CSPIUART

https://developer.android.com/things/sdk/pio/index.html

用户驱动API扩展自Android framework的Service组件,它允许App注入硬件事件到framework层,其他的Apps就可以通过标准的Android API来访问这些事件信息。

https://developer.android.com/things/sdk/drivers/index.html

与AndroidOS相比的变更

应用变化

Android Things中系统应用将不复存在,Content Provider也消失了,所以在开发应用时就不要通过Intent调用如下API了:

CalendarContractContactsContractDocumentsContractDownloadManagerMediaStoreSettingsTelephonyUserDictionaryVoicemailContract

显示不再是必须

Android Things的应用与传统的应用开发一样,提供了相同的UI工具集来支持显示,在图形模式下窗口会以真实全屏的方式显示,没有状态栏和导航栏,即便你从底部滑动也不会出现,整个屏幕完全交由用户操控。

当然了,Android Things的显示屏并不是必须的。在一个无屏的设备上App的activities还是主组件,framework依然会分发输入事件到获得焦点的前台activity上。应用不能通过其他应用的组件(比如service)来接收键盘事件或者移动事件。

主Activity支持

Android Things自动运行一个App在manifest中定义的"home activity"作为系统启动后入口,这个activity必须包含一个由CATEGORY_DEFAULT和IOT_LAUNCHER组成的intent-filter。

为了方便开发,这个activity还需要包含一个CATEGORY_LAUNCHER的intent-filter,这样Android Studio才能在发布和调试时作为默认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>

Google Services支持的变化

Android Things支持一系列的Google APIs。在这里需要用户输入和授权的API都不支持。下表列出了支持的API和不支持的API:

支持的APIs不支持的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 PlacesMobile VisionAdMob Android Pay Firebase App Indexing Firebase Authentication Firebase Dynamic Links Firebase Invites Firebase Notifications Maps Play Games Search Sign-In

权限

运行时授权在这里不能够提供支持,因为没有UI来提供授权对话框的显示,所以App开发者需要在manifest中将所有权限列出。所有正常和高危权限均会在安装时统一授予。

通知

由于没有系统级别的状态栏和UI窗口支持,所以通知服务不会支持,在App中要避免调用NotificationManager。