Учебное пособие для начинающих разработчиков Google Glass: создание первого приложения для очков

Опубликовано: 2022-03-11

Google Glass — это футуристическая технология, которая обещает революционизировать то, как мы используем наши устройства для взаимодействия с миром. Но с точки зрения разработчика, что такого особенного в разработке для стекла? Ответ: «Ничего!» На самом деле, с точки зрения опытного разработчика Android, Google Glass — это просто еще одно Android-устройство с очень маленьким экраном и ограниченными возможностями!

Разработка Google Glass очень похожа на все разработки Android, которые охватывают разные устройства.

Тот факт, что любой, у кого есть знания в области разработки Android, может стать членом этого «элитного» сообщества футуристических пропагандистов носимых технологий, является частью того, что делает Google Glass таким замечательным. Конечно, вам нужно будет узнать несколько новых вещей, таких как разница между «Погружением» и «Активной картой», но, как вы увидите, кривая обучения не крутая.

Цель этого руководства по Google Glass — заложить основу для разработки любого приложения для очков путем создания простого приложения, которое включает в себя все общие шаги. Моя цель — сэкономить вам время на исследования и методы проб и ошибок и дать вам возможность как можно скорее запустить свое первое приложение для Glass.

В этом руководстве мы сначала рассмотрим, как настроить среду разработки и подключить Google Glass к компьютеру. Затем мы создадим простое приложение Glass «Hello World», которое будет включать настраиваемые голосовые команды и интеграцию с меню «Пуск» Glass. Как только вы разработаете свое первое приложение и запустите его на своем Glass, вы изучите основы навигации в приложениях Glass, голосового меню и создания динамического контента.

Как попасть на борт

Glass все еще находится в своего рода фазе «бета-тестирования», для чего Google придумал термин «Программа Explorer». Как бы вы это ни называли, Glass еще не то, что вы можете купить в магазине, как смартфон. К сожалению, в средствах разработки для Android до сих пор нет эмулятора, который можно использовать для разработки приложения без аппаратного обеспечения.

Таким образом, чтобы запускать и отлаживать ваше приложение, вам нужно получить настоящие Google Glass через программу Explorer. Чтобы присоединиться к программе, посетите страницу регистрации и зарегистрируйтесь для доступа. После одобрения подготовьте свою кредитную карту и дождитесь доставки вашего бокала. Версия Glass Explorer в настоящее время стоит 1500 долларов США, но ожидается, что цена значительно снизится до того, как устройство появится в магазинах.

Для тех, кто не в очках

Из-за отсутствия какого-либо эмулятора необходимо, чтобы у вас было реальное оборудование Google Glass, чтобы разработать приложение в этом руководстве (или любое приложение Glass), но если его приобретение выходит за рамки вашего бюджета, не расстраивайтесь — это будет стоить следовать вместе в любом случае. Что станет очевидным в руководстве, так это то, что разработка для Glass почти не отличается от разработки для любой другой платформы Android!

Если вы до сих пор не использовали Google Glass, но так же увлечены им, как и я, посмотрите эти два видео, поскольку они должны дать вам достаточно информации для понимания основ пользовательского интерфейса.

  • Введение в Google Glass
  • Google Glass How-to: начало работы

Еще больше полезных видеороликов по настройке и навигации здесь, а также много других подробностей о пользовательском интерфейсе здесь.

Правила участия

В этом руководстве для разработчиков Google Glass сделаны следующие предположения:

  • Я предполагаю, что вы понимаете основы навигации и настройки Glass. Если вы никогда не использовали Glass, посмотрите видеоролики, ссылки на которые приведены выше.
  • Я предполагаю, что вы понимаете основы Android-разработки: структуру файлов проекта, настройку Android-приложений и т. д.
  • Я буду использовать Android Studio, но инструкции должны быть переведены практически в любую среду разработки Android. Android Studio все еще находится в «бета-версии», как и Glass. Не бойтесь начать использовать его - это действительно отличный продукт. Android Studio доступна для скачивания здесь.

Настройка Google Glass

Хорошо, давайте начнем!

Первое, что вам нужно сделать, это включить режим отладки на вашем Glass. Вы должны делать что-то подобное на каждом Android-устройстве, которое вы используете для разработки своих приложений, так что это может быть вам знакомо. Чтобы включить отладку, проведите пальцем до « Настройки » -> « Информация об устройстве », а затем нажмите, чтобы открыть меню устройства. Выберите « Включить отладку », и она будет включена.

