Android Things 是什么?

    本文地址:http://tongxinmao.com/Article/Detail/id/247

    Android Things 


    1.Android Things是谷歌为Google Brillo更改名称后的新版系统,后者是谷歌在2015年宣布的一款物联网操作系统。尽管Brillo的核心是Android系统,但是它的开发和部署明显不同于常规Android开发。

    2.Brillo把C++作为主要开发环境,而Android Things则面向所有Java开发者,不管开发者有没有移动开发经验。

    3.开发者可以针对物联网设备使用工具包。Android Studio是最常用的Android集成开发环境,它基于IntelliJ IDEA开源社区版本,支持通过Android Things进行物联网开发。应用开发的生命周期几乎和移动开发相同。

    4.Android Things系统支持原始Android SDK中的一个子集,不支持需要用户输入或者需要地图、搜索以及登录等验证凭证的应用程序接口(API)。

    5.和Android手机的OTA无线升级一样,开发者可以通过谷歌已经在其产品和服务中使用过的相同OTA基础设施,推送谷歌提供的系统更新和定制应用升级。

    6.谷歌推荐开发者在最初原型设计和开发时使用微型电脑“树莓派3”、英特尔微型可穿戴设备“爱迪生”(Edison)以及恩智浦半导体的Pico平台。谷歌会在Android Things正式发布前增加更多认证设备。

    7.包括云消息传递服务Firebase在内的谷歌云平台组件能够轻易与Android Things整合。开发者可以利用多个云服务进行存储、状态管理以及发送消息。

    8.Android Things整合了物联网设备通讯平台Weave。Weave Server是用来处理设备注册、命令传送、状态存储以及与谷歌助手等谷歌服务整合的云服务。Weave SDK将嵌入到设备中进行本地和远程通讯。

    9.Nest智能家居设备使用的协议Nest Weave将成为Weave的一个子集。这两种协议都基于IPV6网络协议Thread,后者原本是为建立本地无线网状网络而设计的网络协议。

    10.不管有没有Android Things,开发者都可以使用Weave,因为它是一个独立协议,可以作为Zigbee协议、Z-Wave协议以及蓝牙Bluetooth Smart协议的替代选择。



    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 的调试或者是布署时启动应用。

        Google Service

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

        权限与通知

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

        通知:Android Things 不支持 NotificationManager。

        Things Support Library

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

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

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

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

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

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

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

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

        这些不是传统 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 结合起来,把数据再进行相应的处理,是个不错的思路。



    andoidthings快速入门:

    hello world: https://github.com/androidthings/sample-button


    /gradlew installDebug
    adb shell am start com.example.androidthings.button/.ButtonActivity



    上一篇:树莓派 AndroidThings镜像下载
    下一篇:树莓派使用外接ENC28J60网卡(spi接口)上网