Android Things(一)-简介篇

首先介绍一下 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
  • Android Things 可以依靠现有的生态资源,如开发工具、Android SDK 和庞大的开发者社区等
  • Android Things 将为物联网设备提供新的APIs,如低电平的I/O接口和为通用组件提供了库支持,如温度显示器、显示控制器等
  • 利用 Android OS 定期的更新机制保证其自身的安全性
Rapid prototypes to real products
  • 一站式的硬件解决方案:Google认证的开发板上有系统芯片、RAM、无线模块等使得开发人员能够快速上手
  • 低门槛:开发者开发应用时可以快速的构建产品原型,而不用考虑内核、固件和开发者本身
  • 规模化产品开发:Android Things 支持的开发板已经是商业级别的,你可以在开发板上根据需求制作自己的产品
The power of Google at your fingertips
  • 支持广泛的 Google 服务,如 Google Play services 和 Weave 协议
  • Google 提供镜像、更新和补丁等,使得开发者能够把精力集中在创造更加优秀的产品
  • 支持通过 OTA(On The Air,无线下载)推送谷歌提供的操作系统更新和应用更新

硬件平台

既然是一款操作系统,怎么能少的了硬件呢。目前 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连网 配置操作如下:

  • 先有线连网,并记录下开发版的 IP 地址(不要拔掉网线)
  • 假设开发板的 IP 地址是 192.117.0.4,我们可通过 adb 连接此 IP 地址 ,在命令行输入
$ adb connect 192.117.0.4 
  • 如果连接成功,则会显示(ip-address即为你的网络地址):
connected to <ip-address>:5555
  • adb 连接成功以后,便可以真正配置 WiFi了,其中 Network_SSID 代表要连接到 WiFi 网络的名称,Network_Passcode 代表该网络的密码,如果网络不需要密码的话可以移除 passphrase 这一行
$ am startservice \
    -n com.google.wifisetup/.WifiSetupService \
    -a WifiSetupService.Connect \
    -e ssid <Network_SSID> \
    -e passphrase <Network_Passcode>
  • 通过 logcat 测试当前网络是否连接成功,
$ logcat -d | grep Wifi
...
V WifiWatcher: Network state changed to CONNECTED
V WifiWatcher: SSID changed: ...
I WifiConfigurator: Successfully connected to ...
  • 测试能否访问远程的 IP 地址:
$ 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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,088评论 5 459
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 81,715评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 141,361评论 0 319
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,099评论 1 263
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 60,987评论 4 355
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,063评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,486评论 3 381
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,175评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,440评论 1 290
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,518评论 2 309
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,305评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,190评论 3 312
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,550评论 3 298
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,880评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,152评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,451评论 2 341
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,637评论 2 335

推荐阅读更多精彩内容