有抱負的 Google Glass 開發人員教程:構建您的第一個 Glass 應用程序

已發表: 2022-03-11

谷歌眼鏡是一項未來技術,有望徹底改變我們使用設備與世界互動的方式。 但從開發人員的角度來看,為玻璃開發有什麼特別之處呢? 答案是“什麼都沒有!” 事實上,從經驗豐富的 Android 開發者的角度來看,Google Glass 只是另一款屏幕極小、功能有限的 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 管理器安裝。

使用 Android SDK Manager 確保您的 Glass Development Kit 已安裝。

你好世界!

所以讓我們製作我們的第一件“玻璃器皿”。 (是的,Google 創造了另一個術語!“Glassware”是在 Google Glass 上運行的任何應用程序的名稱)。 我們將從開發一個古老的“Hello World!”開始。 應用。 與大多數主要的 Android 開發環境一樣,Android Studio 會自動使用模板填充新應用程序以顯示這個著名的短語。 結果,得到“Hello World!” 啟動和運行只是基本應用程序部署的一個練習。

在 Android Studio 中,點擊“ New Project ”並填寫項目表單。 您可以使用類似的東西:

這些是 Google Glass 開發的初始設置步驟。

選擇外形尺寸和 API 時,請確保選擇“ Glass ”和 API 19

這些是一些額外的 Glass 應用程序設置。

選擇“ Immersion Activity ”作為您的啟動活動。

Immersion Activity 是首選的 Glass 應用程序開發啟動活動。

你還記得我提到過你需要了解沉浸式和 Live Card 之間的區別嗎? Google 的用戶界面文章解釋了不同類型的 Glass 屏幕。 這是一個快速的總結:

  • 實時卡片被添加到 Glass 時間線中,並通過高頻更新顯示有關某事的實時信息。 即使用戶與不同的卡片進行交互,它們也會不斷地在後台運行。 這允許用戶通過不斷訪問不同種類的實時信息進行多任務處理。

  • 沉浸是完全可定制的屏幕,在時間線體驗之外運行。 這些允許您設計自己的 UI 並處理您認為合適的用戶輸入。 這就是我們將要使用的!

在嚮導的下一個屏幕中,保留“ Name ”和“ Title ”的默認值,然後單擊“ Finish ”。

在 Gradle 處理好您的依賴項並準備好您的項目之後,是時候插入 Glass 插件了。現在這是未來的開發!

假設您的所有 Android ADB 驅動程序都已安裝,並且您的 Glass 已被您的系統識別,您應該將 Glass 在您的設備列表中。

設備列表應將 Google Glass 顯示為 Android 設備。

如果這是您第一次將設備連接到計算機,您的 Glass 將要求建立批准/信任。 只需輕按您的玻璃杯即可連接,您應該準備好了。

單擊“運行”並使用“MainActivity”部署您的“默認APK”作為在“USB”設備上啟動的啟動活動。

幾秒鐘後,您應該在 Glass 屏幕上看到如下內容:

如果您密切關注本教程,這是您可能通過 Google Glass 看到的示例。

歡呼! 您的應用程序正在 Glass 上運行! 您所要做的就是在創建應用程序時填寫一些默認值!

由於我們沒有另行指定,Glass 將以“Show demo”的名稱顯示您的應用程序。 如果您滑回“開始”屏幕,然後點擊以打開應用程序菜單,您將看到它如下所示:

這是 Glass 的“顯示演示”菜單項的示例。

一點波蘭語

好的,你讓它運行起來了,但這看起來不像一個真正的 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 體驗:

語音命令會產生這種 Google Glass 響應。

如果您不想使用語音激活應用程序,只需點擊開始屏幕,您就會看到您的應用程序在菜單中可用:

您開發的 Google Glass 應用程序現已可用。

語音還是觸摸? 兩者都用!

密切關注應用程序的界面以及用戶與它的交互是非常重要的。 請記住,您的用戶並不總是能夠使用他們的聲音 - 例如,在觀看講座或演示時。 或者,他們可能手忙腳亂,無法使用觸摸。 我建議您盡可能同時提供觸摸和語音菜單交互,允許您的用戶同時使用語音和触摸板在您的應用程序中導航。

一個真正的應用程序 - Toptal Finder

我們將在本教程中概述的 Google Glass 開發示例是“Toptal Finder”。

現在您已經熟悉 Glass 開發,並且您已經創建了 Hello Glass,現在是時候創建一個真正的應用程序了,它可以讓 Glass 的新功能發揮作用。 讓我們構建一個應用程序,讓您可以根據開發平台瀏覽 Toptal 頂級開發人員的個人資料。

我們示例 Glass 應用程序的結構將很簡單:

  1. 我們希望我們的開始屏幕具有帶有語音和點擊激活菜單的 Toptal 徽標,允許我們選擇我們需要開發人員的開發平台。
  2. 選擇一個平台後,我們想得到一個開發者名單,上面有他們的照片和名字。 開發人員資料將以可滾動的個人卡片列表的形式呈現。
  3. 查看開發人員資料時,我們希望能夠將其添加到收藏夾或發送招聘請求。