Затем вам нужно подготовить среду разработки. Текущая версия Google Glass требует использования API версии 19, поэтому убедитесь, что он установлен. Кроме того, вам необходимо установить комплект разработки Glass. Используйте Android SDK Manager для установки этих двух пакетов, если вы еще этого не сделали.

Используйте Android SDK Manager, чтобы убедиться, что ваш пакет разработки Glass установлен.

Привет мир!

Итак, давайте сделаем нашу первую часть «Стеклянной посуды». (Да, Google придумал другой термин! «Glassware» — это название любого приложения, работающего в Google Glass). Мы начнем с разработки старого доброго «Hello World!» заявление. Как и большинство основных сред разработки Android, Android Studio автоматически заполняет новые приложения шаблоном для отображения этой известной фразы. В результате, получив «Hello World!» запуск и запуск — это просто упражнение в фундаментальном развертывании приложения.

В Android Studio нажмите « Новый проект » и заполните форму проекта. Вы можете использовать что-то похожее на это:

Это начальные шаги по настройке для разработки Google Glass.

При выборе форм-факторов и API обязательно выберите « Стекло » и API 19.

Это некоторые дополнительные настройки приложения Glass.

Выберите « Immersion Activity » в качестве начальной активности.

Immersion Activity — это предпочтительная активность запуска разработки приложений для Glass.

Вы помните, я упоминал, что вам нужно будет узнать разницу между Immersion и Live Card? В статье о пользовательском интерфейсе Google объясняются различные типы экранов Glass. Вот краткий обзор:

  • Живые карты добавляются на временную шкалу Glass и отображают информацию о чем-либо в режиме реального времени посредством высокочастотных обновлений. Они постоянно работают в фоновом режиме, даже когда пользователи взаимодействуют с разными картами. Это позволяет пользователям работать в режиме многозадачности с постоянным доступом к различным видам информации в режиме реального времени.

  • Погружения — это полностью настраиваемые экраны, которые работают вне временной шкалы. Это позволяет вам разрабатывать собственный пользовательский интерфейс и обрабатывать пользовательский ввод так, как вы считаете нужным. Это то, что мы будем использовать!

На следующем экране мастера оставьте значения по умолчанию для « Имя » и « Заголовок » и нажмите « Готово ».

После того, как Gradle позаботится о ваших зависимостях и подготовит ваш проект, пришло время подключить его к Glass. Теперь это футуристическая разработка!

Предполагая, что все ваши драйверы Android ADB установлены и ваше устройство Glass распознается вашей системой, вы должны добавить свое устройство Glass в список своих устройств.

В списке устройств Google Glass должны отображаться как устройство Android.

Если вы впервые подключаете свое устройство к компьютеру, устройство Glass запросит подтверждение/доверие. Просто коснитесь стекла, чтобы разрешить подключение, и вы должны быть готовы.

Нажмите « Выполнить » и разверните «АПК по умолчанию» с «MainActivity» в качестве активности запуска для запуска на «USB» устройстве.

Через несколько секунд вы должны увидеть что-то подобное на экране вашего Glass:

Это пример того, что вы можете увидеть через свои Google Glass, если будете внимательно следовать этому руководству.

Ура! Ваше приложение работает на Glass! И все, что вам нужно было сделать, это ввести несколько значений по умолчанию при создании приложения!

Поскольку мы не указали по-другому, Glass покажет ваше приложение под названием «Показать демо». Если вы вернетесь к начальному экрану, а затем коснетесь, чтобы открыть меню приложения, вы увидите его в списке следующим образом:

Это пример пункта меню «Показать демо» в Glass.

Немного польского

Хорошо, вы запустили его, но оно не похоже на настоящее приложение Glass, и вы не хотите, чтобы приложение запускалось с помощью «Показать демонстрацию».

В этом уроке мы просто немного подправим его, чтобы получить настоящее ощущение.

Настройка темы

Во-первых, вы не хотите занимать какой-либо свой маленький экран Glass с этим уродливым заголовком «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 ( AndroidManifest.xml ) и добавьте приведенный выше <application… :

 <uses-permission android:name="com.google.android.glass.permission.DEVELOPMENT" />

