Дом Социальные медиа Разработка для Project Tango - dummies

Разработка для Project Tango - dummies

Видео: Андрей Аржанников - Project Tango - новые возможности мобильной разработки 2024

Видео: Андрей Аржанников - Project Tango - новые возможности мобильной разработки 2024
Anonim

Android поддерживает многие инновационные проекты Google. Возьмем, к примеру, планшетное устройство, известное как Project Tango. На первый взгляд, устройство Project Tango выглядит как обычный семидюймовый планшет. Когда вы включаете устройство, вы видите знакомый начальный экран Android с иконками для запуска приложений и индикаторами для сигнала Wi-Fi и напряжением батареи.

Устройство даже запускает приложение Play Маркета Google, поэтому вы можете использовать его для просмотра веб-страниц, редактирования документов и выполнения всех других действий, которые делают обычные планшетные устройства.

Но аппаратное обеспечение Project Tango не является обычным явлением. На задней панели планшета есть датчик глубины, камера для глаз с рыбой и ИК-камера. Комбинируя данные из этих источников с его внутренним устройством отслеживания движения, Project Tango создает 3D-карту окружающего пространства.

Вы можете создать карту своей собственной гостиной и сохранить карту на устройстве Project Tango. Когда вы возвращаете устройство в свою гостиную, устройство запоминает пространство и все объекты внутри пространства.

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

С другим приложением вы проходите через виртуальные миры. Чтобы изменить свою точку зрения в мире, вы не крутите джойстик, не перемещаете мышь или не тянете пальцы вдоль экрана. Вместо этого вы смотрите экран устройства, когда вы двигаетесь вокруг своей собственной реальной жизни. Устройство показывает вам, что вы увидите в виртуальном мире, когда идете вперед, поворачиваетесь, чтобы смотреть боком и перемещаться по виртуальным 3D-объектам.

Чтобы начать работу над разработкой, Project Tango поставляется с некоторыми примерами приложений. Открытие самого простого приложения QuickStart в Android Studio отображает значения перевода и вращения при перемещении устройства с места на место. (См. Следующий рисунок.)

Приложение QuickStart.

В основе приложения QuickStart входит Android-активность. Ниже приведен код приложения.

/ * * Copyright 2014 Google Inc. Все права защищены. * * Лицензия на лицензию Apache, версия 2. 0 («Лицензия»); * вы не можете использовать этот файл, кроме как в соответствии с Лицензией. * Вы можете получить копию Лицензии на * * // www. апач. орг / лицензии / ЛИЦЕНЗИИ-2. 0 * * Если это не предусмотрено действующим законодательством или не согласовано в письменной форме, программное обеспечение *, распространяемое по лицензии, распространяется на основе «КАК ЕСТЬ», * БЕЗ КАКИХ-ЛИБО ГАРАНТИЙ ИЛИ УСЛОВИЙ ЛЮБОГО ВИДА, явных или подразумеваемых.* См. Лицензию на конкретный язык, регулирующий разрешения и * ограничения по Лицензии. * / импорт com. Google. кран. tangoservice. Танго; импорт com. Google. кран. tangoservice. Танго. OnTangoUpdateListener; импорт com. Google. кран. tangoservice. TangoConfig; импорт com. Google. кран. tangoservice. TangoCoordinateFramePair; импорт com. Google. кран. tangoservice. TangoPoseData; // Здесь больше объявлений импорта публичный класс MainActivity extends Activity {@Override protected void onCreate (Bundle savedInstanceState) {супер. OnCreate (savedInstanceState); setContentView (R. layout. activity_main); mTranslationTextView = (TextView) findViewById (R. id. translation_text_view); mRotationTextView = (TextView) findViewById (R. id. rotation_text_view); // Мгновенный клиент Tango mTango = новый Tango (this); // Настройка конфигурации Tango для отслеживания движения mConfig = mTango. getConfig (TangoConfig. CONFIG_TYPE_CURRENT); MCONFIG. putBoolean (TangoConfig. KEY_BOOLEAN_MOTIONTRACKING, true);} @Override protected void onActivityResult (int requestCode, int resultCode, Intent data) {try {setTangoListeners ();} catch (TangoErrorException e) {} try {mTango. connect (mConfig);} catch (TangoOutOfDateException e) {} catch (TangoErrorException e) {}} private void setTangoListeners () {// Выбор пар координат кадра ArrayList framePairs = new ArrayList (); framePairs. add (новый TangoCoordinateFramePair (TangoPoseData. COORDINATE_FRAME_START_OF_SERVICE, TangoPoseData. COORDINATE_FRAME_DEVICE)); // Добавить прослушиватель для данных tango pose mTango. connectListener (framePairs, new OnTangoUpdateListener () { @Override public void onPoseAvailable (позыв TangoPoseData) { // Форматирование данных перевода и вращения Data String translationMsg = String. format (sTranslationFormat, pose. перевод [0], поза, перевод [1], поза, перевод [2]); окончательное строковое вращениеMsg = строковый формат (sRotationFormat, pose. rotation [0], поворот [1], поворот [2], posose. rotation [3]); // Отображать данные в TextViews runOnUiThread (new Runnable () { @Override public void run () { mTranslationTextView. setText (translationMsg); mRotationTextView setText (rotationMsg); } } ); } } );}}