基礎

讓我們快速回顧一下您已經在 Android 知識基礎上添加的內容:

  1. 如何設置您的開發環境來構建 Glassware。
  2. 如何配置您的應用程序以使用標準 Glassware GUI 主題。
  3. 如何使用自定義語音命令和菜單名稱啟動您的應用程序。

使用這些知識,讓您的新應用程序啟動並運行。 您可以從上面更新 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 會顯示一條警告消息。

主屏幕

讓我們的應用程序的主屏幕看起來像這樣:

這是我們為示例 Glass 應用主屏幕選擇的設計。

當您在屏幕上看到“ok glass”消息時,這意味著該應用程序在該位置具有語音激活菜單。 在這裡說出“ok glass”這個短語會激活該位置的語音菜單。 此短語由 Glass 預定義,您無法更改。

您可以將“ok glass”視為“應用程序菜單”,就像您在智能手機/平板電腦開發中使用的一樣,它的作用完全相同。 當您“點擊”屏幕上的“應用程序菜單圖標”(通常是 3 個點或線)打開 Android 應用程序菜單時,您需要說“ok glass”才能在 Glassware 應用程序中打開語音激活菜單。

為了啟用“ok glass”菜單,您需要從 API 請求FEATURE_VOICE_COMMANDS 。 為此,請在MainActivityonCreate處理程序中添加以下行:

 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導入您的應用程序。 我使用了這張圖片:

在我們的 Glass 應用程序中使用的 Toptal 徽標。

在您的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” ,屏幕上會顯示三個菜單項,如果您點擊玻璃,則會打開一個可滾動菜單。 要瀏覽菜單項,您可以前後滑動。

語音菜單如下所示:

以下是用於在 Glass 屏幕上調動頂級開發人員的語音命令。

這是手勢菜單:

以下是用於在 Glass 屏幕上調動頂級開發人員的語音命令。

如果您選擇一個菜單項,則不會發生任何事情,因為您的findDevelopers方法尚未實現。

開發人員屏幕

我們將繼續使用默認的 Glass Card 佈局,左側是圖片,右側是文本,還有一些頁腳信息。 有關設計卡片的最佳做法的更多信息,請參閱 Google Glass 樣式指南。

我們的開發人員配置文件由簡單的屬性定義:

  1. 姓名
  2. 圖片
  3. 開發平台

因此,讓我們確保在我們的應用程序中具有正確的類結構。 在您的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>

要在ResultsActivityMainActivity之間啟用參數傳遞,請在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); }

您可以讓onResumeonPause方法與MainActivity中的方法相同。

如果您現在啟動您的應用程序,您可以根據在MainActivity上選擇的菜單檢查您的開發人員配置文件是如何動態創建的。 同樣,您可以選擇使用“ok glass”或點擊觸摸板或使用語音激活來顯示菜單。 以下是“第 10 位 Android 開發者”個人資料目前的樣子:

在我們的示例 Glass 應用程序中,第 10 個 Android 開發者屏幕如下所示。

點擊打開觸摸菜單:

點擊 Google Glass 屏幕會彈出“添加到收藏夾”。

“ok glass”會調出語音菜單:

“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,因此我將跳過代碼片段。 如果您繼續努力並讓最後一點功能正常工作,您的個人資料卡應該如下所示:

這是 Toptal 開發人員 Anna Chiara Bellini 的 Google Glass 簡歷。

這是 Toptal 開發人員 Samuel Edwards 的 Google Glass 簡歷。

教程總結

我確實希望您在學習此 Google Glass 開發教程並構建您的第一個 Glassware 應用程序時玩得開心。 到目前為止,您應該對為 Glass 編寫應用程序與任何其他 Android 平台沒有太大區別這一想法感到滿意。

至此,您已經了解瞭如何擴展 Google Glass 語音激活的主屏幕,如何創建自己的語音激活菜單,以及如何將語音控制與觸摸手勢相結合。 您還應該了解 Glass UI 的概念和基本構建塊,例如卡片、佈局和元素。 您已經了解瞭如何動態創建卡片以及如何在不同活動之間導航。

要深入了解,請訪問 developer.google.com/glass 上的 Google 開發人員資源。 當您開始構建更複雜的應用程序時,它將被證明是一個非常有用的資源。

請注意,Glass 仍處於開發階段,在進入消費市場之前可能還有更多增強功能需要實施。 考慮到這一點,我有一個重要的提示給你:

在語音識別方面還有很多工作要做,你可能會在嘗試開始活動或填寫一些信息時發現自己對著你想像中的朋友大喊大叫。 不用擔心 - 每個嘗試 Google Glass 開發的人都有同感,所以你並不孤單。

技術將得到改進,玻璃將很快準備好零售。 一旦它進入商店,肯定會引起轟動,所以我希望你和我一樣興奮,因為你是第一個走在這項激動人心的技術前沿的人之一!


Shout Out :本文中的屏幕截圖是使用 Droid@Screen 製作的。