如何玩转Android物联网开发,这些必须知道

内容来源:2018 年 6 月 28 日,中移物联网 Android开发高级工程师程磊在“droidcon上海2018安卓技术大会”进行《当安卓遇到物联网》演讲分享。IT 大咖说(微信id:itdakashuo)作为独家视频合作方,经主办方和讲者审阅授权发布。

阅读字数:3114 | 8分钟阅读

摘要

本文会先简要介绍物联网这一概念,接着引入平台化的物联网解决方案,最后是对Android Things的探讨。

获取嘉宾演讲视频及PPT,扫一扫下方二维码即可。

物联网

世界公认的物联网设备目前公认诞生在1982年,是一台CMU的可乐机,可以通过电脑实时监测可乐机中的可乐存量以及温度。不过当时还没有物联网这一概念,直到1999年由Kevin Ashton在宝洁公司的一次内部讲座中提出。他观点认为计算机非常善于处理信息,但是采集信息的方式过于依赖人类,而人类的精力有限且容易犯错,不善于处理这类事情,如果能让计算机自行感知世界,就能将人类解放出来做自己擅长的事情。

其实物联网设备广泛存在与我们身边,比如ATM机、监控摄像头等,不过在消费品市场方面长久以来都处于空白。个人认为主要有两方面原因,一是移动网络的发展限制,只有4G的高带宽、低延时、低功耗的特性才能满足物联网的绝大部分需求。二是智能手机出现之前众多的物联网设备没有统一的管理方式。2010年之后智能手机的普及配合移动网络的升级共同促进了物联网的发展,现阶段物联网的应用领域主要涵盖消费、企业、基础设施以及其他方面应用。

中移和物

我所在部门的业务是物联网平台,围绕该平台我们提供了设备端的多协议接入支持,完善的设备端和应用端SDK,应用的定制化开发以及数据展现和数据分析服务。

接入我们平台的客户大概可以分为三类。第一类是有自己的研发能力,能够实现设备接入和整套应用层面的开发。第二类只关注设备接入,应用程序的开发交由我们定制。第三类也是只关注设备接入,不同是他们不想要应用的定制化开发,而是想通过系统配置自动生成App产品界面。

中移和物这款产品就是为了解决第三类人员的需求,所面临的问题有两个。一是设备如何联网,二是App控制界面如何展示。

配网

上图是常见的手机连接wifi的界面,但智能设备通常来说没有这样一个交互界面。

我想到的第一个解决方案就是参考路由器让物联网设备拥有无线AP功能,然后手机连接上热点打开网页进行配置或者提供专用app。这种方案虽然可行不过应用场景存在局限,不太适用于多设备配网。

第二种配网方式是串口AT指令,这比前面的方案更加不便,从图中可以看到需要电脑或手机通过串口线连接到设备,同样只能一次给一台设备配网,假设要配网的产品是一个智能灯泡的话可想而知会有多麻烦。

目前业界主流的配网方式是第三种Smart Config,智能手机通过UDP广播的方式将wifi的参数发给设备。无线局域网是开放的网络环境,wifi芯片有两种工作模式,标准和混杂。标准模式下它会丢弃所有目标IP地址和自身不同的数据包,混杂模式下接受所有经过它的数据包。

上图是wifi芯片获取的UDP数据包的数据格式,一共有7个字段,根据协议应用层能够编辑的字段只有DAT。由于大部分无线路由器都是加密的,因此DAT字段其实是密文无法直接使用。不过Length字段会随着DAT字段的长度产生变化,这样我们就可以利用长度来携带信息。比如要发送一个length值为256的数字,只需向DAT字段中填充256字节长度的数据,代码表示如下。

由于加密的缘故实际数据长度和要发送的长度并不一致,因此在发送正式数据前要发送一份先导包,先分别发送1、2、3个字节长度的数据,再根据wifi芯片实际接收的Length长度计算出加密导致的长度差值。

除了用长度携带数据之外还可以利用UDP组播。UDP组播的地址实际上是一个范围,向该范围中任意的IP地址发送数据都能实现组播的效果,而IP中后面的3个字节可以用来携带数据。通常的做法是用第二个字节表示UDP包的顺序,后面两个字节携带实际数据,这种方式还不用考虑路由器加密的问题。如下所示。

设备控制界面

如何在同一个app中展示不同设备的界面也是一个难题,如果采用原生方式开发成本相对比较高也不好维护,每次接入一个新的设备用户都要更新一次app显然是不合理的。我们想到了两个技术方案,混合开发(HTML5+WebView)、React Native/Weex。

和物这款产品在内部迭代了两个版本,第一版的时候React Native还处于早期发展阶段,于是我们采用了混合开发方案。现在发布的版本使用的则是Weex。

上图是开发者后台的截图,设备厂商可以在这里为产品定义数据模型,定制设备控制界面,然后通过扫描二维码的方式进行预览调试。

展望

