Android 物联网SDK
支持库
主要包含两方面的支持:外部器件 IO API、用户驱动API
外部器件 IO API实现了相关的工业标准协议和接口,可以让App与传感器和制动元件进行通信。支持的接口主要有:GPIO、PWM、I2C、SPI、UART。
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 |
---|---|
权限
运行时授权在这里不能够提供支持,因为没有UI来提供授权对话框的显示,所以App开发者需要在manifest中将所有权限列出。所有正常和高危权限均会在安装时统一授予。
通知
由于没有系统级别的状态栏和UI窗口支持,所以通知服务不会支持,在App中要避免调用NotificationManager。