Причина, по которой вы хотите использовать разрешения DEVELOPMENT , заключается в том, что вы можете играть с пользовательским голосовым управлением. Google довольно строг в отношении того, какие голосовые команды разрешены в утвержденных приложениях Glass, и все новые команды должны быть одобрены. Поскольку это руководство предназначено для учебных целей, и вы не будете отправлять это приложение в официальный магазин Glassware, вам не о чем беспокоиться. Просто включите разрешения DEVELOPMENT , и у вас будет доступ к «неуказанным голосовым командам». Для получения дополнительной информации об этом, пожалуйста, прочитайте эту страницу GDK.

Откройте voice_trigger.xml для редактирования. Здесь определяется голосовая команда для запуска вашего приложения. Он должен находиться в папке res/xml/ . Вы должны получить содержимое, подобное этому:

 <trigger command="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. Давайте посмотрим, как это работает сейчас!

На начальном экране вы можете сказать «ОК, стекло» , чтобы вызвать голосовое меню. Теперь ваше приложение находится в списке голосовых команд.

С помощью этого руководства вы узнаете, как теперь выглядит стартовый экран вашего приложения 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. Как настроить приложение для использования стандартной темы GUI Glassware.
  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» , это означает, что в этом месте приложения есть голосовое меню. Произнесение здесь фразы «окей, стекло» активирует голосовое меню для этой локации. Эта фраза предопределена Glass, и вы не можете ее изменить.

Вы можете думать о «ok glass» как о «меню приложения», точно так же, как вы использовали его при разработке своего смартфона/планшета, и у него точно такая же роль. Так же, как вы «нажимаете» на «значок меню приложения» на экране (часто 3 точки или линии), чтобы открыть меню приложения Android, вам нужно сказать «ок, стекло» , чтобы открыть меню, активируемое голосом, в вашем приложении Glassware.

Чтобы включить меню «ОК стекло» , вам нужно запросить FEATURE_VOICE_COMMANDS из API. Для этого добавьте следующую строку в обработчик onCreate в MainActivity :

 getWindow().requestFeature(WindowUtils.FEATURE_VOICE_COMMANDS);

Каждое действие, в котором включена эта функция, будет отображаться с текстом «хорошо, стекло» внизу по центру.

Следующее, что вам нужно сделать, это создать меню для главного экрана. В папке res/menu создайте новое XML-определение меню с именем main.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 легче их распознавал.

Я уже упоминал, что меню «ок стекло» ничем не отличается от вашего стандартного меню Android-приложений. Прикрепление меню к активности практически такое же. Просто переопределите обработчик onCreatePanelMenu в вашей MainActivity и раздуйте главное меню, которое вы только что создали:

 @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 . Я использовал это изображение:

Логотип Toptal для использования в нашем приложении Glass.

В своем классе MainActivity внесите следующие изменения.

Убедитесь, что следующие частные переменные объявлены в начале класса:

 private CardScrollView mCardScroller; private View mView; private GestureDetector mGestureDetector;

Измените метод buildView , чтобы настроить макет карты:

 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); }

Как я уже говорил, мы хотим включить меню, активируемое касанием, вместе с «ок, стекло» , поэтому просто включите жесты, как в своем приложении для 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; }

Это должно быть так! Теперь вы можете запустить свое приложение и попробовать оба метода активации меню. Если вы скажете «хорошо, стекло» , на экране отобразятся три пункта меню, а если вы коснетесь стекла, откроется прокручиваемое меню. Для навигации по пунктам меню можно проводить пальцем вперед и назад.

Вот как выглядит голосовое меню:

Вот голосовые команды, чтобы вызвать ведущих разработчиков на экран Glass.

А вот меню жестов:

Вот голосовые команды, чтобы вызвать ведущих разработчиков на экран Glass.

Если вы выберете пункт меню, ничего не произойдет, так как ваш метод findDevelopers еще не реализован.

Экраны разработчика

Мы продолжим использовать макет Glass Card по умолчанию, с изображением слева, текстом справа и некоторой информацией в нижнем колонтитуле. Дополнительные сведения о передовых методах оформления карт см. в руководстве по стилю Google Glass.

Наш профиль разработчика определяется простыми свойствами:

  1. Имя
  2. Картина
  3. Платформа разработки

Итак, давайте позаботимся о правильной структуре классов в нашем приложении. Создайте новый класс с именем DeveloperModel.java в папке java/models . Мы хотим, чтобы этот класс был сериализуемым, так как он будет содержать профили, находящиеся в списке.

 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 по умолчанию немного универсален в отношении своей модели данных, нам нужно расширить его и сделать его собственным. Создайте DeveloperAdapter.java в папке java/adapters :

 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); } }

