构建您的第一个 ReconOS 应用
本文将引导您完成开发应用所需的步骤,包括下载所需的工具,以及首次在 Recon Jet Pro 上运行该应用。
获取新的 Intel® IoT Developer Kit,这是一个完整的硬件和软件解决方案,使开发人员能够利用 Intel® Galileo 和 Intel® Edison 主板创建令人兴奋的新解决方案。请访问 Intel® 物联网开发者中心。
ReconOS* 为 Jet Pro* 提供了一个强大的操作系统。本文将引导您完成开发应用所需的步骤,包括下载所需的工具,以及首次在 Recon Jet Pro 上运行该应用。本文将简要概述开发 ReconOS* 应用所需的资源,ReconOS* 是一个与 Android API 16 级别兼容的强大平台。一旦您熟悉了我们的参考应用和 Recon SDK UI 组件,您就可以自信地创建自己的 Jet Pro 应用。
Jet Pro* 概述
为 Jet Pro* 开发应用与为 Android 智能手机开发应用类似。但是,您必须了解 Jet Pro* 的独特功能和限制。
- 控件: Jet Pro 没有触摸屏。相反,该设备通过一个光学触摸板(在软件中映射到 方向键)以及两个硬件按钮(选择和返回/电源)进行操作。有关实现这些控件的最佳实践,请参阅 Recon 的 设计指南 中的“理解 Jet 的控件”部分。
- 显示: 428x240 微型 LCD。请注意,显示屏不支持旋转。此外,为了获得最佳的可读性和电池寿命,我们建议使用黑色背景上的浅色文本和浅色图形。有关更多详细信息,请参阅 Recon 的 设计指南 中的“样式和最佳实践”部分。
- 电池: Jet Pro 的电池续航时间应在 2 到 5 小时之间。确切的续航时间取决于使用情况。
- 网络: 蓝牙*、Wi-Fi* 和 ANT+*。Jet Pro 可以通过 Wi-Fi 或通过使用 Recon SDK 的 Web API 组件通过蓝牙连接的智能手机来访问互联网。
- 音频: Jet Pro 配备了一个单声道扬声器,位于设备右侧,朝向用户的耳朵。
开发您的第一个 ReconOS* 应用
这些说明将教您如何使用 Recon SDK 构建您的第一个应用程序。您将学习如何设置开发环境并在 Android Studio 中创建新项目。您还将学习如何将 Recon SDK 添加到您的项目中并访问其一些功能。接下来,您将完成构建一个简单应用的步骤。
设置你的环境
在开始开发应用程序之前,您必须设置好您的环境;以下部分将指导您完成此过程。
安装 Android Studio
在开始开发应用程序之前,您应该下载并安装 Android Studio。这些教程的编写基于您将使用此软件的预期。
打开 Android SDK 管理器
- 如果这是您第一次打开 Android Studio,请在欢迎屏幕上点击配置,然后选择SDK 管理器。
- 如果您已经有一个打开的项目,请从工具菜单中选择Android,然后点击SDK 管理器。最后,选择启动独立 SDK 管理器。
安装更新和 API-16
- 要仅安装所需文件,请点击蓝色的“全部取消选择”链接,然后点击蓝色的“更新”链接。(暂时不要点击“安装 x 个软件包…”按钮。)
- 展开 Android 4.1.2 (API 16),然后选择SDK Platform和Sources for Android SDK,然后点击安装 x 个软件包。
- 查看许可协议,点击接受许可单选按钮,然后点击安装按钮。
安装正确的 ADB 驱动程序
您应该使用 此处提供的 ADB 驱动程序,而不是 Android SDK 提供的 ADB 驱动程序。要安装此驱动程序,请按照以下步骤操作:
- 在终端(OS X*)、shell(Linux*)或命令提示符(Windows*)窗口中输入
adb kill-server
以终止任何正在运行的 adb 服务器进程。 - 在 OS X 或 Linux 中,在终端或 shell 窗口中输入
which adb
。 - 用 此处提供的 文件替换现有的驱动程序文件。在 Windows 中,该文件应位于以下位置之一:
- C:\Program Files (x86)\Android\android-sdk\platform-tools\
- C:\Users\<yourName>\AppData\Local\Android\sdk\platform-tools\
- 在您的 Recon Jet Pro 上,导航到“设置”>“高级”,并确保启用了“USB 调试”。
- 将您的 Recon Jet Pro 连接到您的计算机。
- 在您的终端、shell 或命令提示符窗口中输入 adb devices,并确保您的 Recon 设备已被识别。
注意:如果您使用的是 Windows,并且看到以下错误,请将 adb 文件夹添加到 Windows 环境变量 PATH 中。
'adb' is not recognized as an internal or external command, operable program or batch file
将 adb 文件夹添加到 Windows PATH 环境变量
- 按Windows键打开开始菜单或开始屏幕,然后键入环境变量开始搜索。在搜索结果中,点击编辑账户的环境变量。
- 在“环境变量”控制面板中,滚动“系统变量”列表,直到找到名为Path的变量。选择该变量,然后按编辑…按钮。
- 将包含 adb.exe 的文件夹的路径添加到“变量值”字段。该路径应为以下之一:
- 'C:\Program Files (x86)\Android\android-sdk\platform-tools\'
- 'C:\Users\<yourName>\AppData\Local\Android\sdk\platform-tools\'
- 找到正确的路径后,将其添加到变量值字段的末尾。请确保在条目前面有一个分号(例如,“…;C:\Users\<yourName>\AppData\Local\Android\sdk\platform-tools”)。
- 重新启动命令提示符。adb 命令现在应该已被识别。
创建新项目
- 如果您没有打开的项目,请在欢迎屏幕上点击“新建项目”。否则,请打开文件菜单,然后选择新建 > 新建项目…
- 填写应用程序名称、公司域名和项目位置,然后点击下一步。
- 确保仅勾选“手机和平板电脑”框。在相应的“最低 SDK”下拉菜单中,选择API 16:Android 4.1 (Jelly Bean)。然后,点击下一步。
- 选择空活动选项。然后,点击下一步。
注意:有关活动及其在 Android 应用程序中的位置的更多信息,请访问此页面。 - 接下来,填写活动名称、布局名称、标题和菜单资源名称字段,然后点击完成。
就是这样!您的 Android Studio 项目已创建。您现在拥有了一个基本的“Hello World”应用程序。
添加 Recon* SDK
在您的应用程序可以使用可用的 Recon* SDK 依赖项之前,您需要修改其 Gradle 文件。
步骤 1:添加 Maven 仓库
- 打开build.gradle (Project: My First Recon App)文件,并添加以下行,如下所示:
maven { url "http://repo.reconinstruments.com/artifactory/libs-release" }
- 打开build.gradle (Module: app)文件,并将以下三行添加到dependencies { ... }部分,如下所示:
compile 'com.reconinstruments.app:recon-application:X.X.X' compile 'com.reconinstruments.ui:recon-ui:X.X.X' provided 'com.reconinstruments.os:recon-platform:X.X.X'
注意:请确保将上面的“X.X.X”规格更改为反映最新的 SDK 版本。有关更多信息,请查看最新的发布说明。
注意:请确保 minSdkVersion
和 targetSdkVersion
都设置为16。
步骤 3:更新项目清单
- 打开名为 .../manifests/AndroidManifest.xml 的文件,并将以下行添加到应用程序设置中,如下面的图片中的第 9 行所示:
android:theme="@style/ReconTheme"
- 将库使用行添加到应用程序主体(下面的图片中的第 20 和 21 行)
<uses-library android:name="com.reconinstruments.os"/> <uses-library android:name="com.reconinstruments.lib"/>
注意:请确保这些行位于应用程序主体内部,否则您的项目将生成错误。
- 保存清单文件。我们刚刚添加的行将告诉您的应用程序两件事:它将为图形组件使用 Recon UI 主题,并且它将在其主活动中使用自定义库。
现在您可以开始使用 Recon SDK 编码您的项目了!
注意:有关清单文件及其用法的更多信息,请参阅应用程序清单 API 指南。
创建用户界面并添加核心功能
为了有效利用 Recon Jet Pro 小巧、阳光下可读的显示屏,我们建议您使用 ReconUI 包,并熟悉 Recon 的 设计指南。
Enterprise Launcher 应用充当自定义启动器,其中包含其他应用程序的滚动列表,可以通过调用意图来调用这些应用程序。
在本教程的这一部分,您将学习如何实现一个简单的用户界面并向应用程序的主活动添加核心功能。有关本教程实现的示例,请参阅 EnterpriseLauncher 示例应用中的 ReconOSComponentsActivity 的源代码。
首先,我们将实现一个标准的 ReconOS 垂直列表。垂直列表可以包含只读数据和交互式元素,并且可以滚动。当您滚动到列表的末尾时,您的选择将回绕到开头(反之亦然)。由于在 Jet Pro 上进行垂直滚动很繁琐,因此我们建议您仅在应用的低流量区域使用垂直列表,并且仅用于显示大量元素(如设置菜单)。
使用 ReconUI,设置一个基本的垂直列表 UI 非常简单:
- 首先,打开您的活动类并添加以下导入:
import com.reconinstruments.ui.list.SimpleListActivity; import com.reconinstruments.ui.list.StandardListItem;
- 确保MainActivity继承SimpleListActivity类。
public class MainActivity extends SimpleListActivity { ... }
创建自定义列表
列表可以内置可选功能。例如,列表项可以用来打开新的意图。
- 要创建自定义列表,请继承StandardListItem类,并将您自己的功能添加到onClick(...)函数中:
public class ListItem extends StandardListItem { Intent intent; public ListItem(String text, Intent i) { super(text); this.intent = i; } public void onClick(Context context) { context.startActivity(intent); } }
- 使用setContents(...)函数添加您的自定义列表项:
@Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.list_standard_layout); setContents( new ListItem("Start Activity A", IntentA), new ListItem("Start Activity B", IntentB), new ListItem("Start Activity C", IntentC)); }
- 当您的列表项被选中时,它们将启动指定的意图。
添加可调用的意图
以下示例代码显示了如何将 AN005 的意图集成到您刚刚创建的列表中:
public class MainActivity extends SimpleListActivity { // ReconOS apps and components: static final String ENGAGE_PHONE_CONNECTION = "com.reconinstruments.connectdevice.CONNECT"; static final String NOTIFICATION_CENTER = "com.reconinstruments.messagecenter.frontend"; static final String CAMERA_APP= "com.reconinstruments.camera"; static final String GALLERY_APP= "com.reconinstruments.camera.gallery"; static final String COMPASS= "com.reconinstruments.compass.CALIBRATE"; static final String INSTALLED_APPS= "com.reconinstruments.jetappsettings.apps"; static final String RECON_SETTINGS = "com.reconinstruments.jetappsettings.settings"; static final String POWER_MENU = "com.reconinstruments.power.RECON_POWER_MENU"; // The setting page for the enterprise launcher app. static final String SETTINGS = "com.reconinstruments.enterprise.settings"; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.list_standard_layout); ArrayList components_items = new ArrayList(); components_items.add(new ListItem(getString(R.string.phone_connection),new Intent(ENGAGE_PHONE_CONNECTION))); components_items.add(new ListItem(getString(R.string.notification_center),new Intent(NOTIFICATION_CENTER))); components_items.add(new ListItem(getString(R.string.settings),new Intent(SETTINGS))); components_items.add(new ListItem(getString(R.string.recon_settings),new Intent(RECON_SETTINGS))); if(!DeviceUtils.isSnow2()) { components_items.add(new ListItem(getString(R.string.camera_app), new Intent(CAMERA_APP))); components_items.add(new ListItem(getString(R.string.gallery_app), new Intent(GALLERY_APP))); } components_items.add(new ListItem(getString(R.string.compass), new Intent(COMPASS))); components_items.add(new ListItem(getString(R.string.installed_apps), new Intent(INSTALLED_APPS))); components_items.add(new ListItem(getString(R.string.power_menu), new Intent(POWER_MENU))); setContents(components_items); } }
您的应用程序现在已完全可用,并准备好进行测试!要运行此应用程序,请将 Recon Jet Pro 连接到您的计算机,然后点击 Android Studio 中所示的运行按钮。
成功在 Recon Jet Pro 上运行应用程序后,探索为应用程序添加功能。例如,尝试从SimpleList示例中添加、重命名或删除项目,或将 SimpleList 更改为 Carousel。