Статьи

Дополненная реальность: начало работы на Android

Возможно, вы слышали об дополненной реальности — сейчас это актуальная тема для мобильных устройств. Узнайте, что такое дополненная реальность и как вы можете использовать эту технику в своих приложениях для Android в этой вводной статье.

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

«Дополненная реальность (AR) — это термин для прямого прямого или косвенного представления о физической, реальной среде, элементы которой дополняются виртуальным компьютерным сенсорным вводом, таким как звук или графика. Он связан с более общей концепцией называется опосредованной реальностью, в которой представление о реальности изменено (возможно, даже уменьшено, а не дополнено) компьютером. В результате технология функционирует, улучшая текущее восприятие реальности «.

В последнее время разработчики мобильных приложений начали использовать методы дополненной реальности, беря данные с камеры и накладывая изображения в режиме реального времени, обычно объединяясь с изображением, чтобы показать, где что-то находится в реальном мире (например, значок для ресторана) или, возможно, виртуальный знак или объект.

Это не значит, что сегодня нет других определений или более слабых определений или реализаций AR. Можно, например, утверждать, что Google Sky Map — это дополненная реальность, хотя она и не отображает изображение с камеры, но делает практически все, что может сделать приложение дополненной реальности (см. Рисунок ниже). Не стоит слишком увлекаться определением и просто подумайте о возможностях, которые ваши приложения могут извлечь выгоду из «наложения» метаданных на реальные живые данные. Например, eBay недавно объявил, что они добавляют функцию дополненной реальности в свое модное приложение. Эта функция позволяет пользователям видеть себя в разных парах солнцезащитных очков.

Google Sky Map используется для поиска Whirlpool Galaxy, перемещая телефон вокруг

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

Уже чувствуешь себя подавленным? Возможно, у вас есть данные, которые вы хотите, чтобы другие могли исследовать в среде дополненной реальности, но вы не хотите полностью реализовывать поддержку AR в своих собственных приложениях. Если аспект объединения всего этого в последовательной реализации кажется излишним для вашего проекта, что вы будете делать?

Попробуйте использовать существующий AR-сервис, такой как Layar. Они предоставляют клиентов для платформ Android и iPhone. Например, служба Layar позволяет любому добавлять данные, которые могут отображаться для пользователей, и обрабатывает сведения о AR. В качестве бонуса, он также кроссплатформенный, поэтому ваши данные будут доступны для их клиентов Android и iPhone.

Фигура дополненной реальности

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

Ваша типичная реализация AR состоит из двух основных частей: «живые» данные, которые мы увеличиваем, и «метаданные», используемые для дополнения. Для примера с наложением в реальном мире живые данные, которые мы добавляем, обычно представляют собой комбинацию информации в видоискателе камеры, обращенной назад, текущего местоположения и направления, к которому обращено устройство. Эта информация затем сопоставляется со списком «метаданных» данных.

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

Источник данных дополнения (например, список местоположений автозаправочных станций) может быть любым, но часто это предварительно загруженная база данных или веб-служба, которая может фильтровать объекты поблизости.

Остальная часть реализации AR состоит в использовании API-интерфейсов камеры устройства, графических API-интерфейсов и API-интерфейсов датчиков для наложения данных дополнения на живые данные и создания приятного дополненного опыта.

Отображение прямой трансляции с камеры Android — это реальность в дополненной реальности. Данные камеры доступны с помощью API, доступных в пакете android.hardware.Camera.

Если вашему приложению не нужно анализировать данные фрейма, тогда целесообразно запустить предварительный просмотр обычным способом, используя объект SurfaceHolder с методом setPreviewDisplay (). С помощью этого метода вы сможете отобразить то, что камера записывает на экране для использования. Однако, если вашему приложению нужны данные фрейма, они доступны путем вызова метода setPreviewCallback () с допустимым объектом Camera.PreviewCallback.

Недостаточно просто использовать камеру для большинства приложений дополненной реальности. Вам также необходимо определить местоположение устройства (и, следовательно, его пользователя). Для этого вам потребуется доступ к точной или грубой информации о местоположении, обычно доступной через API, доступные в пакете android.location, с его классом LocationManager. Таким образом, ваше приложение может прослушивать события местоположения и использовать их, чтобы определить, где находятся «живые» объекты, представляющие интерес, относительно устройства.