То, что вы видите здесь, это не целая 210-строчная MainActivity класса, но некоторые важные моменты этого класса были обобщены.

Посмотрите на класс MainActivity. Сердце кода действия находится внутри анонимного класса OnTangoUpdateListener с его методом onPoseAvailable.

В повседневной жизни Поза - это то, как вы ориентируете голову по сравнению с вашим окружением. И в терминологии Project Tango, pose - это то, как вы ориентируете устройство относительно его окружения. Поза описывается семью числами, такими как цифры перевода и вращения, которые вы видите на предыдущем рисунке.

Когда аппаратное обеспечение устройства воспринимает новую позу, программное обеспечение вызывает метод onPoseAvailable. Метод onPoseAvailable должен отображать сообщения, такие как Translation: -2.6622, 3. 214773, 2. 824979 в текстовых полях деятельности.

Но есть проблема. В правилах потоковой передачи Android указано, что ни один поток, отличный от основного потока, не может обновлять пользовательский интерфейс приложения. В классе MainActivity экземпляр OnTangoUpdateListener запускается в потоке полностью. Таким образом, метод onPoseAvailable экземпляра не может отображать сообщения в текстовых полях активности, напрямую вызывая mTranslationTextView. setText и mRotationTextView. setText.

Но поскольку профессор Фарнсворт в Футурама всегда говорит, есть «Хорошие новости, все! «Android имеет метод runOnUiThread для таких случаев. Параметр метода runOnUiThread - это класс, реализующий интерфейс Runnable от Java. В коде приложения QuickStart метод запуска этого класса отображает текст от имени экземпляра OnTangoUpdateListener. В конце пользователь устройства видит данные перевода и вращения, и все хорошо.

Разработка для Project Tango - dummies

Выбор редактора

Как записать диктовку для Dragon NaturallySpeaking - манекены

Как записать диктовку для Dragon NaturallySpeaking - манекены

, Когда вы записываете текст для NaturallySpeaking для транскрибирования, говорите этот текст так же, как если бы вы диктовали прямо в NaturallySpeaking. Однако некоторые аспекты записи делают этот процесс немного иным, чем диктуют непосредственно NaturallySpeaking. Использование команд, например, сложно, потому что вы не можете видеть транскрипцию в процессе. Кроме того, диктуя в ...

Как прервать и извлечь выгоду в NaturallySpeaking - манекены

Как прервать и извлечь выгоду в NaturallySpeaking - манекены

Диктует не совсем так, как говорить. В отличие от человеческих слушателей, Dragon NaturallySpeaking не может интерпретировать перегибы и паузы в наших голосах как знаки препинания. Когда вы диктуете, вы должны приложить усилия, чтобы помочь NaturallySpeaking, хотя NaturallySpeaking делает некоторые акцентирования и заглавные буквы автоматически. Вот как работать с NaturallySpeaking, чтобы ваши слова были правильно заглавные ...

Как запустить мастер NaturallySpeaking 12 New User Wizard - манекены

Как запустить мастер NaturallySpeaking 12 New User Wizard - манекены

, Чтобы получить представление о вашем бренде новое программное обеспечение Dragon NaturallySpeaking, вы используете мастер профилей пользователей. Вы можете запустить мастер одним из двух способов: автоматически при первом запуске NaturallySpeaking после установки щелкните значок «Дракон» на рабочем столе (или на экране «Пуск» в Windows 8). Выберите ...

Выбор редактора

Как организовать свою свадебную хронику - манекены

Как организовать свою свадебную хронику - манекены

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

Как сохранить свадебные цветочные затраты Вниз - манекены

Как сохранить свадебные цветочные затраты Вниз - манекены

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

Как организовать свадебное шествие - манекены

Как организовать свадебное шествие - манекены

Свадебная процессия или вход в свадебный вечер происходит в определенный порядок, который завершается невестой. Свадебное шествие начинается после того, как все гости сидят, и начинается процесс (музыка). Свадебные шествия различаются в зависимости от стиля церемонии, но традиционный порядок появления (особенно для христианина ...

Выбор редактора

Как изменить блог WordPress - манекены

Как изменить блог WordPress - манекены

После установки блога WordPress, вы можете изменить блог в соответствии с веб-сайтом, с которым он связан. Вы можете изменить существующую тему (скин) или выбрать один из альтернатив, доступных после установки WordPress. Убедитесь, что выбранный вами шаблон похож на ваш основной сайт. Тем не менее, WordPress ...

Как организовать ссылки в блоге WordPress - манекены

Как организовать ссылки в блоге WordPress - манекены

Панель инструментов WordPress позволяет организовывать ваши ссылки, создавая категории ссылок в Личном кабинете, а затем назначая ссылки на соответствующие категории. Эти категории позволяют делиться ссылками с другими блогами и предоставлять ресурсы другим сайтам своим читателям. Чтобы создать категории ссылок, выполните следующие действия: По умолчанию WordPress предоставляет одну категорию ссылок ...

Как управлять медиафайлами WordPress - манекенами

Как управлять медиафайлами WordPress - манекенами

WordPress Media Library обеспечивает удобство и простоту способ отслеживания и упорядочивания медиафайлов в папке Uploads. В конце концов, если вы долго ведете блог WordPress, вы можете легко забыть, какие файлы вы загрузили с помощью загрузчика WordPress. Чтобы использовать загрузчик файлов для поиска ...