Android Things新版本发布了,DP7中你需要知道的

昨天(2018.3.7),Google发布了Android Things的新版本,Developer Preview 7版本。

Developer Preview 7版本

Developer Preview 7
Date: March 2018 
Build Number: OIM1.180123.019
Play Services: 11.8.0

新版本同样适用于NXP i.MX7D、NXP i.MX6UL和Raspberry Pi 3开发板。

New in Preview 7

API changes

The following structural changes have been made to the Android Things API:

Consistent API naming. This release renames many of the existing Android Things API classes to provide a more consistent developer experience across the entire surface. See the updated API reference to review how package and class names have changed.

Better testability of Android Things apps. The Peripheral I/O API now exposes interfaces instead of abstract classes, allowing local unit tests to replace these objects with mocks and stubs more easily.

Warning: These introduce breaking changes from previous versions of the Android Things support library. To avoid throwing NoSuchMethodErrorand NoClassDefFoundError in your app, be sure to review the updated API reference and update your code to target the 0.7-devpreview version of the support library.

在这个版本中,有些Android Things的API的名称做了更改,因此原来在DP6.1版中程序,需要相应做一些修改。同时,Peripheral I/O API,用interface替代了abstract class,这样让单元测试时用mock和stub替代这些对象更加方便。

注意:因为这些改变,原来的APP可能会产生NoSuchMethodError和NoClassDefFoundError,这就需要对照API reference把代码升级到可以适配0.7-devpreview。

Note: All apps must be updated to use the 0.7-devpreview version of the Android Things support library. Previous versions are not compatible with Developer Preview 7.

在DP7环境下运行的APP,都需要使用0.7-devpreview版本的Android Things support library。如果在build.gradle中,你引用的是指定版本的androidthings,那么你需要改成0.7版本,如果如下图所示,你引用的是com.google.android.things.androidthings:+,那么就会自动下载引用最新的0.7版本了。

build.gradle中引用 Android Things support library

API中有一个显著改变是引用PIO的PeripheralManagerService被删除了,取而代之的是PeripheralManager,使用方法也从new一个service对象,更改成了通过PeripheralManager.getInstance()获取单例。

PeripheralManagerService已被删除
使用 PeripheralManager

注意: PeripheralManager是几乎每个Android Things APP都需要修改的!

官网Samples的代码,Github上已经升级为新版本了,我分享的一些案例代码,也做了升级,已下载的朋友可以更新一下代码。

官网Samples Github:https://github.com/androidthings

我分享的案例代码:https://github.com/sysolve

另外,我在树莓派3B中进行了测试,新版本的屏幕分辨率可以支持1920*1080了,原来DP6.1版本只能支持1280*720。

Improved camera performance

摄像头的拍摄分辨率也有了提升,原来在树莓派中只能支持640*480,现在用我手上的树莓派摄像头实测,dumpFormatInfo显示可以支持2560*1440的拍摄分辨率。

dumpFormatInfo显示摄像头支持的分辨率

按照官网说明:

Apps can now capture images from the device camera hardware at resolutions up to 3280x2464 for Raspberry Pi 3 and 1280x720 for NXP i.MX7D.

其他一些升级说明,官网原文引用如下:

MIDI API support

Use the MidiManager API to build a virtual MIDI device in your app or interface with external MIDI controllers. Try it out today with the existing AndroidMidiScope and MidiSynth sample apps.

Bluetooth APIs

In addition to the existing BluetoothProfileManager used by apps to configure the active profiles on the device, the new BluetoothConfigManagerenables control of the Bluetooth device class as well. Apps can also use the BluetoothConnectionManager API to take control of the pairing and connection process between Android Things and a remote device.

See the new Bluetooth API guide for more details.

Update manager channels

The Android Things Console now supports deploying releases to groups of devices for development or beta testing by way of update channels. Devices can subscribe to a Canary, Development, Beta, or Stable channel via UpdateManager.

See the updated Device Updates guide and console updates guide for more details.

Resolved Issues

Screen brightness changes animate slowly.

HDMI overscan is disabled, causing UI not to extend to the edge of some displays.

Factory data reset does not fully remove installed apps.

GPIO pins cannot be used as an output if they were previously enabled as an input with an edge trigger enabled since the last reboot.


新版本相对之前版本,功能新增已不大,主要是修正错误和优化代码架构,可以推测,离正式Release应该不远了。


Android Things入门

如果你还不了解Android Things,以下是一个摘要汇编,帮助Android Things初学者梳理入门学习的知识和资源、所需的硬件和配件,循序渐进的了解Android Things,并开始动手实践之旅。

