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

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.
Nálepky:
Úvodem musím zmínit, že existují dvě cesty vývoje pro Glass:
- Mirror API a
- Glass Development Kit (GDK).
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:
Nyní založte nový projekt s tímto nastavením:
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:
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.
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.
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!
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.
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.