有抱负的 Google Glass 开发人员教程:构建您的第一个 Glass 应用程序
已发表: 2022-03-11谷歌眼镜是一项未来技术,有望彻底改变我们使用设备与世界互动的方式。 但从开发人员的角度来看,为玻璃开发有什么特别之处呢? 答案是“什么都没有!” 事实上,从经验丰富的 Android 开发者的角度来看,Google Glass 只是另一款屏幕极小、功能有限的 Android 设备!
任何具有 Android 开发知识的人都可以成为这个由未来派可穿戴技术布道者组成的“精英”社区的一员,这也是 Google Glass 如此出色的部分原因。 当然,您需要学习一些新东西,例如“沉浸式”和“活动卡”之间的区别,但正如您将看到的,学习曲线并不陡峭。
本 Google Glass 教程的目的是通过创建一个包含所有常见步骤的简单应用程序,为开发任何 Glass 应用程序奠定基础。 我的目标是为您节省一些研究和反复试验的时间,并使您能够尽快运行您的第一个 Glass 应用程序。
在本教程中,我们将首先介绍如何设置您的开发环境并将您的 Google Glass 连接到您的计算机。 然后我们将创建一个简单的“Hello World”Glass 应用程序,其中包括自定义语音命令和与 Glass 开始菜单的集成。 在您的 Glass 上开发并运行您的第一个应用程序后,您将了解 Glass 应用程序中的导航、语音激活菜单和动态内容创建的基础知识。
如何登机
Glass 仍处于一种“beta 测试”阶段,为此谷歌发明了“探索者计划”一词。 不管你怎么称呼它,Glass 还不是你可以像智能手机那样在店内买到的东西。 不幸的是,Android 开发工具仍然没有一个模拟器,您可以在没有实际硬件的情况下使用它来开发您的应用程序。
因此,为了运行和调试您的应用程序,您需要通过 Explorer Program 获得真正的 Google Glass。 要加入该计划,请访问注册页面并注册访问。 一旦获得批准,请准备好您的信用卡并等待您的玻璃杯送达。 目前,Explorer 版本的 Glass 售价 1,500 美元,但预计在该设备上市前价格会大幅下降。
对于无眼镜者
由于缺少任何模拟器,您必须拥有实际的 Google Glass 硬件才能开发本教程中的应用程序(或任何 Glass 应用程序),但如果获得一个超出您的预算,请不要气馁 - 它无论如何都值得关注。 在本教程中将显而易见的是,为 Glass 开发与为任何其他 Android 平台开发几乎相同!
如果您还没有使用过 Google Glass,但和我一样对它感到兴奋,请观看这两个视频,因为它们应该为您提供足够的输入来理解用户界面的基础知识。
- 谷歌眼镜简介
- Google Glass 操作指南:入门
这里有更多有用的设置和导航视频,还有更多关于用户界面的详细信息。
参与规则
本 Google Glass 开发者教程做了以下假设:
- 我假设您了解 Glass 导航和设置的基础知识。 如果您从未使用过 Glass,请查看上面链接的视频。
- 我假设您了解 Android 开发的基础知识:项目文件的结构、Android 应用程序的配置等。
- 我将使用 Android Studio,但说明应该适用于几乎任何 Android 开发环境。 Android Studio 仍处于“测试阶段”,Glass 也是如此。 不要害怕开始使用它——它真的是一个很棒的产品。 Android Studio 可在此处下载。
设置你的谷歌眼镜
好吧,让我们开始吧!
您需要做的第一件事是在 Glass 上启用调试模式。 您必须在用于开发应用程序的每台 Android 设备上执行类似的操作,因此这可能很熟悉。 要启用调试,请滑动到“设置”->“设备信息”,然后点击打开设备菜单。 选择“打开调试”,它将被启用。
接下来,您需要准备好您的开发环境。 当前版本的 Google Glass 要求您使用 API 版本 19,因此请确保已安装它。 此外,您还需要安装 Glass 开发套件。 如果您尚未安装这两个包,请使用您的 Android SDK 管理器安装。
你好世界!
所以让我们制作我们的第一件“玻璃器皿”。 (是的,Google 创造了另一个术语!“Glassware”是在 Google Glass 上运行的任何应用程序的名称)。 我们将从开发一个古老的“Hello World!”开始。 应用。 与大多数主要的 Android 开发环境一样,Android Studio 会自动使用模板填充新应用程序以显示这个著名的短语。 结果,得到“Hello World!” 启动和运行只是基本应用程序部署的一个练习。
在 Android Studio 中,点击“ New Project ”并填写项目表单。 您可以使用类似的东西:
选择外形尺寸和 API 时,请确保选择“ Glass ”和 API 19
选择“ Immersion Activity ”作为您的启动活动。
你还记得我提到过你需要了解沉浸式和 Live Card 之间的区别吗? Google 的用户界面文章解释了不同类型的 Glass 屏幕。 这是一个快速的总结:
实时卡片被添加到 Glass 时间线中,并通过高频更新显示有关某事的实时信息。 即使用户与不同的卡片进行交互,它们也会不断地在后台运行。 这允许用户通过不断访问不同种类的实时信息进行多任务处理。
沉浸是完全可定制的屏幕,在时间线体验之外运行。 这些允许您设计自己的 UI 并处理您认为合适的用户输入。 这就是我们将要使用的!
在向导的下一个屏幕中,保留“ Name ”和“ Title ”的默认值,然后单击“ Finish ”。
在 Gradle 处理好您的依赖项并准备好您的项目之后,是时候插入 Glass 插件了。现在这是未来的开发!
假设您的所有 Android ADB 驱动程序都已安装,并且您的 Glass 已被您的系统识别,您应该将 Glass 在您的设备列表中。
如果这是您第一次将设备连接到计算机,您的 Glass 将要求建立批准/信任。 只需轻按您的玻璃杯即可连接,您应该准备好了。
单击“运行”并使用“MainActivity”部署您的“默认APK”作为在“USB”设备上启动的启动活动。
几秒钟后,您应该在 Glass 屏幕上看到如下内容:
欢呼! 您的应用程序正在 Glass 上运行! 您所要做的就是在创建应用程序时填写一些默认值!
由于我们没有另行指定,Glass 将以“Show demo”的名称显示您的应用程序。 如果您滑回“开始”屏幕,然后点击以打开应用程序菜单,您将看到它如下所示:
一点波兰语
好的,你让它运行起来了,但这看起来不像一个真正的 Glass 应用程序,而且你不希望应用程序通过“Show demo”启动。
在本教程中,我们将对其稍作调整以获得真实的感觉。
设置主题
首先,你不想用这个丑陋的标题“Hello World Immersion”活动标题栏占据你的任何小玻璃屏幕,你绝对不希望你的屏幕是灰色的黑色字体。 为了解决这个问题,我们只需要在我们的 Android 上切换主题并让 Glass OS 来处理它。
打开res/values/styles.xml进行编辑。 它应具有以下内容:
<?xml version="1.0" encoding="utf-8"?> <resources> <style name="AppTheme" parent="android:Theme.Holo.Light"> </style> </resources> 只需将android:Theme.Holo.Light更改为android:Theme.DeviceDefault 。 这应该使用 Glass 默认主题自动处理应用程序布局和颜色。
定义菜单外观
好的,在这个 Glass 开发教程中,我们要做的下一件事是设置我们的应用程序,使其具有正确的名称和良好的语音控制启动。 打开您的 Android Manifest ( AndroidManifest.xml ) 并在上面添加以下<application…标签:
<uses-permission android:name="com.google.android.glass.permission.DEVELOPMENT" /> 您想要使用DEVELOPMENT权限的原因是您可以使用自定义语音控件进行游戏。 谷歌对批准的 Glass 应用程序中允许哪些语音命令非常严格,所有新命令都必须得到批准。 由于本教程用于学习目的,您不会将此应用程序提交给 Glassware 官方商店,因此您不必担心。 只需打开DEVELOPMENT权限,您就可以访问“未列出的语音命令”。 有关这方面的更多信息,请阅读此 GDK 页面。
打开voice_trigger.xml进行编辑。 这是定义启动应用程序的语音命令的地方。 它应该位于res/xml/文件夹中。 你应该得到类似这样的内容:
<trigger command="SHOW_ME_A_DEMO" />不要说“Show me a demo”来启动我们的应用程序,我们只需说出应用程序的名称即可。 将文件内容更改为:
<trigger keyword="@string/app_name" /> 如果您返回清单文件,您可能会注意到您的android:label="@string/app_name"已自动更新为也使用资源字符串@string/app_name而不是像以前那样硬编码的Hello Glass值. 如果此设置未更新,请确保将值设置为android:label="@string/app_name" 。
你的应用名称到底是什么? 如果您打开res/values/strings.xml ,您的app_name应列为:
<string name="app_name">Hello Glass</string>这应该结束您的第一个 Hello Glass 应用程序。 让我们看看它现在是如何工作的!
在“开始”屏幕上,您可以说“ok glass”来调出语音菜单。 您的应用程序现在位于语音激活命令列表中。
通过本教程为您提供指导,这就是您的 Glass 应用程序开始屏幕现在的样子。
如果您说“ Hello glass ”,您的应用程序应该启动并且您应该获得标准化的 Glass 体验:
如果您不想使用语音激活应用程序,只需点击开始屏幕,您就会看到您的应用程序在菜单中可用:
语音还是触摸? 两者都用!
密切关注应用程序的界面以及用户与它的交互是非常重要的。 请记住,您的用户并不总是能够使用他们的声音 - 例如,在观看讲座或演示时。 或者,他们可能手忙脚乱,无法使用触摸。 我建议您尽可能同时提供触摸和语音菜单交互,允许您的用户同时使用语音和触摸板在您的应用程序中导航。
一个真正的应用程序 - Toptal Finder
现在您已经熟悉 Glass 开发,并且您已经创建了 Hello Glass,现在是时候创建一个真正的应用程序了,它可以让 Glass 的新功能发挥作用。 让我们构建一个应用程序,让您可以根据开发平台浏览 Toptal 顶级开发人员的个人资料。
我们示例 Glass 应用程序的结构将很简单:
- 我们希望我们的开始屏幕具有带有语音和点击激活菜单的 Toptal 徽标,允许我们选择我们需要开发人员的开发平台。
- 选择一个平台后,我们想得到一个开发者名单,上面有他们的照片和名字。 开发人员资料将以可滚动的个人卡片列表的形式呈现。
- 查看开发人员资料时,我们希望能够将其添加到收藏夹或发送招聘请求。
基础
让我们快速回顾一下您已经在 Android 知识基础上添加的内容:
- 如何设置您的开发环境来构建 Glassware。
- 如何配置您的应用程序以使用标准 Glassware GUI 主题。
- 如何使用自定义语音命令和菜单名称启动您的应用程序。
使用这些知识,让您的新应用程序启动并运行。 您可以从上面更新 Hello Glass 应用程序,或者按照相同的步骤启动一个新的应用程序。 将此应用程序命名为“ Top Finder ”,并使您的voice_trigger.xml文件看起来像这样。
<?xml version="1.0" encoding="utf-8"?> <trigger keyword="@string/app_name" > <constraints network="true" /> </trigger> network="true"约束告诉 glass 在启动这个应用程序时检查网络连接,我们需要连接到 Toptal 开发人员列表。 如果没有连接,Glass 会显示一条警告消息。
主屏幕
让我们的应用程序的主屏幕看起来像这样:
当您在屏幕上看到“ok glass”消息时,这意味着该应用程序在该位置具有语音激活菜单。 在这里说出“ok glass”这个短语会激活该位置的语音菜单。 此短语由 Glass 预定义,您无法更改。
您可以将“ok glass”视为“应用程序菜单”,就像您在智能手机/平板电脑开发中使用的一样,它的作用完全相同。 当您“点击”屏幕上的“应用程序菜单图标”(通常是 3 个点或线)打开 Android 应用程序菜单时,您需要说“ok glass”才能在 Glassware 应用程序中打开语音激活菜单。
为了启用“ok glass”菜单,您需要从 API 请求FEATURE_VOICE_COMMANDS 。 为此,请在MainActivity的onCreate处理程序中添加以下行:
getWindow().requestFeature(WindowUtils.FEATURE_VOICE_COMMANDS);每个包含此功能的活动都将在底部中心以“ok glass”文本呈现。
您需要做的下一件事是为主屏幕创建一个菜单。 在您的res/menu文件夹中,创建一个名为main.xml的新 XML 菜单定义。 为简单起见,我们将仅启用三个 Toptal 开发者平台,但您可以随意进行更改。
它应具有以下内容:
<?xml version="1.0" encoding="utf-8"?> <menu xmlns:andro> <item android: android:title="Top Android developer" /> <item android: android:title="Top JavaScript developer" /> <item android: android:title="Top iOS developer" /> </menu>你可能想知道为什么我选择了相当长的菜单标题而不是简单的 Android、JavaScript 和 iOS。 嗯,原因很简单。 Glass 开发团队的人仍在改进语音识别。 建议在菜单中使用两个或三个单词,以便 Glass 更容易识别它们。
我已经提到“ok glass”菜单与您的标准 Android 应用程序菜单没有什么不同。 将菜单附加到活动实际上是相同的。 只需覆盖MainActivity中的onCreatePanelMenu处理程序,然后为刚刚创建的主菜单充气:
@Override public boolean onCreatePanelMenu(int featureId, Menu menu){ if (featureId == WindowUtils.FEATURE_VOICE_COMMANDS || featureId == Window.FEATURE_OPTIONS_PANEL) { getMenuInflater().inflate(R.menu.main, menu); return true; } return super.onCreatePanelMenu(featureId, menu); } 现在我们需要添加一个菜单处理程序。 在你这样做之前,创建一个名为findDevelopers的空方法。 我们稍后会回到这个开始搜索并显示结果。 之后,您可以覆盖您的菜单处理程序。
public void findDevelopers(String platform){ } @Override public boolean onMenuItemSelected(int featureId, MenuItem item) { if (featureId == WindowUtils.FEATURE_VOICE_COMMANDS || featureId == Window.FEATURE_OPTIONS_PANEL) { switch (item.getItemId()) { case R.id.find_android: findDevelopers("Android"); break; case R.id.find_javascript: findDevelopers("Java Script"); break; case R.id.find_ios: findDevelopers("iOS"); break; } return true; } return super.onMenuItemSelected(featureId, item); } 现在是时候让我们的示例 Google Glass 应用程序的主屏幕变得漂亮了。 将 Toptal 徽标作为res/drawable/logo.png导入您的应用程序。 我使用了这张图片:
在您的MainActivity类中,进行以下更改。
确保在类的开头声明了以下私有变量:
private CardScrollView mCardScroller; private View mView; private GestureDetector mGestureDetector; 更改buildView方法以自定义 Card 布局:
private View buildView() { Card card = new Card(this); card.setText(R.string.app_name); card.setImageLayout(Card.ImageLayout.LEFT); card.addImage(R.drawable.logo); return card.getView(); } 并将您的onCreate处理程序更改为:

protected void onCreate(Bundle bundle) { super.onCreate(bundle); getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON); getWindow().requestFeature(WindowUtils.FEATURE_VOICE_COMMANDS); mView = buildView(); mCardScroller = new CardScrollView(this); mCardScroller.setAdapter(new CardScrollAdapter() { @Override public int getCount() { return 1; } @Override public Object getItem(int position) { return mView; } @Override public View getView(int position, View convertView, ViewGroup parent) { return mView; } @Override public int getPosition(Object item) { if (mView.equals(item)) { return 0; } return AdapterView.INVALID_POSITION; } }); // Handle the TAP event. mCardScroller.setOnItemClickListener(new AdapterView.OnItemClickListener() { @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { openOptionsMenu(); } }); mGestureDetector = createGestureDetector(this); setContentView(mCardScroller); } 正如我之前所说,我们希望将点击激活的菜单与“ok glass”一起包括在内,因此只需像在 Android 应用程序中一样启用手势即可。 在MainActivity类中添加以下方法:
private GestureDetector createGestureDetector(Context context) { GestureDetector gestureDetector = new GestureDetector(context); //Create a base listener for generic gestures gestureDetector.setBaseListener( new GestureDetector.BaseListener() { @Override public boolean onGesture(Gesture gesture) { if (gesture == Gesture.TAP) { openOptionsMenu(); return true; } else if (gesture == Gesture.TWO_TAP) { // do something on two finger tap return true; } else if (gesture == Gesture.SWIPE_RIGHT) { // do something on right (forward) swipe return true; } else if (gesture == Gesture.SWIPE_LEFT) { // do something on left (backwards) swipe return true; } else if (gesture == Gesture.SWIPE_DOWN){ finish(); } return false; } }); gestureDetector.setFingerListener(new GestureDetector.FingerListener() { @Override public void onFingerCountChanged(int previousCount, int currentCount) { // do something on finger count changes } }); gestureDetector.setScrollListener(new GestureDetector.ScrollListener() { @Override public boolean onScroll(float displacement, float delta, float velocity) { // do something on scrolling return true; } }); return gestureDetector; } @Override public boolean onGenericMotionEvent(MotionEvent event) { if (mGestureDetector != null) { return mGestureDetector.onMotionEvent(event); } return false; }应该是这样! 您现在可以启动您的应用程序并尝试两种菜单激活方法。 如果您说“ok glass” ,屏幕上会显示三个菜单项,如果您点击玻璃,则会打开一个可滚动菜单。 要浏览菜单项,您可以前后滑动。
语音菜单如下所示:
这是手势菜单:
如果您选择一个菜单项,则不会发生任何事情,因为您的findDevelopers方法尚未实现。
开发人员屏幕
我们将继续使用默认的 Glass Card 布局,左侧是图片,右侧是文本,还有一些页脚信息。 有关设计卡片的最佳做法的更多信息,请参阅 Google Glass 样式指南。
我们的开发人员配置文件由简单的属性定义:
- 姓名
- 图片
- 开发平台
因此,让我们确保在我们的应用程序中具有正确的类结构。 在您的java/models文件夹中创建一个名为DeveloperModel.java的新类。 我们希望这个类是可序列化的,因为它将包含列表中的配置文件。
public class DeveloperModel implements Serializable { private String name; public String getName(){ return name; } public void setName(String name){ this.name=name; } private String platform; public String getPlatform(){ return platform; } public void setPlatform(String platform){ this.platform=platform; } private String image; public String getImage(){ return image; } public void setImage(String image){ this.image=image; } } 我们希望我们的卡片与我们的开发者资料数据紧密绑定。 因为默认的CardScrollAdapter就其数据模型而言有点通用,我们需要对其进行扩展并使其成为我们自己的。 在您的java/adapters文件夹中创建DeveloperAdapter.java :
public class DeveloperAdapter extends CardScrollAdapter { private List<Card> mCards; private List<DeveloperModel> mData; public DeveloperAdapter(List<Card> cards){ this.mCards = cards; } @Override public int getCount() { return mCards.size(); } @Override public Object getItem(int i) { return mCards.get(i); } @Override public View getView(int i, View view, ViewGroup viewGroup) { return mCards.get(i).getView(); } @Override public int getPosition(Object o) { return this.mCards.indexOf(o); } } 我们不希望我们的搜索结果被添加到应用程序的主屏幕上,因此我们将创建新的 Activity 来执行搜索并显示结果。 在MainActivity旁边创建一个新活动ResultsActivity (可能在java/com.helloglass )。
确保它extends Activity 。
接下来,我们需要为我们的开发者资料卡片指定一个菜单。 创建一个新菜单developer.xml ,其中包含以下内容:
<?xml version="1.0" encoding="utf-8"?> <menu xmlns:andro> <item android: android:title="Add to favorites" /> <item android: android:title="Hire" /> <item android: android:title="Go back" /> </menu> 要在ResultsActivity和MainActivity之间启用参数传递,请在ResultsActivity类的开头添加以下行:
public static final String SEARCH = "search"; private String mPlatform="Android";确保将新活动添加到清单文件中:
<activity android:name=".ResultsActivity" android:immersive="true" android:icon="@drawable/ic_launcher" android:label="@string/title_activityresults" android:parentActivityName=".MainActivity"> <meta-data android:name="android.support.PARENT_ACTIVITY" android:value="com.eloptico.MainActivity" /> </activity> 设置ResultsActivity的初始屏幕和配置卡片与我们在MainActivity上所做的非常相似。 首先检查您是否在开头定义了卡片和滚动条:
private CardScrollView mCardScroller; private List<Card> mCards; private GestureDetector mGestureDetector; 创建一个临时的搜索方法,我们稍后会回来实现。 将新卡添加到配置文件列表就像将项目添加到数组一样简单。 我们也将这个方法命名为findDevelopers ,但这个属于ResultsActivity :
private void findDevelopers(String platform){ for (int i=1; i<=10; i++){ Card card = new Card(this); card.setText(platform+" "+Integer.toString(i)); card.setTimestamp(platform); card.setImageLayout(Card.ImageLayout.LEFT); card.addImage(R.drawable.ic_person_50); mCards.add(card); } mCardScroller.setSelection(0); } 现在回到您的MainActivity并更新findDevelopers以启动您的ResultsActivity并传入platform属性:
public void findDevelopers(String platform){ Intent resultsIntent = new Intent(this, ResultsActivity.class); resultsIntent.putExtra(ResultsActivity.SEARCH, platform); startActivity(resultsIntent); } 将您的开发人员菜单附加到ResultsActivity 。 您将能够在任何个人资料卡上打开菜单。
@Override public boolean onCreatePanelMenu(int featureId, Menu menu){ if (featureId == WindowUtils.FEATURE_VOICE_COMMANDS || featureId == Window.FEATURE_OPTIONS_PANEL) { getMenuInflater().inflate(R.menu.developer, menu); return true; } return super.onCreatePanelMenu(featureId, menu); } 就像之前一样,在显示ResultsActivity时启用手势来处理 Glass 上的触摸板。 为此,只需在onGesture(Gesture gesture)方法中调用openOptionsMenu() :
private GestureDetector createGestureDetector(Context context) { // … @Override public boolean onGesture(Gesture gesture) { if (gesture == Gesture.TAP) { openOptionsMenu(); return true; } else if // …此外,将菜单处理程序添加到开发人员相关操作。 我们现在将留下简单的 Toast 消息。
@Override public boolean onMenuItemSelected(int featureId, MenuItem item) { if (featureId == WindowUtils.FEATURE_VOICE_COMMANDS || featureId == Window.FEATURE_OPTIONS_PANEL) { switch (item.getItemId()) { case R.id.developer_fav: Toast.makeText(getApplicationContext(), "Favorite", Toast.LENGTH_LONG).show(); break; case R.id.developer_hire: Toast.makeText(getApplicationContext(), "Message", Toast.LENGTH_LONG).show(); break; case R.id.go_back: break; } return true; } return super.onMenuItemSelected(featureId, item); }每个应用程序都应该使用一些漂亮的视觉元素、图标等。Google Glass 团队提供了大量通用的标准化图标,供 Glass 开发人员在他们的应用程序中免费使用。 您可以在其库中找到一整套标准 Glass 图标和字体
现在,您只需要一个图标ic_person_50.png ,所以继续下载到您的res\drawable文件夹。 我们将使用这个图标而不是下载开发者的图片。
我们的 Glass 应用程序开发教程中剩下的最后一件事是覆盖ResultsActivity上的onCreate处理程序,我们将在其中检查从MainActivity转发的开发平台并填充我们的列表。
@Override protected void onCreate(Bundle bundle) { super.onCreate(bundle); getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON); getWindow().requestFeature(WindowUtils.FEATURE_VOICE_COMMANDS); mCardScroller = new CardScrollView(this); mCards = new ArrayList<Card>(); if(getIntent().hasExtra(SEARCH)){ mPlatform = getIntent().getStringExtra(SEARCH); } findDevelopers(mPlatform); mCardScroller.setAdapter(new DeveloperAdapter(mCards)); // Handle the TAP event. mCardScroller.setOnItemClickListener(new AdapterView.OnItemClickListener() { @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { openOptionsMenu(); } }); mGestureDetector = createGestureDetector(this); setContentView(mCardScroller); } 您可以让onResume和onPause方法与MainActivity中的方法相同。
如果您现在启动您的应用程序,您可以根据在MainActivity上选择的菜单检查您的开发人员配置文件是如何动态创建的。 同样,您可以选择使用“ok glass”或点击触摸板或使用语音激活来显示菜单。 以下是“第 10 位 Android 开发者”个人资料目前的样子:
点击打开触摸菜单:
说“ok glass”会调出语音菜单:
从列表中向下滑动以返回应用程序的主屏幕。
从 Internet 获取配置文件
总结一下,让我们用 JavaScript、Android 和 iOS 的前 10 名 Toptal 开发人员的真实信息填充菜单。
您将需要下载他们的个人资料图片并通过 HTTP 提供它们,或者直接使用来自 toptal.com 的 URL。
由于构建一个网络爬虫只是为了获取 Toptal 中的顶级开发人员的名字对于本文来说可能有点绕道,因此我创建了 JSON 文件供您在 Android、JavaScript 和 iOS 上使用。
在您的应用程序中,您需要做的第一件事是从您的 Android 操作系统请求访问互联网。 将以下行添加到您的清单文件
<uses-permission android:name="com.google.android.glass.permission.INTERNET"/>请注意,Glass 不允许您直接使用 HTTP 请求来阻塞主线程。 您将需要以异步方式处理 JSON 下载和单个图像。 您可以使用异步任务、创建自己的下载服务或意图,或者您在日常工作中喜欢的任何内容。
构建此功能并非特定于 Google Glass,因此我将跳过代码片段。 如果您继续努力并让最后一点功能正常工作,您的个人资料卡应该如下所示:
教程总结
我确实希望您在学习此 Google Glass 开发教程并构建您的第一个 Glassware 应用程序时玩得开心。 到目前为止,您应该对为 Glass 编写应用程序与任何其他 Android 平台没有太大区别这一想法感到满意。
至此,您已经了解了如何扩展 Google Glass 语音激活的主屏幕,如何创建自己的语音激活菜单,以及如何将语音控制与触摸手势相结合。 您还应该了解 Glass UI 的概念和基本构建块,例如卡片、布局和元素。 您已经了解了如何动态创建卡片以及如何在不同活动之间导航。
要深入了解,请访问 developer.google.com/glass 上的 Google 开发人员资源。 当您开始构建更复杂的应用程序时,它将被证明是一个非常有用的资源。
请注意,Glass 仍处于开发阶段,在进入消费市场之前可能还有更多增强功能需要实施。 考虑到这一点,我有一个重要的提示给你:
在语音识别方面还有很多工作要做,你可能会在尝试开始活动或填写一些信息时发现自己对着你想象中的朋友大喊大叫。 不用担心 - 每个尝试 Google Glass 开发的人都有同感,所以你并不孤单。
技术将得到改进,玻璃将很快准备好零售。 一旦它进入商店,肯定会引起轰动,所以我希望你和我一样兴奋,因为你是第一个走在这项激动人心的技术前沿的人之一!
Shout Out :本文中的屏幕截图是使用 Droid@Screen 制作的。
