一句话说,Android Things就是让开发者可以使用Android开发工具开发嵌入式设备。
If you can build an app, you can build a device.
只要你会开发APP,你就能开发智能设备。
自2016年12月Google推出Android Things的Develop Preview 1,至今短短的一年多时间,已经版本迭代到2017年12月发布的Develop Preview 6.1版,Android的版本更新非常活跃,每6-8周就会有新的Release放出,是个充满活力的技术方向。
事实上,Android应用于设备已经不是一个新鲜的命题,我们自2014年已经开始了将Android应用于智能工业控制、智能消费终端中。目前市面上常见的广告机、智能门禁,以及很多餐厅、便利店的收银设备,都是基于Android系统开发的。如图1所示,Android已在智能设备中被广泛使用。
Android Things的推出,扫清了将Android Phone/Tablet系统用在智能设备中的各种弊端(通常需要嵌入很多NDK开发的接口,很多功能需要root后通过Linux命令实现),提供了更统一的接口。Android开发者也可以使用自己熟悉的开发工具,做智能硬件的开发。
Android Things的平台架构如图2所示,Android Things扩展了core Android Framework,通过Things Support Library提供了附加的API,使得开发者可以集成通常在手机等移动设备中没有的硬件。
Android Things的特性:
单一自启动APP,通常设备会只运行单一的程序,即开发者的APP会自动启动,系统APP不会呈现出来。
显示是可选的,设备可以没有屏幕,通过按钮、触摸、LED灯、语音或其他形式与用户交互。
提供了通过I/O驱动外设的接口,让开发者可以与传感器和执行器进行通讯交互,支持GPIO、PWM、I2C、SPI和UART。
用户驱动API,用户驱动继承Android Framework Services,允许APP将硬件事件注入到Framework中,使得其他APP可以使用标准的Android API访问。
物联网云,通过Google物联网云平台,开发者可以方便且安全的连接、管理数百万计遍布全球的设备,并从中获取数据。Google物联网云平台和一些其他的Google服务,提供了包括数据采集、处理分析和可视化物联网数据的完整解决方案。
Android Things的优势:
更统一的开发框架和接口
传统的单片机开发智能硬件的方式,开发工具、开发接口多而杂,不同的单片机厂商甚至型号,都有特定的开发工具,学习成本高,不统一,程序的可移植性差、可管理性差。Android Things提供更完善的开发框架,更方便好用的开发工具(而且是免费的)。
更适合Android开发者进行智能设备的创新
智能硬件通常都要实现与服务器交互、与手机交互,这些领域都是Android开发者熟悉的领域,通过Android Things开发智能设备,可以将Android开发者在移动开发方面的经验更深入的体现在智能设备开发中。传统的硬件、单片机开发者,对移动开发不熟悉,自然会在智能设备创新中落后于对移动开发了如指掌的Android开发者。
更先进的基础框架
Android Things相较于传统的设备平台,就如同Android手机与Nokia功能机的区别。尤其在有触摸屏人机交互的设备中,Android的优势明显,Android对UI线程的优先和保障机制,使得传统设备人机界面操作卡顿的问题可以很好解决。Android基于Java的面向对象开发,也使得程序更容易封装和管理。众多的Android开源资源,也可以方便的应用到Android Things中来。我们开发的Android工业设备智能操作终端,在应用中给用户提供了更好的操作体验,受到了用户的广泛好评。
更安全的物联网云
传统的物联网方案,由于设备端、服务端往往由不同的开发团队完成,设备端开发往往还停留在比较古老的开发阶段,对一些新的安全物联网协议了解较少,使得很多物联网设备,还在采用TCP协议明码传输数据,很容易被截获和篡改。而有信息安全概念和经验的服务端开发者,由于不了解硬件开发也无能为力。新闻报道过的一些智能摄像头被入侵的案例,很多与这方面有关。而Android Things彻底改变了这种状况,手机APP与服务端通讯安全方面的经验,Android开发者可以直接应用在设备开发中。很多新的物联网协议,如MQTT,都有Android的客户端实现可以方便使用。
更丰富的云服务资源
使用Android Things,有丰富的云服务资源可以使用,可以基于TensorFlow实现人工智能(如图像识别),可以通过Google Assistant获得智能服务。国内访问Google服务目前还有一些问题,不过想一些办法解决。同时,阿里、腾讯也都有一些智能服务(如图像识别、人脸识别等)通过云提供,使用Android Things也可以方便集成。
更低的入门门槛
传统的智能硬件开发,通常需要购买昂贵的开发套件,而Android Things只需要几百块钱买个开发套件接上显示器或电视机就可以玩起来。如果你手上有树莓派3,下载最新镜像烧录就可以玩了。
Android Things的劣势:
成本
对于低成本的智能小设备,Android Things可能不适合,一个能流畅运行Android Things的硬件环境,成本也要200+。
硬件控制实时性
通过Android层对硬件进行控制,实时性肯定不及运行在单片机中的主程序进程,所以直接用Android Things做一些对传感器高实时的扫描轮询,或是对电机进行伺服控制,这不是Android Things的优势。
已有熟悉的硬件开发平台
如果开发者已经有自己熟悉的硬件开发平台,有单片机开发经验,但对Android开发并不熟悉,使用Android Things就有些得不偿失。
想要了解更多关于Android Things的资料,可以访问官网。
https://developer.android.google.cn/things/get-started/index.html
我的Android Things文集中的其他文章,也将帮助你动手进行Android Things的开发实践。
Android Things的入门和学习过程,是一个动手实践的过程,如需购买硬件和开发配件套装,可以从这里了解: