Přejít k navigační liště

Zdroják » Mobilní vývoj » Úvod do vývoje pro Google Glass pomocí Android GDK

Úvod do vývoje pro Google Glass pomocí Android GDK

Články Mobilní vývoj

Chytré brýle Google Glass vstupují do závěrečné fáze beta-testování – v USA si již prototyp může koupit kdokoli bez pozvánky. Vývoj aplikací pro tuto platformu je vcelku rychlý a jednoduchý, zvláště pokud máte nějakou zkušenost s vývojem pro Android. V tomto článku si ukážeme vývoj jednoduché aplikace od píky. Aplikace se bude spouštět hlasovým příkazem a prozradí, kdo má dnes svátek.

Úvodem musím zmínit, že existují dvě cesty vývoje pro Glass:

Mirror API je vlastně webové REST API, které můžete volat z libovolného programovacího jazyka. Nekomunikujete přímo s brýlemi, ale s Google servery. Tento způsob se hodí především na různé notifikace z webových služeb a „pushování“ obsahu do brýlí.

Pomocí GDK plně využijete potenciál zařízení – výsledkem je Android aplikace, která běží přímo na brýlích, má přímý přístup k hardware a může provádět operace v reálném čase a offline. Právě na GDK bude zaměřen dnešní článek.

Další podstatná věc je, že v současné době na Google Glass neexistuje emulátor. Google trvrdí, že zařízení má tak jiné uživatelské rozhraní, že nejde dost dobře naemulovat a je potřeba aplikaci vyvíjet na reálném hardware, aby aplikace stála za to. Na vývoj aplikace se používají standardně dostupné nástroje pro vývoj Android aplikací, ale finální test by měl proběhnout na zařízení. Dnes jich je v ČR okolo dvaceti a tento počet rychle roste. Není zas takový problém si brýle od někoho půjčit. Navíc GUG.cz čas od času organizuje hackathony, kde jsou brýle dostupné.

Nebudu dlouho chodit okolo horké kaše a začneme rovnou s vývojem aplikace na zjištění, kdo má dnes svátek. Pokud vás zajímá víc high-level pohled na design a vývoj aplikací, doporučuji výbornou dokumentaci nebo některou z mých přednášek. Aplikace, která během tohoto článku vznikne se bude spouštět hlasovým příkazem „OK Glass, who celebrates name day today?“, stáhne informace z internetu pomocí Svátky API a výsledek se zobrazí jako jednoduchá karta.

Hello world aplikace

Prvním krokem je stažení Android Studia. Po nainstalování klikněte na Configure - SDK Manager a stáhněte Glass Development Kit takto:

sdk-manager

Nyní založte nový projekt s tímto nastavením:

new-project
a dokončete vytvoření projektu ponecháním defaultních hodnot.

V souboru app/build.gradle je potřeba upravit hodnotu compileSdkVersion takto:

