androidthings things 硬件怎么买

内容字号:
段落设置:
字体设置:
Android Things入门介绍
上周,Google发布了Android Things,及时地推出了这一应用于硬件设备的开发,作为一名Android开发者,当然非常愿意拥抱这一开发系统。不过受硬件设备限制,本人并没有自己应用于硬件设备的开发,只是看了下官方文档和官方demo,写了一点点总结(其实更多是翻译),帮助大家了解Android Things。
Android Things开发与传统Android移动开发非常相似,涉及使用Android Fragment和Tools开发app。所有你需要的是支持Android Things系统和所需外围的硬件设备。
快速了解支持的开发板和设置初始化开发环境:
1.熟悉Android开发
如果您从未开发过Android移动应用,请先建立您的第一个Android移动应用。Android移动开发的基本概念和一般工作流程可以转移到Android Things开发。 如果您没有移动设备,Android SDK附带了一个软件模拟器。
请参阅&&中的构建您的第一个应用程序。
2.理解Android Things平台
由于Android Things与Android移动开发相比有一些差异,请阅读&&以了解您需要了解的主要概念。
3.获取硬件
在开始之前,您需要一个支持的开发板(这是硬件方面的吧,我还不太理解)。你可以在&&页面上比较可用的电路板。
4.Flash Android Things
选择板后,按照特定板的&硬件入门指南&中的说明进行操作。目前支持的硬件设备有(看起来都是国外设备):
Intel Edison
Raspberry Pi 3
5.设置开发环境
下载并按照最新版Android Studio
将项目模板示例项目导入Android Studio。
连接电路板并验证您是否可以通过adb访问设备:
$ adb devices
List of devices attached
将示例项目部署到您的开发板,并验证您可以使用logcat查看活动消息。
6.构建第一个设备
完成了环境设置,请参阅&&,开始Android Things开发.
7.更多案例
下面是官方提供的一些案例,在里面可以找到代码片段和教程,帮助我们构建嵌入式应用程序和集成硬件外设。主要有:
Simple PIO。 运行练习PIO API的基本代码。每个示例都是可以独立运行的Android模块。
简单UI 。基本用户界面,通过显示屏上的交互式开关小部件表示电路板上的每个GPIO。
按钮。使用外设驱动程序库中的按钮输入驱动程序监听GPIO状态更改并生成Android按键事件。
UART环回 。模拟所选UART端口的环回适配器。回送所有数据回到同一端口。
门铃。智能门铃,可捕获摄像机图像,对其进行分析,然后使用Google Cloud Platform和Firebase将其发送到配套应用。
气象站 。集成多个外围传感器,分析和显示当前天气信息。数据可以选择推送到Google云端平台进行进一步分析。
这些案例可以到GitHub下载案例代码:&
分享给小伙伴们:
本类最热新闻
48小时最热
01020304050607089101112
CopyRight © 2015- , All Rights Reserved.相比移动领域,Android能否也为物联网打开一片新天地
我与Android Things的24小时我正在参与一个基于Android的物联网商用项目,它运行在Raspberry Pi 3上。最近发生了一件很有意思的事情,Google发布了的第一个预览版,他们的SDK主要针对3个开发板(Single Board Computers),Pi 3、Intel的Edison和NXP Pico。在Pi和Android之间无法建立端口连接,我们只能忍受自制固件的各种问题,这种痛苦真的是无以言表。其中一个最大的问题是它们不支持触摸屏,甚至连官方出售的版本也不行。我知道Android正在向Pi靠拢,而之前Google向AOSP项目提交的一个更是让每个人为之动容。号,Google发布了“Android Things”,外加一个可下载的SDK。于是我开始着手研究,并在门上挂上“勿扰”的牌子……关于Android Things的疑问在经历了大量Android工作和一些Pi项目之后(包括现在的这个项目),对于Android和Pi,我不禁有很多疑问。后面我会逐个说明,不过第一个最大的疑问现在已经得到了回答——Android Studio完全支持Pi,Pi正式成为一个支持ADB连接的设备。是的!Android Studio那些超级好用的强大特性最终支持了真实的物联网硬件,我们可以使用布局预览、调试系统、源代码检查器、自动化测试等等。我为此感到很激动。直到现在,我的很多Pi板载程序都是使用Python来开发,使用运行在Pi上面的编辑器(MC)来进行SSH连接。这种方式是可行的,而且毋庸置疑,Pi和Python大神们会提出更好的方式,不过这仍然会让人感觉回到了80年代的软件开发时代。我的项目需要为控制Pi的手持设备编写Android程序,如果使用之前的方式等于往伤口上洒盐,而我后来使用Android Studio来开发“真正”的Android程序,然后使用SSH来完全其它工作,一直到现在。所有的例子都是有关上述的3个开发板,Pi 3是其中一个。通过Build.DEVICE常量可以在运行时决定是哪一种设备,所以你会看到很多类似这样的代码:public&static&String&getGPIOForButton()&{
&&&&&switch&(Build.DEVICE)&{
&&&&&&&&&case&DEVICE_EDISON_ARDUINO:
&&&&&&&&&&&&&return&&IO12&;
&&&&&&&&&case&DEVICE_EDISON:
&&&&&&&&&&&&&return&&GP44&;
&&&&&&&&&case&DEVICE_RPI3:
&&&&&&&&&&&&&return&&BCM21&;
&&&&&&&&&case&DEVICE_NXP:
&&&&&&&&&&&&&return&&GPIO4_IO20&;
&&&&&&&&&default:
&&&&&&&&&&&&&throw&new&IllegalStateException(“Unknown&Build.DEVICE&“&+&Build.DEVICE);
&}这里对GPIO的处理很有意思,因为我只对Pi比较熟悉,所以我只能假设其它开发板也是以这种方式工作的。可以在这些地方定义输入和输出,并作为到外部世界的主要接口。Pi所使用的Linux发行版完全支持Python的读写操作,但对于Android来说,你必须使用NDK来编写C++驱动,然后通过JNI与Java进行交互。这样做不仅增加了难度,还让构建过程变得更加复杂。Pi设计了两个针脚的I2C接口,分别是时钟和数据,需要额外的工作来处理它们。I2C是一个强大的可寻址总线系统,它可以把多个针脚的数据串行化到一个针脚上面。让我们感到惊喜的是,我们现在可以直接在Android Things里完成这些工作。你只需要调用read()或write()方法来访问GPIO针脚,而I2C的操作也很简单:public&class&HomeActivity&extends&Activity&{
&&&&//&I2C&Device&Name
&&&&private&static&final&String&I2C_DEVICE_NAME&=&...;
&&&&//&I2C&Slave&Address
&&&&private&static&final&int&I2C_ADDRESS&=&...;
&&&&private&I2cDevice&mD
&&&&@Override
&&&&protected&void&onCreate(Bundle&savedInstanceState)&{
&&&&&&&&super.onCreate(savedInstanceState);
&&&&&&&&//&Attempt&to&access&the&I2C&device
&&&&&&&&try&{
&&&&&&&&&&&&PeripheralManagerService&manager&=&new&PeripheralManagerService();
&&&&&&&&&&&&mDevice&=&manager.openI2cDevice(I2C_DEVICE_NAME,&I2C_ADDRESS)
&&&&&&&&}&catch&(IOException&e)&{
&&&&&&&&&&&&Log.w(TAG,&&Unable&to&access&I2C&device&,&e);
&&&&@Override
&&&&protected&void&onDestroy()&{
&&&&&&&&super.onDestroy();
&&&&&&&&if&(mDevice&!=&null)&{
&&&&&&&&&&&&try&{
&&&&&&&&&&&&&&&&mDevice.close();
&&&&&&&&&&&&&&&&mDevice&=&
&&&&&&&&&&&&}&catch&(IOException&e)&{
&&&&&&&&&&&&&&&&Log.w(TAG,&&Unable&to&close&I2C&device&,&e);
&&&&&&&&&&&&}
}Android Things是基于哪个Android版本?应该是Android 7.0,我们因此可以使用完整的Material Design UI、优化工具、安全增强以及之前版本的所有特性,真是太棒了!那么问题来了:未来的平台更新将以什么方式放出?我们需要单独对它们进行管理吗?不要忘了,这些设备不会一直在线,我们也无法奢望总是有移动网络或WiFi可用,哪怕是不稳定的无线网络。我所担心的另一个问题是,从名字上看,Android Things只是Android的一个衍生产物,它的诞生只是为了振奋Arduino市场,而并非为了做出一个强大的操作系统。不过它所给出的立马打消了这个疑虑,示例里有些地方甚至使用SVG作为resource(这是Android最近才有的),而不是使用传统的位图,虽然使用传统的位图也很方便。既然Android Things是基于Android的,那么Android的一些问题也会不可避免地出现在Android Things上,比如权限问题。Android Things是为了固定的硬件设备而设计的,一旦构建完成,用户一般不会在上面安装应用,所以用户不会被询问权限问题,因为设备上可能连UI都没有!所以,在应用被安装到设备上时,它会被授予所有的权限。一般情况下,这些设备都是单应用设备,在设备启动时,只有一个应用会在上面运行。Brillo发生了什么?Brillo是前Google物联网操作系统的代号,看起来应该是Android Things之前的代号。事实上,你还是能够看到很多地方在使用Brillo这个名字,特别是GitHub上Android Things示例代码里的源代码文件夹名称。不过这样的情况会越来越少,因为一切正在向新的王者看齐!UI指南?Google发行了大量关于Android智能手机和平台应用的指南,比如如何在屏幕上布局按钮等等。当然,如果能够遵循这些最佳实践是再好不过了,不过现在我们再也不能像以前那样。默认情况下,屏幕上什么也没有,应用开发者需要自己管理所有的组件。包括顶部的状态栏、底层的导航栏以及其它所有的组件。多年来,Google告诉Android应用开发者不要自己去渲染一个返回按钮,因为平台会为我们提供一个这样的按钮,不过现在连这个按钮也没有了,因为!关于Google将会提供的服务支持,我们将作何期待?我们可以有很多期待,但不包括所有事情。Android Things的首个预览版不支持蓝牙,也不支持NFC,而对于物联网来说,蓝牙和NFC是非常重要的。而开发板就支持这些功能,所以我认为在不久的将来Android Things也会支持它们。因为没有通知栏,所以也不会有通知。地图也不会有。没有默认的软键盘,需要自己安装一个。因为没有应用商店,所以必须通过ADB安装应用,还要做很多其它操作。在使用Android Things进行开发时,我尝试着把为Pi开发的APK安装到普通的设备上,但没有成功。有个错误被抛了出来:“com.google.android.things”库不存在,说明为Android Things设备开发的应用无法安装到其它设备上。这个看起来是合理的,因为只有Android Things设备需要这些东西,不过这也会有点局限,因为不仅仅智能手机或平台没有这些库,其它的模拟器也没有。也就是说,你只能在Android Things物理设备上运行和测试Android Things应用……直到Google在它的上回答了我所提出的疑问,并提供了一个变通方案。关于Android Things生态系统的演化,我们将做何期待?我期待能够看到更多的基于传统Linux服务器的应用被移植到Android Things平台上,虽然这些应用对于智能手机和平板来说毫无意义。例如,Web服务器。现在已经有一些这样的服务器,不过还没有像Apache或Nginx这样的重型服务器。物联网设备可能不会有本地的UI,不过可以通过浏览器来管理它们,这样做是可行的,所以需要一种方式来展现Web面板。对于那些著名的通信应用来说,它们需要麦克风和扬声器,从理论上说,可以支持任何一款视频通话应用,比如Due、Skype、Facebook等等。事态将会发展到何种程度都只是我们的猜测。是否会出现应用商店?是否会出现广告?我们能够避免被黑客控制?从消费者的角度来看,物联网设备就是一些具有触摸屏的联网设备,而且每个人都习惯了智能手机的工作方式。我期待能够看到硬件的飞速发展,特别是开发板设备,而且能够处在一个较低的成本水平。Raspberry Pi Zero只要5美元,这个价格低得让人不可思议,不过它那可怜的CPU和内存甚至都无法保证能够运行Android Things。它们什么时候才能运行Android Things?很显然,很多开发板产商把目标瞄准了Android Things,而且随着规模化生产,一些外围设备,比如触摸屏,很可能只需要2美元左右。不过,我不认为我们会如飞一般跳跃。如果我们把Android Things看成一个无所不包的物联网操作系统,那么知道一些Android架构方面的知识有助于我们了解这个系统。它仍然使用Java语言开发,Java因为它的垃圾回收停顿时间饱受诟病。不过这只是其中的一个方面。一个真正的实时操作系统对时效性具有非常严格的要求,它不能是一个关键性任务系统。想想那些医疗应用、安全监视器、工业控制器等。从理论上说,如果有必要,Android系统上的Activity或服务随时会被停掉。对于手机来说,用户可以重启应用,清除其它应用,或者重启设备。拥有一个心跳监测器是很重要的。如果前台的Activity或服务正在监听一个GPIO针脚,而信号得不到及时的处理,就会发生错误。Android需要做一些很基础的修改来支持心跳监测,不过到目前为止还没有听说有这方面的计划。过去的24小时那么,让我们回到我的项目上来。我想我可以把之前所做的工作尽可能地移植过来,如果不可避免地碰到一些问题,我可以到G+开发社区上寻求帮助。不过除了无法在非Android Things设备上运行应用这个问题以外,还没有碰到其它问题。目前一切运行良好!这个项目还用了一些奇怪的东西,比如自定义字体和一些精准的计时器,这些东西在Android Studio里都得到了完美的支持。我这次给Google打满分。之后我会做一些实实在在的原型,而不只是视频或截图。蓝图物联网操作系统目前看起来非常的碎片化。这个领域目前还没有出现市场领导者,虽然我们经常听到一些天花乱坠的大肆宣传,但这些还为时过早。Google能否在物联网领域也能做得像他们在移动领域所做的那样?要知道,他们已经占据了90%的移动市场。我相信他们会的。而如果这个成为现实,那么Android Things的出现就是一个起点。让我们想想开放软件和私有软件之间的战争,比如Apple和Google。Apple从来没有完整开放过他们的软件,而Google的开源软件已经为很多人带来了好处。现在这个问题又出现了,要让Apple开发出一个免费的物联网系统,就好比让它发布一款免费的iPhone一样难。物联网操作系统的游戏已经开始了,而竞争对手们甚至都还没有做好准备……Android Things的现在已开放下载。本文已获得原作者翻译授权,查看英文原文:
评论内容:

我要回帖

更多关于 android things 开发 的文章

 

随机推荐