Если вы создаете приложение с дополненной реальностью, которое будет анализировать видеокамеру камеры с помощью компьютерного зрения (то есть, когда компьютер «видит» вещи, извлекая всю необходимую ему информацию из входных изображений), чтобы определить, где разместить данные дополнения, вы возможно, не нужно знать местоположение устройства. Использование компьютерного зрения само по себе является глубокой темой, которая в настоящее время исследуется. Большинство решений, которые мы видели, используют библиотеки OpenCV. Более подробную информацию об OpenCV можно найти на вики OpenCV .

Когда данные о местоположении не используются, часто используется «маркер» или «тег». То есть легко узнаваемый объект, в котором можно быстро определить ориентацию и масштаб объекта для рисования. Например, AndAR использует простой маркер, чтобы нарисовать куб над ним, в качестве теста способностей AR.

AndAR использует маркер, чтобы показать куб в разных ориентациях и масштабах

Данные датчика часто важны для реализации AR. Например, знание ориентации телефона обычно очень полезно при попытке синхронизировать данные с каналом камеры.

Чтобы определить ориентацию устройства Android, вам нужно использовать APIS, доступный в пакете android.hardware.SensorManager. Вот некоторые датчики, к которым вы можете подключиться:

  • Sensor.TYPE_MAGNETIC_FIELD
  • Sensor.TYPE_ACCELEROMETER
  • Sensor.TYPE_ROTATION_VECTOR

Использование датчиков, позволяющих пользователю перемещать устройство и видеть изменения на экране по отношению к нему, действительно погружает пользователя в приложения в захватывающей манере. Когда показывается камера, это очень важно, но в других приложениях, таких как те, которые используют предварительно записанные данные изображения (например, с Google Sky Map или Street View), этот метод все еще очень полезен и интуитивно понятен для пользователей.

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

Вы можете читать в каждом кадре с канала камеры, добавлять к нему наложение и рисовать кадр на экране (возможно, в виде растрового изображения или, возможно, в качестве текстуры на трехмерной поверхности). Например, вы можете использовать класс android.hardware.Camera.PreviewCallback, который позволяет вашему приложению получать покадровые изображения.

В качестве альтернативы, вы можете использовать стандартный SurfaceHolder с объектом android.hardware.Camera и просто рисовать поверх поверхности при необходимости.

Наконец, то, что и как вы рисуете, зависит от ваших индивидуальных требований к приложениям — в Android доступны как двухмерные, так и трехмерные графические API-интерфейсы, особенно API-интерфейсы в пакетах android.graphics и android.opengl.

Так откуда берутся данные дополнения? Вообще говоря, вы либо будете получать эти данные из своей собственной базы данных, которая может храниться локально, либо из онлайн-базы данных где-то через веб-сервис или облачную службу. Если вы предварительно загрузили данные дополнения на устройство, вы, вероятно, захотите использовать базу данных SQLite для быстрого и простого поиска; API SQLite вы найдете в пакете android.database.sqlite. Для веб-данных вы захотите подключиться к веб-службе, используя обычные методы: HTTP и (обычно) синтаксический анализ XML. Для этого вы можете просто использовать класс java.net.URL с одним из классов синтаксического анализа XML, таким как класс XmlPullParser, для анализа результатов.

Дополненная реальность — это широкая тема, которая затрагивает многие аспекты разработки Android и множество API. Из этого руководства вы узнали, что такое дополненная реальность и какие компоненты Android задействованы (с помощью соответствующих API-интерфейсов Android). Теперь вы можете объединить эти новые знания с тем, что вы знаете о Android SDK, чтобы улучшить ваши существующие приложения или создавать новые приложения дополненной реальности.

Разработчики мобильных приложений Лорен Дарси и Шейн Кондер являются соавторами нескольких книг по разработке Android: углубленная книга по программированию под названием « Разработка беспроводных приложений для Android» и « Разработка Android-приложений Sams TeachYourself за 24 часа» . Когда они не пишут, они тратят свое время на разработку мобильного программного обеспечения в своей компании и оказание консультационных услуг. С ними можно связаться по электронной почте [email protected] , через их блог на androidbook.blogspot.com и в Твиттере @androidwireless .

Купить Android-разработку беспроводных приложений, 2-е издание Купить Sam's Teach Yourself для Android-разработки приложений в течение 24 часов Код Мамламбо в Код-Каньоне