概述
Android Things通过提供相同的Android开发工具,一流的Android框架和Google API,帮助开发人员在移动设备开发上取得成功,使开发具备连接性
的嵌入式设备变得容易。
嵌入式设备的应用程序使开发人员更接近硬件外设和驱动程序,而不是手机和平板电脑。此外,嵌入式设备通常向用户呈现单一应用体验。本文档介绍了Android开发和Android系统之间的主要补充,遗漏和差异。
Android Things 通过物件支持库提供的附加API来扩展核心的Android框架。这些API允许应用程序与在移动设备上找不到的新类型的硬件集成。
Android Things平台也简化了单应用程序的使用。系统应用程序不存在,您的应用程序在启动时自动启动,以将用户沉浸在应用程序体验中。
Things 支持的库
外设 I/O API
外设I / O API让您的应用程序使用行业标准协议和接口与传感器和执行器通信。支持以下接口:GPIO,PWM,I2C,SPI,UART。
有关如何使用API的更多信息,请参阅“外设I / O API指南” (Peripheral I/O API Guides)。
用户驱动程序 API
用户驱动程序扩展现有的Android框架服务,并允许应用程序将硬件事件注入其他应用程序可以使用标准Android API访问的框架。
有关如何使用API的更多信息,请参阅“用户驱动程序API指南”(User Driver API Guides)。
行为变更
核心应用程序包
Android Things不包括系统应用程序和内容提供商的标准套件。避免在应用程序中使用常用内容(common intents)以及以下内容提供程序(即:content provider)API:
CalendarContract
ContactsContract
DocumentsContract
DownloadManager
MediaStore
Settings
Telephony
UserDictionary
VoicemailContract
显示是可选的
Android Things支持使用与传统Android应用程序相同的 UI toolkit 的图形用户界面。在图形模式下,应用程序窗口占据显示器的完整空间。 Android Things不包括系统状态栏或导航按钮,使应用程序可以完全控制可视化用户体验。
但是,Android Things并非必须要显示。在不存在图形显示的设备上,活动仍然是您的Android Things应用程序的主要组成部分。这是因为框架将所有 输入事件 提供给具有焦点的前台活动。您的应用程序无法通过任何其他应用程序组件(如服务)接收关键事件或运动事件。
Home activity 支持
Android Things预计一个应用程序将其清单中的“home activity”公开为系统在引导时自动启动的主要入口点。此活动必须包含一个包含 CATEGORY_DEFAULT 和IOT_LAUNCHER
的Intent请求过滤器。
为了方便开发,同样的活动应包含一个CATEGORY_LAUNCHER Intent过滤器,因此Android Studio可以在部署或调试时将其作为默认活动启动。
<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 支持Android的一部分 Google APIs 。下表分解了Android中的API支持:
Android的每个版本都会捆绑最新版本的Google Play 服务,并且至少需要10.0.0版的客户端SDK。 Android Things不包括 Google Play 商店,该商店负责在设备上自动更新Play服务。由于设备上的Play服务版本是静态的,因此应用程序无法将客户端SDK定位到大于与目标版本捆绑在一起的版本。
权限
不支持 运行时请求权限 ,因为嵌入式设备不能保证有UI来接受运行时对话框。 在应用程序的清单文件中声明所需的权限(Declare permissions)。在应用程序的清单中声明的所有正常和危险的权限都将在安装时被授予。
通知
由于Android Things中没有全系统状态栏和窗帘,因此不支持 notifications。 避免在您的应用程序中调用NotificationManager APIs。