前面提到的这些其实和本次的主题关系并不是很大,接下来我们正式谈谈安卓在物联网中的应用。个人更感兴趣的是Google在2016年发布的一款物联网操作系统android things,在此之前他们还发布过一款叫Brillo的产品,不过反响不太好。Android things相比Brillo新增了Java API Framework、Google Service、应用层等,这意味着Android things支持的更多新的特性和功能。

如何构建一个Android things app

Android things的官方网站上有一个构建Android things app的教程,这里我们一起来简单看下。

第一步是新建Android Studio工程,SDK API版本要高于27,工具版本高于25.0.3。因为标准的SDK中没有Android things的API,所以要通过脚本的形式集成开发套件。

接着进行配置,从图中可以看到activity中有两个Intent-filter,第一个是安卓开发者都比较熟悉的启动界面配置,第二个声明了当前开发的应用可以作为launch存在。

第二步开始连接硬件,这里的GPIO(通用输入输出),可以简单的理解成笔记本上的扩展坞

第三步编写与设备交互的代码,引入核心类PeripheraManager(外设管理器)。

上面三张图展示的是监听按钮事件的全部代码。先通过PeripheraManager的OpenGpio方法传入按钮的编号的到按钮的Gpio对象,配置该对象为输入设备,接着设置事件类型,注册监听器,然后在回调方法中打印一条日志表明按钮被按下,最后就是释放资源。

这样的例子对于有过安卓开发经验的人来说并没有什么看不懂的地方,可以说Android things的出现一定程度上降低了物联网设备的开发门槛。

如果说一台手机搭载Android或iOS后就能被称为智能手机,那么普通设备搭载Android things后也就可以被称为智能设备。不过现阶段的物联网设备管理还过于依赖于人类,好消息是Android things原生支持TensorFlow。

(需要指出的是由于个人并没有实际的应用Android things进行过开发,所以只能通过官方案例和大家一起来展望下)

以上为今天的分享内容,谢谢大家!

IT大咖说 | 关于版权

本文由“IT大咖说(ID:itdakashuo)”原创,转载时请注明作者、出处及微信公众号。投稿、约稿、转载请加微信:ITDKS10(备注:投稿),茉莉小姐姐会及时与您联系!

感谢您对IT大咖说的热心支持!

原文发布于微信公众号 - IT大咖说(itdakashuo)

原文发表时间:2018-08-20

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏华章科技

如何入门 Python 爬虫?

之前转载过两篇关于“爬虫”的文章,小编在后台收到不少相关的留言,希望能够继续深入,所以有了下面这篇文章。

1282
来自专栏CSDN技术头条

P语言: 为异步、容错和不确定性而生的编程语言

译者注:P语言是一款由微软、加州大学伯克利分校和伦敦帝国学院共同研发完成的编程语言,它在处理并发、故障切换等方面具有很强的优势。本文介绍了P语言的起源、特性及其...

2206
来自专栏IT米粉

Apple 系统正式版要发布了,有你期待的功能吗?

Apple操作系统每年例行升级时间到,每年都说的那么牛B,不管是IOS还是Mac os功能已经曝光的差不多了,你需要的功能有出现吗? 每年对系统的升级,其实还是...

3176
来自专栏花叔的专栏

非技术同学该怎么解读小程序官方API

部分非技术的同学,可能对小程序提供的开发能力还是比较陌生,好多产品或者品牌同学会问小程序能做什么样的功能,楼主今天尝试用简单的话来重新阐述一下,希望对非技术的同...

3668
来自专栏SDNLAB

聚焦Open vSwitch性能大提速

Open vSwitch(OVS)项目的开发人员对其性能稍加改进,正如他们所说已经将其提升到了惊人的速度。 这项工作已经持续了一段时间,但具体细节直到今天才在N...

3536
来自专栏Grace development

浅谈架构是为了什么 (下)

从现在开始,假设我们自己是一个创业的小团队。没资金没人脉,靠技术打天下。现在要开发一套电商系统。开始自己的表演。

982
来自专栏java一日一条

源代码的寿命

看看你现在日常工作中的代码。已经运行了多久了?代码有多老了?有六个月?一年?可能都有五年这么久了吧?十年?二十年呢?!这样的代码有多老了?不到10%?还是一半?...

1001
来自专栏CSDN技术头条

【BDTC 2015】数据库分论坛:GBase 8t、PosgreSQL-X2核心技术解析

2015年12月10-12日,由中国计算机学会(CCF)主办,CCF大数据专家委员会承办,中国科学院计算技术研究所、北京中科天玑科技有限公司与CSDN共同协办,...

2426
来自专栏花叔的专栏

“公众号数据助手”小程序真的出现了

额,老早之前花叔就想做一个公众号管理相关的小程序,然而微信今天就推出了一个类似的小程序,好了,我不用做了。 回归正题,介绍一下这个小程序吧,通过长按以下二维码能...

44711
来自专栏魏艾斯博客www.vpsss.net

腾讯云年中大促-热销云产品年付 3 折起

1983

扫码关注云+社区

领取腾讯云代金券