结合Android移动开发理解Android Things
设备应用程序的开发比手机和平板电脑更接近硬件和驱动,并且通常呈现一个单一的应用程序体验。本文档主要讨论Android的移动开发和Android Things的一些主要区别。
Android Things继承了Android FrameWork和支持库,这些API允许在设备上的开发。
Things支持库
- Peripheral I/O API
外围设备I/O API让应用程序使用工业标准协议和接口与传感器和执行器进行通信。下列接口支持:GPIO、PWM、I2C、SPI、UART。
了解更多请参看:https://developer.android.google.cn/things/sdk/pio/index.html - User Driver API
用户驱动程序继承现有的Android Fragment Service,并允许应用程序注入硬件事件的框架,在该框架中其他应用程序可以访问使用标准的Android API。
了解更多请参看:https://developer.android.google.cn/things/sdk/drivers/index.html
变化
1.核心应用程序包
Android Things不包括标准的系统应用程序和 Content Provider 。避免在应用程序中使用普通的intent和以下Content Provider:
- CalendarContract
- ContactsContract
- DocumentsContract
- DownloadManager
- MediaStore
- Settings
- Telephony
- UserDictionary
- VoicemailContract
2.显示的是可选的
Android Things支持图形用户界面使用与传统Android应用相同的UI工具包。在图形模式下,应用程序窗口占用显示的全部空间。Android Things不包括系统状态栏或导航按钮,给应用程序完全控制的可视化用户体验。
不过,Android Things并不需要显示。在不存在图形显示的设备上,Activity仍然是Android应用程序的主要组件。这是因为Fragment将所有输入事件传递给具有焦点的前台Activity,不过应用程序无法通过其他组件(例如服务)接收关键事件或活动事件。
3.Home activity支持
Android Things期望一个应用程序的“Home activity”作为系统自动启动的主要入口点。该Activity必须包含一个包括category_default和iot_launcher的 intent filter。
为便于开发,这样的Activity应该包括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服务支持
Android Things作为谷歌API的一个子集,受大多数Google服务支持。不过一般来说,要求用户输入或认证凭证的API不适用于应用程序。
支持: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.不支持运行时权限
不支持运行时请求权限,因为设备不能保证有一个UI接受运行时权限对话框。在应用程序的清单文件中声明您需要的权限。在您的应用程序清单中声明的所有正常和危险的权限在安装时被授予。
6.不支持通知。
由于Android系统中没有系统范围的状态栏和窗口阴影,所以不支持通知.。避免调用NotificationManager API在你的应用程序