Android Things我爱编程

Android Things(一)-简介篇

2017-08-07  本文已影响380人  嘎啦果安卓兽

首先介绍一下 Google 基于 Android 的庞大的生态系统,有支持智能手机和平板电脑的 Android OS,有支持可穿戴设备的 Android Wear,如智能手表;有支持笔记本和台式机的 Chrome OS;有为机顶盒和电视机服务的 Android TV 系统,而现 Android 家族又添加了新成员 Android Things 。那么 Andriod Things 是什么 呢?

2016年12月,Google 第一次对外公布了Android Things 的预览版本。Android Things 是 Google 针对物联网(IoT,Internet of Things)和智能硬件推出的一款操作系统。从名字可知这是Android 系统的一个子集,对Android 开发人员来说绝对是个好消息。谷歌的理念是通过 Android Things 让 Android 开发者与公司能够以他们过去的开发方式继续开发物联网硬件设备。它可以运行在有线扬声器、智能控温器、安全摄像头、路由器等设备上。但Android Things 系统的定位是集成度更高的智能设备,它让智能设备自己处理任务而非全让服务器处理,所以能适应更复杂的任务。

Android Things 的前世

Android Things 这款操作系统并非凭空出现,它是 Google 开发的物联网操作系统 Brillo 改进之后的一个操作系统。尽管 Brillo 的核心是 Android 系统,但是把 C/C++ 作为主要开发环境,其开发和部署都不同于常规的Android 开发。Android Things 则继承 Android 强大和易用的特点,可以依靠现有的 Android 生态资源,包括 Android Studio( 下文简称 AS )、Android SDK 等,且开发周期同 Android App 一样。在安全方面,Android Things 将会利用 Android OS 定期的安全更新来保障自身的安全性。

Android Things 天生支持物联网通讯协议 Weave。Weave 协议同 Brillo 在2015年的 Google I/O 大会上一同推出, Weave 是一个框架的范畴,因为其不依赖底层的通信协议,可以运行在任何常见的物联网通信协议之上,如 WiFi 、Zigbee等。

Android Things 优点

The ease and power of Android
Rapid prototypes to real products
The power of Google at your fingertips

硬件平台

既然是一款操作系统,怎么能少的了硬件呢。目前 Android Things 预览版的操作系统已经可兼容 Intel Edison、NXP Pico 以及 Raspberry Pi 3 等开发板。对于新手学习的话用树莓派就够了,一个是因为树莓派社区用户量多,网上有大量的教程和例子,另一个是因为它价格便宜啊。

Intel® Edison Intel® Joule™ NXP i.MX6UL
NXP i.MX7D Raspberry Pi 3

Android Things 框架

Android Things 架构

从 Android Things 的系统架构来看,在 Framework 层 相较于 Android 系统添加了 Things Support Library 的支持。也就是说 Android Things 通过添加支持库的方式添加了对智能设备的支持。新的Android 框架层 API 为类似于传感器、显示控制器等通用组件提供了低电平的I/O和开发库。

Android Things 系统镜像

各个开发板的系统镜像均可以点击这里下载,下面是各个开发板烧镜像教程。

WiFi 连网(树莓派 3 为例)

有线连网很简单,只需要给开发板供电并插入网线就可以了。树莓派 3 支持 HDMI 数据接口,可通过 HDMI 线连接显示器,如果连网成功的话,显示器上会显示该开发板的 IP 地址。 WiFi连网 配置操作如下:

$ adb connect 192.117.0.4 
connected to <ip-address>:5555
$ am startservice \
    -n com.google.wifisetup/.WifiSetupService \
    -a WifiSetupService.Connect \
    -e ssid <Network_SSID> \
    -e passphrase <Network_Passcode>
$ logcat -d | grep Wifi
...
V WifiWatcher: Network state changed to CONNECTED
V WifiWatcher: SSID changed: ...
I WifiConfigurator: Successfully connected to ...
$ ping 8.8.8.8
PING 8.8.8.8 (8.8.8.8) 56(84) bytes of data.
64 bytes from 8.8.8.8: icmp_seq=1 ttl=57 time=6.67 ms
64 bytes from 8.8.8.8: icmp_seq=2 ttl=57 time=55.5 ms
64 bytes from 8.8.8.8: icmp_seq=3 ttl=57 time=23.0 ms
64 bytes from 8.8.8.8: icmp_seq=4 ttl=57 time=245 ms

测试系统时间是否正确,需要注意的是时间错误可能会引起 SSL 错误,当时间错误时需要重启设备让其自动获取时间(连网状态)。

$ date

应用开发

Android Things 希望应用程序在 Manifest 文件中提供一个 "home activity" 作为系统启动时自动加载的一个主入口。 这个 Activity 必须包含一个包含 CATEGORY_DEFAULT和 IOT_LAUNCHER 的 Intent Filter 。

为了便于开发,这个 Activity 应包含CATEGORY_LAUNCHER Intent Filter,以便 AS 可以在部署或调试时将其作为默认 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>
权限申请

需要注意的是 Android Things 并不支持在运行时申请权限,因为嵌入式设备不能保证有一个 UI 来接受运行时的对话框,所以所有权限都应该在 manifest 文件中声明。

通知

Android Things 硬件设备没有系统范围的状态栏和窗口阴影,不支持通知,所以应当避免在应用中调用NotificationManager APIs。

参考文献

https://developer.android.google.cn/things/index.html
http://blog.csdn.net/wfing/article/details/56026194

上一篇下一篇

猜你喜欢

热点阅读