Google glass с точки зрения разработчика

    Google Glass
    Недавно я получил доступ к долгожданным очкам Google Glass и начал писать для них свое приложение.
    О Glass я знал только то, что это — устройство на Android, к которому нужно подключиться через Android Debug Bridge и запускать свои программы.

    Это оказалось не так!

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

    Конечно, и Android программа будет работать, ну лучше ее не писать (хотя бы ближайшее время), и вот почему…

    Все знают, что очки сопрягаются с телефоном пользователя по Bluetooth и получают от него интернет и GPS, и также, что через очки можно отвечать на звонки и отправлять SMS.
    Может показаться, что очки — что-то вроде SmartWatch, этакое дополнение к телефону, но это самостоятельное устройство, которому телефон нужен только как внешнее устройство управления и 3G модем.

    Чем не являются очки, и чего они не могут?
    — Очки не дополняют телефон и почти ничего о нем не знают, по факту они реализуют профиль BT гарнитуры и принимают звонок так же, как и любая другая гарнитура, очки даже не умеют показывать имя контакта (если конечно это не контакт самих очков, но об этом позже). Кстати, гарнитура из очков получилась не самая лучшая, все отмечают «эхо» в трубке и низкую громкость говорящего через очки.
    — Очки не принимают никаких (почти) данных с телефона, даже если поставить на них фирменную программу MyGlass (доступна только в США).
    — На очках нельзя запускать обычные андроид программы, кроме как через ADB. То есть нет возможности сказать «ok glass let's play doom» и получить игру.

    Что же могут очки?
    — Они могут показывать ленту (timeline) из карточек. Лента «бесконечно» уходит в прошлое и содержит все совершенные действия (сделанный звонок, фото или заметку) и уведомления в хронологическом порядке.
    — Они могут иметь «контакты». Контакт в понимании очков это — либо человек (телефонный номер/email), либо приложение (glassware), которому можно расшарить обычные карточки. Как только пользователь выбирает действие Share над карточкой, ему показывают список доступных контактов которые можно скролить по одному. Судя по всему, именно поэтому очки не хранят в себе полный контакт лист, навигироваться по нему было бы невозможно.
    Таймлайн


    Как с этим работать?
    Формально можно написать стандартное андроид приложение, залить его на очки через ADB и постить карточки, используя Timeline API напрямую, но у пользователя не будет никакого контроля над такой программой. Правильный вариант в понимании Google это — Mirror API (https://developers.google.com/glass/v1/reference/).
    Вы создаете веб-приложение, которое запрашивает доступ к очкам через OAuth, с этого момента вам разрешено постить карточки в таймлайн пользователя и создавать контакты. Кроме того, при наличии обратного адреса (именно поэтому нам нужно веб-приложение), можно подписаться на уведомления от очков (об этом позже).

    Что могут карточки?
    — Карточка может быть простым текстом или предоставлять расширенный контент (html, картинки, видео, карты). Контент может быть длинным и разбитым на страницы (Paginating), или даже вложенным (Bundling), тогда вы просто группируете несколько похожих карточек в одну, и первая из них выступает обложкой. К картам можно прикладывать свои слои с маршрутом или интересными точками, API наложит слои и покажет в очках уже готовую картинку. Вот примеры карточек:


    Карта
    Карточка с картой и добавочным слоем маршрута


    — Карточка может иметь меню действий. По умолчанию с карточкой нельзя сделать ничего, даже удалить не получится. Но создатель карточки (ваше приложение) может разрешить выполнять над ней ряд операций. Есть стандартный набор Reply, Delete, Share, Read aloud, Voice call, Navigate, Pin, Open URI, Play Video. Кроме того можно создать любой свой пункт меню. Вот меню уже будет генерировать уведомления для вашего приложения.
    Меню
    Меню Share поверх карточки

    Какие доступны уведомления?
    — Уведомления о действиях над карточкой: когда пользователь что-то сделает (выберет любой пункт меню), вам придет уведомление с уникальным идентификатором карточки и описанием действия. Уведомления приходят на указанный ранее Respond URL, в виде POST запроса, на который надо ответить кодом 200.
    — Уведомления о перемещении очков: если подписаться на Location updates, то раз в 10 минут будет приходить уведомление о последнем известном местонахождении очков (вернее связанного телефона, т.к своего GPS очки не имеют).

    Кроме этого очки оснащены рядом сенсоров: тач-панелью, кнопкой камеры, датчиками поворота, ускорений и компасом ко всему этому можно получить доступ из нативных apk-приложений. Тач-панель не дает координат, а сообщает программе о жестах: свайп, тач, свайп и тач двумя пальцами. На этих жестах и на сигналах от датчиков можно строить взаимодействие в нативном приложении, например, встроенный браузер очков умеет перемещаться по странице, следуя за наклоном головы.
    Если есть желание постить что-то с телефона в очки, то лучший способ — это авторизоваться через OAuth, не указывая callback URL и просто создавать карточки через API (уведомлений приложение на телефоне получить не сможет за неимением собственного URLа). Такой вариант подойдет для программ, которые не предполагают особой реакции на пользовательские действия (напоминания, новости и т.п.)
    АПИ очков быстро развивается, и наверняка скоро появится более легкий способ взаимодействия с очками, но карточки хороши именно тем, что не нагружают очки без дела (батарейка в них не самая мощная), используя единый канал связи. Вся обработка также ложится на серверную часть дополнительно разгружая мощности устройства. В общем, в текущем виде очки — это, в первую очередь, именно средство получения важной информации в режиме реального времени, а не платформа для игр или сложных приложений.

    Так что, даже если у вас еще нет очков, можно уже сейчас подумать над тем, чем имеющийся интерфейс мог бы быть полезен вашей программе.
    П.С. Тем, кто хочет узнать про сами очки лучше начать с официальной страницы, а тем кому не терпится попробовать написать приложение для смартфона стоит начать отсюда (только не забудьте подписать его правильным ключом и зарегистрировать в Google консоли).
    П.П.С. Спасибо Weezlabs за новый девайс.
    Поделиться публикацией
    Комментарии 13
      +11
      Вообщем ждемс Google glass 2.0 c возможностью запускать полноценные приложения, а пока это выглядит как неплохой прототип.
        +9
        Это выглядит как разочарование. Я ждал полноценных программ (а лучше замену телефону), а не карточек и контактов.
          +1
          Это все еще будет. Пока единственные способ запустить программу — из консоли (но потом она уже сама может создать себе карточку, для быстрого доступа).
            +2
            Там сейчас при желании можно хоть gta запустить, мощностей хватает, только вот батарейка сядет за 20-30 минут, поэтому пока не решат проблему с питанием вряд ли что-то кардинально изменится
          +1
          «Очки не дополняют телефон и почти ничего о нем не знают». Значит ли это, что теоретически можно писать программы для glass на других устройствах, apple или winphone?
            +2
            Да, именно так. Хоть на десктоп. Важно только помнить, что вы не получите обратной связи от карточек.
              +2
              Главная мысть в том что Glass используют телефон:
              1) для доступа к интернету, когда вы не находитесь в зоне доступного wi-fi т.к. встроенного радио модуля нет.
              2) если установлено приложение MyGlass (на iOS оно тоже скоро будет) то вы можете управлять частично некоторыми функциями со смартфона
              Но в целом никакого смысла писать приложение под iOS, WP для работы с очками нету, пишите для самих очков это довольно самостоятельный девайс.
              P.S. являюсь владельцем уже 4ый месяц.
              0
              И когда они уже будут продаваться?
                0
                Этот вопрос не ко мне :)
                +8
                На них точно андроид, а не windows phone?)
                  0
                  Интересный момент: «Уведомления о перемещении очков: если подписаться на Location updates, то раз в 10 минут будет приходить уведомление о последнем известном местонахождении очков (вернее связанного телефона, т.к своего GPS очки не имеют)».

                  Навряд ли очки сами шлют каждому приложению уведомление о местоположении, скорее всего они его посылают на сервера Google, откуда оно уже расходится на подписанные приложения.

                  Выходит, у Google будет достаточно актуальная карта расположения всех владельцев очков (вероятно «фича» будет включена по умолчанию).
                  Занятно.
                    +2
                    Если у вас на телефоне включена передача данных гуглу, он и так знает где вы находитесь. У эппла есть аналогичная функциональность.
                      0
                      Именно так, очки связаны с гуглом. Все уведомления (от меню или от GPS) вашей программе приходят уже с сервера.
                      И даже программа MyGlass по большей части лишь дублирует веб-интерфейс myGlass

                    Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

                    Самое читаемое