Мы не хотим, чтобы наши результаты поиска добавлялись на главный экран приложения, поэтому мы создадим новую активность, которая будет выполнять поиск и отображать результаты. Создайте новую активность, ResultsActivity , рядом с вашей MainActivity (вероятно, в 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); }

Как и ранее, включите жесты для управления тачпадом на Glass, когда отображается ResultsActivity . Для этого просто вызовите openOptionsMenu() в onGesture(Gesture gesture) :

 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, — это переопределить наш обработчик onCreate для ResultsActivity , где мы проверим, какая платформа разработки была перенаправлена ​​из 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-разработчика»:

В нашем примере приложения Glass 10-й экран Android Developer выглядит следующим образом.

При нажатии открывается сенсорное меню:

При нажатии на экран Google Glass появляется «Добавить в избранное».

И произнесение «окей, стекло» вызывает голосовое меню:

Это вызывает голосовая команда «OK Glass».

Проведите пальцем вниз по списку, чтобы вернуться на главный экран вашего приложения.

Получение профилей из Интернета

В завершение давайте заполним меню реальной информацией о 10 лучших разработчиках Toptal для JavaScript, Android и iOS.

Вам нужно будет загрузить их изображения профиля и сделать их доступными через HTTP или просто использовать URL-адреса непосредственно с toptal.com.

Поскольку создание поискового робота только для того, чтобы получить имена лучших разработчиков в Toptal, может оказаться слишком сложным для этой статьи, я создал файлы JSON, которые вы можете использовать для Android, JavaScript и iOS.

В вашем приложении первое, что вам нужно сделать, это запросить доступ к Интернету из вашей ОС Android. Добавьте следующую строку в файл манифеста

 <uses-permission android:name="com.google.android.glass.permission.INTERNET"/>

Имейте в виду, что Glass не позволит вам заблокировать основной поток, используя HTTP-запросы напрямую. Вам нужно будет обрабатывать загрузки JSON и отдельные изображения асинхронно. Вы можете использовать асинхронную задачу, создать свою собственную службу загрузки или намерение или что-то еще, что вы предпочитаете в своей повседневной работе.

Создание этой функциональности не относится к Google Glass, поэтому я пропущу фрагменты кода. Если вы продвинетесь вперед и заработаете эту последнюю часть функциональности, ваши карточки профиля должны выглядеть так:

Это резюме Google Glass разработчика Toptal Анны Кьяры Беллини.

Это резюме Google Glass разработчика Toptal Сэмюэля Эдвардса.

Завершение урока

Я очень надеюсь, что вы получили удовольствие от изучения этого руководства по разработке Google Glass и создания своего первого приложения Glassware. К настоящему времени вы должны усвоить идею о том, что написание приложений для Glass не сильно отличается от написания приложений для любой другой платформы Android.

К этому моменту вы узнали, как расширить домашний экран Google Glass, активируемый голосом, как создавать собственные меню, активируемые голосом, и как сочетать голосовое управление с сенсорными жестами. Вы также должны понимать концепции и основные строительные блоки пользовательского интерфейса Glass, такие как карточки, макеты и элементы. Вы увидели, как динамически создавать карточки и как перемещаться между различными действиями.

Чтобы углубиться, перейдите к ресурсам Google для разработчиков на странице developments.google.com/glass. Когда вы начнете создавать более сложные приложения, этот ресурс окажется очень полезным.

Напоминаем, что Glass все еще находится в стадии разработки, и, вероятно, предстоит внедрить еще много улучшений, прежде чем он попадет на потребительский рынок. Имея это в виду, у меня есть одно важное замечание для вас:

Осталось много работы над распознаванием голоса, и вы можете поймать себя на том, что кричите на своего воображаемого друга, пытаясь начать свою деятельность или ввести какую-то информацию. Не беспокойтесь — все, кто пробует разработку Google Glass, чувствуют то же самое, так что вы не одиноки.

Технология будет совершенствоваться, и стекло будет готово к розничной продаже в кратчайшие сроки. Он обязательно вызовет большой ажиотаж, как только появится в магазинах, поэтому я надеюсь, что вы так же, как и я, взволнованы тем, что стали одним из первых, кто оказался в авангарде этой захватывающей технологии!


Shout Out : Скриншоты в этой статье сделаны с помощью Droid@Screen.