广告

原创 GDE专栏 | Android与Android Things,父子还是兄弟?

2017-3-8 13:45 843 0

GDE_android_things_1


文| 谷歌开发技术专家 (GDE) 王玉成 (York Wang)


物联网应用开发与手机和平板的应用开发有一些区别,那么 Android Things 与 Android 又有哪些差别呢?


变化


GDE_android_things_2


Android Things 主要在 Android 的核心框架中扩展了一些支持物联的 API。开发者可以利用这些 API 直接与自定义的硬件打交道,Android Things 同时也简化了单个程序的应用,开机可以自动运行用户程序。


核心应用包


Android Things 不包括标准的 system app 和 content provider。也会在下面的 content provider API 中避免使用 common intent。



  • CalendarContract

  • ContactsContract

  • DocumentsContract

  • DownloadManager

  • MediaStore

  • Settings

  • Telephony

  • UserDictionary

  • VoicemailContract


查看文档请访问:

developer.android.google.cn/reference/android/provider/package-summary.html


可选的显示


Android Things 支持 Android 的通用框架,比较传统的 Android 布局,少了状态栏和导航按钮,用户只能以全屏方式来体验应用。


Android Things 的应用仍然要包含 Activity,这是因为 Activity 要接收前置应用的焦点用于触发。Android Things 不能通过非前端的应用组件(比如服务)来获取按键、或者是移动信息。


Home Activity


Android Things 只支持单应用,应用总入口为 ”home activity”。AndroidManifest.xml 文件中,intent filter 必须包括两项内容:



  • category.DEFAULT和 category.IOT_LAUNCHER 用于支持 iot;

  • category.LAUNCHER 用于 Android Studio 的调试或者是布署时启动应用。

    GDE_android_things_3


Google Service


Android Things 支持 Google Service 的一个子集,下表列出了 Android Things 支持哪些 API,不支持哪些 API。

GDE_android_things_4


权限与通知


权限:Android Things 无法在运行时申请权限。

通知:Android Things 不支持 NotificationManager。


Things Support Library


Android Things 添加了单独的 API,即 Things Support Library,这组 API 包括两个主要部分。Peripheral I/O 和 User-space Drivers。

GDE_android_things_5


这两部分 API 是 Android 的标准 SDK 中没有的。


我们还是先看看 Peripheral IO 里面有哪些东西:

GDE_android_things_6


GPIO 可以用于传感器的控制,也可以用于工业标准协议。Native PIO 可以用 C/C++ 去操作 GPIO ( Developer Preview 2 版本添加了 NDK 的支持)。


PWM 用于对电机,灯等外设做细粒度控制。


最重要的一块,就是硬件协议的支持。

GDE_android_things_7


三种通信协议,各有各的好。其中 I2C 和 SPI 协议是同步信号,SPI 比 I2C 的控制稍微复杂一点,SPI 多了片选信号,一般是用拨码开关来做 SPI 的片选信号。UART 属于异步信号,主要用于低速传输。三种协议刚好满足了三种不同场景的速度要求。值得一提的是,国内许多协议模块,还有总线模块,都能够用串口进行转发,而传感器模块,也都支持 I2C 或者是 SPI 接口。Android Things 支持了这三种通用的串行协议,也就意味着支持了大量的传感器或者是其它外设。


然后接下来看看 User-space Divers 是个什么:

GDE_android_things_8


这些不是传统 Android 的基本的 API 么,为啥在 Android Things 中需要单独的列为一类API支持呢?回到先前的我们比较 Android Things 和传统的 Android 的差异性上来,Android Things 是不支持 Service 用于后台广播的,当我们需要监听设备时,需要在 Service 上面封装 Driver,然后在 Activity 中去响应事件。


GPS 提供高精度的物理定位信息,我们可以把 GPS 的数据结合 Wi-Fi,或者是 Fused Location Provider,最终得到定位信息的结果。


利用 INPUT 接口,我们可以把嵌入式设备中的触摸屏、键盘、游戏手柄等设备,与拖拽、手指滑动等操作结合起来,让用户和设备进行简单交互。


Sensor 可以测量和报告物理环境的状态,Android Things 的传感器框架 sensor fusion 可以把多种物理传感器的原始数据转化成统一的虚拟传感器数据。这里稍微补充一下,sensor fusion 在 Android 中已经有 API 了,网上也有许多代码做参考,就不在这儿展开了。在实际的代码实现中,开发者自己实现 sensor 的驱动,然后与 sensor fusion 结合起来,把数据再进行相应的处理,是个不错的思路。


下一讲我们会去认识一种协议,并且理解如何使用这种协议。


版权声明:本文为博主原创文章,未经博主允许不得转载。


广告

文章评论 0条评论)

登录后参与讨论
相关推荐阅读
wfing 2017-03-22 22:56
GDE专栏 | 完整示例:Android Things和TensorFlow能擦出怎样的火花?
第一次阅读本专题的朋友可移步,阅读之前的文章: 物联网到底是什么? 完美支持 Android Things 的开发板都在这里了 Android Things 开发环境搭建 Android 与 And...
wfing 2017-03-16 12:07
GDE专栏 | Android Things中的I2C
上一讲中,我们说到 Android Things 的 API,以及 Peripheral I/O 设备包含的 API 的类型。但是作为程序员的我们,怎么理解这些 API 呢? 我们就拿 I2C 的 A...
wfing 2017-03-02 08:52
GDE专栏 | Android Things专题3 开发环境搭建
物联网 (IoT) 的应用开发,离不开跟开发板打交道,我们需要配置好开发板的各种环境,最后才能用 Android Studio 进行应用开发。 我们今天就以 Raspberry Pi 3 为例,一起来...
wfing 2017-03-01 22:23
GDE专栏 | Android Things专题2 硬件介绍
经过2016年Brillo首批开发者的反馈,以及市场调研,为了照顾广大Android开发者的习惯,形成了现在的Android Things操作系统,完全兼容Android Studio的开发环境。 今...
wfing 2017-03-01 22:16
GDE专栏 | Android Things专题 1.前世今生
版权声明:本文为博主原创文章,未经博主允许不得转载。 2016 年 12 月,Google 发布了 Developer Preview 版的 Android Things,该平台为利用 Android...
我要评论
0
0
广告
关闭 热点推荐上一条 /1 下一条