1.3 Android Things概述
Android Things是谷歌公司为开发IoT项目而开发的一套全新的操作系统。Android Things帮助我们使用较可信的平台并且能使用Android开发技能完成专业的IoT项目。没错,是Android,你完全可以把Android Things看作Android系统的“修订”版本,可以使用已有的Android知识来实现一个个智能的IoT项目。该操作系统的巨大前景在于Android开发人员可以利用它平滑地进入IoT领域,并可以在几天之内开发、构建完成自己的IoT项目。在深入了解Android Things系统之前,先了解一下它的基本架构。Android Things系统的层次结构如图1-1所示。
图1-1 Android Things系统的层次结构
Android Things系统的层次结构与Android操作系统略有不同,可以发现Android Things系统整体上更紧凑,主要体现在Android Things的应用程序底层的层数更少,并且其应用层比普通的Android应用程序更接近驱动程序和外围设备。即使Android Things基于Android,Android Things中也有一些Android并不支持的API。下面简单介绍它们的相似之处和不同之处。
可以发现,在Android中广泛使用的内容提供者(content provider)并不在Android Things SDK中。因此,在开发Android Things应用程序时应该格外注意这一点。要了解有关这些不支持的功能(如内容提供者)的更多信息,可以参阅Android Things SDK的官方网站。
此外,与一般的Android应用程序一样,Android Things应用程序可以拥有用户界面(User Interface,UI)。然而,在Android Things中,应用程序也可以没有UI,这完全取决于要开发何种类型的应用程序。用户完全可以像操作Android设备一样与UI交互,并在Android Things应用中响应相应的事件。我们之后也会知道,Android Things中的UI开发方式与Android中的开发方式完全相同。这一点值得关注,因为我们可以重用一些Android知识来轻松快速地开发一套IoT应用程序的UI。
值得关注的是,Android Things完美地支持谷歌服务。几乎所有由谷歌公司实现的云服务都可以应用在Android Things中,但也有少数例外情况。Android Things不支持严格应用在移动手机中的谷歌服务及需要用户输入或身份验证的服务。不要忘了Android Things应用程序的用户界面可有可无。要获得Android Things中提供的谷歌服务的详细列表,请参阅Android Things官网。
权限的管理在Android开发中有非常重要的作用。读者可以假想Android应用程序其实运行在一个黑盒中,它对外部系统中资源的访问权限有限。当应用程序需要访问黑盒外的特定资源时,它必须申请相应的权限。在开发Android应用程序时,可以在Manifest.xml文件中声明所需要的权限。Android Things仍然使用这种方式,并且在安装时就可以授予应用程序申请的所有权限。Android 6(API 23)引入了一种申请权限的新方法,即应用程序不仅可以在安装时(使用Manifest.xml文件)申请权限,而且可以在运行时动态地申请权限,然而,Android Things暂不支持这种方式,因此只能在Manifest文件中申请所有的权限。
最后要注意的是通知(notification)这个概念。Android Things的系统UI并不支持通知状态栏,因此我们无法触发来自Android Things应用的通知。
简单来说,我们应该了解,与UI相关的所有服务或依托UI来完成任务的所有服务都不一定在Android Things中有效。