android {
    compileSdkVersion "Google Inc.:Glass Development Kit Preview:19"
    buildToolsVersion "19.1.0"
    ...

Poslední změna od klasických Android aplikací je téma aplikace. Změnou tématu dosáhnete správných fontů, barvy písem atd. Upravte soubor app/src/main/res/values/styles.xml takto:

    <style name="AppTheme" parent="android:Theme.DeviceDefault">
    </style>

Nyní již máte všechno potřebné k Hello World aplikaci! V nastavení Glass povolte USB Debugging, připojte Glass přes USB a pusťte tam aplikaci (přes tlačítko Run v Android Studiu). Výsledek bude vypadat takto:

Hello world on Google Glass

Komunikace s API a zobrazení výsledku na kartě

Nyní se již pustíme do tvorby samotné svátkové aplikace. Prvním krokem je API vrstva na stahování svátků. Využijeme zde Svátky API a knihovnu Retrofit. Tento postup není nijak specifický pro Glass, můžete ho využít v libovolné androidí aplikaci. Nejprve je potřeba přidat závislost na knihovnu Retrofit do app/build.gradle: (po změně dependencí nezapomeňte kliknout na Sync with Gradle)

dependencies {
    compile 'com.squareup.retrofit:retrofit:1.6.+'
}

a do AndroidManifest.xml právo na internet:

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

Knihovna Retrofit výrazně usnadňuje práci s REST API. Vytvořte Java třídu Api.java , a tento kód je všechno, co potřebujete ke komunikaci se Svátky API:

public class Api {
    public interface NameDays {
        @GET("/json")
        void today(Callback<List<NameDay>> callback);
    }

    public class NameDay {
        public String date;
        public String name;
    }

    public static NameDays getNameDays() {
        return new RestAdapter.Builder().setEndpoint("http://svatky.adresa.info").build().create(NameDays.class);
    }
}

Nyní vypíšeme kdo má dnes svátek, na kartu uživatelského rozhraní. Mohli bychom uživatelské rozhraní tvořit klasickými androidími layouty, ale pro tento účel se lépe hodí jednoduché javové API Card. Upravte třídu MainActivity.java takto:

public class MainActivity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        Api.getNameDays().today(new Callback<List<Api.NameDay>>() {
            @Override
            public void success(List<Api.NameDay> nameDays, Response response) {
                show(nameDays.get(0).name);
            }
            @Override
            public void failure(RetrofitError retrofitError) {
                show(retrofitError.getMessage());
            }
        });
    }

    private void show(String text) {
        Card card = new Card(this);
        card.setText(text);
        card.setFootnote("celebrates name day today");
        setContentView(card.getView());
    }
}

A většina aplikace je hotová! Zkuste si spustit aplikaci na zařízení a uvidíte, kdo má dnes svátek.

Screenshot from final Glass app Svátky

Napojení na hlasové příkazy

Nyní zbývá jen se napojit na hlasové příkazy. Nejlepší je vybrat si již z předdefinovaných příkazů. V tomto případě ale vhodný příkaz není, vytvoříme si tedy vlastní. Začněte přidáním práva do manifestu, které je nutné pro vlastní příkazy:

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

Do manifestu k naší jediné aktivitě přidejte intent filter na hlasový příkaz:

<intent-filter>
   <action android:name="com.google.android.glass.action.VOICE_TRIGGER"/>
</intent-filter>
<meta-data
    android:name="com.google.android.glass.VoiceTrigger"
    android:resource="@xml/trigger_name_day"/>

A zbývá už jen vytvořit xml soubor definující voice trigger. Vytvořte ho v app/src/main/res/xml/trigger_name_day.xml s obsahem:

<?xml version="1.0" encoding="utf-8"?>
<trigger keyword="who celebrates name day today">
    <constraints network="true" />
</trigger>

A to je vše! Nahrajte aplikaci do Glass a zkuste si říct hlasový příkaz.

Voice commands for Svátky

Závěr

Jak vidíte, vytvoření smysluplné aplikace pro Google Glass nezabere více než půl hodiny. Kompletní zdrojový kód aplikace si můžete prohlédnout na GitHubu. Pokud vás zajímá kód pokročilejší aplikace, projděte si kód mojí aplikace Glasquare (klient pro Foursquare). OK Glass, let’s code!

Komentáře

Subscribe
Upozornit na
guest
2 Komentářů
Nejstarší
Nejnovější Most Voted
Inline Feedbacks
View all comments
expee

Ahoj, díky moc za článek. Nakonec se mi vše podařilo, jen jsem měl problém s nastavením USB Debuggingu, protože jsem moc netušil, kde to je.

Těším se na další části.

Averon

Děkuji moc,

článek je super, sice tohle si mě naučil na GDG Garage, ale je to super zopakování :-). Další věc co chci zkusit aby glassy ti to přečetli.

Enum a statická analýza kódu

Mám jednu univerzální radu pro začínající programátorty. V učení sice neexistují rychlé zkratky, ovšem tuhle radu můžete snadno začít používat a zrychlit tak tempo učení. Tou tajemnou ingrediencí je statická analýza kódu. Ukážeme si to na příkladu enum.