了解什么是Android Things

一句话说,Android Things就是让开发者可以使用Android开发工具开发嵌入式设备。

If you can build an app, you can build a device. 

只要你会开发APP,你就能开发智能设备。

Build connected devices for a wide variety of consumer, retail, and industrial applications.

为各种各样的消费者、零售和工业应用构建连接的设备。

图片来自官网首页

如官网视频中Dave Smith的介绍,你可以使用你熟悉的Android开发工具和Google产品进行智能产品的开发。

图片来自官网介绍视频

推荐阅读

我的文章:《Android Things是什么》,你将从中了解Android的应用场景、特性、优势和劣势。

GDE王玉成的专题文章:《Android Things专题 1.前世今生》,你将从中了解什么是物联网,Android Things产生的背景和过程。

官网:《Android Things Overview

了解用Android Things能做什么

你可能已经对Android Things跃跃欲试了,想要了解我到底能用Android Things能做什么。

推荐阅读

我的文章:《Android Things创客DIY第一课-用Android Things展示你的智能设备创意-基础篇》,你将从中了解当你有一个智能设备创意时,你要如何去表达和展示。

GDE王玉成的专题文章:《Android Things在 #io17》,你将从中看到在2017年的Google IO大会上展示的一些Android Things应用。

GDE王玉成的专题文章:《Android Things 专题6 完整的栗子:运用TensorFlow解析图像》,你将从中看到结合TensorFlow,Android Things可以非常方便的做好玩的人工智能图像识别。

http://hackster.io上的Android Things项目展示:https://www.hackster.io/google/products/android-things,从这里你将看到很多Android Things做的有趣的东西,大部分都是老外做的。

如何开始我的Android Things之旅

至此,你一定已经想马上动手,自己尝试Android Things了。这时候你需要有一块运行Android Things系统的开发板。

Android Things开发板

很多朋友已经在去年的GDD上,或是Google和引力空间组织的Android Things沙龙上拿到了NXP i.MX7D Pico Pro Maker Kit,也就是上图中的第一款。

如果没有拿到NXP的开发板,那么购买上图中最后一个——Raspberry Pi树莓派是性价比极高的选择,从硬件性能指标来看,树莓派3也优于其他几款。

Android Things的开发不同于手机、平板软件的开发,你需要动手去控制硬件、连接一些指示灯、按钮、传感器、执行机构等等,所以只有一个开发板是不够的。官网的案例中,就需要用到很多电子元件。

官网案例中通过面包板连接电子元件

为了方便开发者学习Android Things开发,我们将Android Things官网Samples开发案例中所需的配件进行了整理。精选优品并搭配测试,提供了入门基础配件套装。

你可以从这里购买配件套装和树莓派:

淘宝:https://sysolve.taobao.com

微店:https://weidian.com/?userid=954338999

更详细的开发板选型和对比资料可以阅读:

我的文章《Android Things硬件

GDE王玉成的专题文章:《Android Things专题2 硬件介绍

拿到开发板后,需要把Android Things系统烧录进开发板,根据你手上的开发板,你可以阅读:

Android Things入门防坑必读-树莓派硬件和系统下载安装篇

Android Things在NXP Pico i.MX7D上安装运行

Android Things开始动手

当你已有了Android Things开发板和一些必要的配件,你就可以开始动手玩Android Things了。以下课程将帮助你一步步开展你的动手实践之旅:

Android Things创客DIY第一课-用Android Things展示你的智能设备创意-基础篇

Android Things创客DIY第二课-Android Things入门配件包开发案例教程-报警灯

Android Things创客DIY第三课-Android Things入门配件包开发案例教程-数码管显示

Android Things创客DIY第四课-Android Things入门配件包开发案例教程-气象站

Android Things创客DIY第五课-硬件开发案例教程-PWM调色-触摸开关-数码管显示-OLED显示

Android Things创客DIY第六课-Android Things入门配件包开发案例教程-4位数码管显示

第四课和第五课中用到的温度和气压传感器、OLED模块,都是I2C接口的,I2C是一种芯片间的通讯协议,案例中我们只介绍了封装后的模块驱动的使用,并没有介绍具体的I2C通讯过程,感兴趣的朋友可以结合源代码和以下文章做深入了解:

GDE王玉成的专题文章:《Android Things专题5 I2C


欢迎关注我的简书上的Android Things文集,一起交流探讨新一代物联网技术。

李雷鸣

上一篇:NXP Pico i.MX7D上安装Android Things系统疑难杂症汇总


下一篇:阿里YunOS总裁张春晖:云芯片将成为IOT的基础