+ All Categories
Transcript
Page 1: Jak vyvinout úspěšnou aplikaci pro Google Glass (Martin Pelant, eMan)

Jak vyvinout úspěšnou aplikaci pro Google GlassMartin Pelant

Page 2: Jak vyvinout úspěšnou aplikaci pro Google Glass (Martin Pelant, eMan)

Prism: 640x360 (25" HDTV as seen from 8')

Camera: 5 MP, 720p videos

CPU: OMAP 4430 CPU, dual-core

Memory: 2 GB RAM, 12 GB usable flash memory

Battery: 570 mAh, (1 day of typical use)

Connectivity: Wi-Fi, Bluetooth 4.0

Sound: Bone Conduction Transducer, microphone

Other: ambient light, proximity, IR sensor; gyroscope;

accelerometer; compass

OS: Android 4.4

Weight: about 43 g

Page 3: Jak vyvinout úspěšnou aplikaci pro Google Glass (Martin Pelant, eMan)
Page 4: Jak vyvinout úspěšnou aplikaci pro Google Glass (Martin Pelant, eMan)
Page 5: Jak vyvinout úspěšnou aplikaci pro Google Glass (Martin Pelant, eMan)
Page 6: Jak vyvinout úspěšnou aplikaci pro Google Glass (Martin Pelant, eMan)
Page 7: Jak vyvinout úspěšnou aplikaci pro Google Glass (Martin Pelant, eMan)
Page 8: Jak vyvinout úspěšnou aplikaci pro Google Glass (Martin Pelant, eMan)
Page 9: Jak vyvinout úspěšnou aplikaci pro Google Glass (Martin Pelant, eMan)

Design for Glass

Page 10: Jak vyvinout úspěšnou aplikaci pro Google Glass (Martin Pelant, eMan)

Don't get in the way

Page 11: Jak vyvinout úspěšnou aplikaci pro Google Glass (Martin Pelant, eMan)

Keep It relevant

Page 12: Jak vyvinout úspěšnou aplikaci pro Google Glass (Martin Pelant, eMan)

Avoid the Unexpected

Page 13: Jak vyvinout úspěšnou aplikaci pro Google Glass (Martin Pelant, eMan)

Development

● Mirror API

o Server side development

o Static cards

● Glass Development Kit

o Offline app that runs on Glass directly

o Live cards & full screen apps (Immersion)

Page 14: Jak vyvinout úspěšnou aplikaci pro Google Glass (Martin Pelant, eMan)
Page 16: Jak vyvinout úspěšnou aplikaci pro Google Glass (Martin Pelant, eMan)
Page 17: Jak vyvinout úspěšnou aplikaci pro Google Glass (Martin Pelant, eMan)

Static card

Page 18: Jak vyvinout úspěšnou aplikaci pro Google Glass (Martin Pelant, eMan)

Timeline cards● text● HTML● images● videos● map● location (option to start directions)● menu items● bundles

Playground

Page 19: Jak vyvinout úspěšnou aplikaci pro Google Glass (Martin Pelant, eMan)

POST /mirror/v1/timeline HTTP/1.1

Host: www.googleapis.com

Authorization: Bearer {auth token}

Content-Type: application/json

Content-Length: 26

{ "text": "Hello world" }

Page 20: Jak vyvinout úspěšnou aplikaci pro Google Glass (Martin Pelant, eMan)

Menu items● reply (speech input)● read aloud● share (sharing contacts)● get directions● make a call● delete● pin● custom actions

Page 21: Jak vyvinout úspěšnou aplikaci pro Google Glass (Martin Pelant, eMan)

{

"text": "Are you ready for game night this Saturday?",

"menuItems": [

{

"action": "REPLY"

}

]

...

}

Page 22: Jak vyvinout úspěšnou aplikaci pro Google Glass (Martin Pelant, eMan)

Subscriptions● menu item changes● location changes

o limit 1 callback per 10 min

● like Android intents● mime-types● voice commands:

o “take a note”o “post an update”

Sharing contacts

Page 23: Jak vyvinout úspěšnou aplikaci pro Google Glass (Martin Pelant, eMan)

Glass Development Kit

● Android SDK API v 19● no touchscreen● small screen

Page 24: Jak vyvinout úspěšnou aplikaci pro Google Glass (Martin Pelant, eMan)
Page 25: Jak vyvinout úspěšnou aplikaci pro Google Glass (Martin Pelant, eMan)
Page 26: Jak vyvinout úspěšnou aplikaci pro Google Glass (Martin Pelant, eMan)

<style name="CustomTheme" parent=

"@android:style/Theme.DeviceDefault"

/>

android {

compileSdkVersion "Google Inc.:Glass Development Kit Preview:19"

…}

Page 27: Jak vyvinout úspěšnou aplikaci pro Google Glass (Martin Pelant, eMan)

Card card1 = new Card(context);

card1.setText("This card has a footer.");

card1.setFootnote("I'm the footer!");

View card1View = card1.getView();

Page 28: Jak vyvinout úspěšnou aplikaci pro Google Glass (Martin Pelant, eMan)
Page 29: Jak vyvinout úspěšnou aplikaci pro Google Glass (Martin Pelant, eMan)

res/xml/<my_voice_trigger>.xml

<?xml version="1.0" encoding="utf-8"?>

<trigger command="PLAY_A_GAME" />

<activity | service ...>

<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/my_voice_trigger" />

</activity | service>

AndroidManifest.xml

Page 30: Jak vyvinout úspěšnou aplikaci pro Google Glass (Martin Pelant, eMan)

Unlisted commands permission

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

res/xml/<my_voice_trigger>.xml

<?xml version="1.0" encoding="utf-8"?>

<trigger keyword="start my app" />

Page 31: Jak vyvinout úspěšnou aplikaci pro Google Glass (Martin Pelant, eMan)

res/xml/<my_voice_trigger>.xml

<?xml version="1.0" encoding="utf-8"?>

<trigger command="TAKE_A_NOTE">

<input prompt="@string/glass_voice_prompt" />

</trigger>

Page 32: Jak vyvinout úspěšnou aplikaci pro Google Glass (Martin Pelant, eMan)

res/xml/<my_voice_trigger>.xml

<?xml version="1.0" encoding="utf-8"?>

<trigger command="POST_AN_UPDATE">

<constraints

microphone="true"

camera="true"

network="true" />

</trigger>

Page 33: Jak vyvinout úspěšnou aplikaci pro Google Glass (Martin Pelant, eMan)

Immersion

Page 34: Jak vyvinout úspěšnou aplikaci pro Google Glass (Martin Pelant, eMan)

Menu

The same onCreateOptionsMenu from Android SDK

public class MainActivity extends Activity { // ... @Override public boolean onKeyDown(int keyCode, KeyEvent event) { if (keyCode == KeyEvent.KEYCODE_DPAD_CENTER) { openOptionsMenu(); return true; } return super.onKeyDown(keyCode, event); }}

Page 35: Jak vyvinout úspěšnou aplikaci pro Google Glass (Martin Pelant, eMan)

Voice commands

Page 36: Jak vyvinout úspěšnou aplikaci pro Google Glass (Martin Pelant, eMan)

Voice commands

@Overridepublic boolean onCreatePanelMenu(int featureId, Menu menu) { if (featureId == WindowUtils.FEATURE_VOICE_COMMANDS) { menu.add("Connect").setOnMenuItemClickListener(...);

menu.add("Scan").setOnMenuItemClickListener(...);menu.add("Cancel").setOnMenuItemClickListener(...);

} // Pass through to super to setup touch menu. return super.onCreatePanelMenu(featureId, menu);}

getWindow().requestFeature(WindowUtils.FEATURE_VOICE_COMMANDS);

Page 37: Jak vyvinout úspěšnou aplikaci pro Google Glass (Martin Pelant, eMan)

Live card

Page 38: Jak vyvinout úspěšnou aplikaci pro Google Glass (Martin Pelant, eMan)

Creating live cards

TimelineManager tm = TimelineManager.from(context);

mLiveCard = tm.createLiveCard(LIVE_CARD_TAG);

mLiveCard.setViews(new RemoteViews(context.getPackageName(),

R.layout.card_text));

mLiveCard.publish(LiveCard.PublishMode.REVEAL); // or SILENT

Page 39: Jak vyvinout úspěšnou aplikaci pro Google Glass (Martin Pelant, eMan)

Updating live cards

mRemoteViews.setTextViewText(R.id.text, "new message");

mLiveCard.setViews(mRemoteViews);

Removing live cards

mLiveCard.unpublish();

Page 40: Jak vyvinout úspěšnou aplikaci pro Google Glass (Martin Pelant, eMan)

Menu in live cards

Page 41: Jak vyvinout úspěšnou aplikaci pro Google Glass (Martin Pelant, eMan)

Starting menu activity

Intent menuIntent = new Intent(this,MenuActivity.class);

mLiveCard.setAction(PendingIntent.getActivity(this, 0,

menuIntent, 0));

mLiveCard.publish(LiveCard.PublishMod

e.REVEAL);

Page 42: Jak vyvinout úspěšnou aplikaci pro Google Glass (Martin Pelant, eMan)

@Override public void onAttachedToWindow() { super.onAttachedToWindow(); openOptionsMenu(); }

@Override public void onOptionsMenuClosed(Menu menu) { // Nothing else to do, closing the activity. finish(); }

Menu activity

Page 43: Jak vyvinout úspěšnou aplikaci pro Google Glass (Martin Pelant, eMan)

Making menu activity transparent

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

<item name="android:windowBackground">@android:color/transparent

</item> <item name="android:colorBackgroundCacheHint">@null</item>

<item name="android:windowIsTranslucent">true</item> <item

name="android:windowAnimationStyle">@null</item></style>

Page 44: Jak vyvinout úspěšnou aplikaci pro Google Glass (Martin Pelant, eMan)
Page 45: Jak vyvinout úspěšnou aplikaci pro Google Glass (Martin Pelant, eMan)

More infohttps://developers.google.com/glass/

Page 46: Jak vyvinout úspěšnou aplikaci pro Google Glass (Martin Pelant, eMan)

Field trip

Page 47: Jak vyvinout úspěšnou aplikaci pro Google Glass (Martin Pelant, eMan)

Glass Tesla

Page 48: Jak vyvinout úspěšnou aplikaci pro Google Glass (Martin Pelant, eMan)

LynxFit

Page 49: Jak vyvinout úspěšnou aplikaci pro Google Glass (Martin Pelant, eMan)

Word Lens

Page 50: Jak vyvinout úspěšnou aplikaci pro Google Glass (Martin Pelant, eMan)

Google Play Music

Page 51: Jak vyvinout úspěšnou aplikaci pro Google Glass (Martin Pelant, eMan)
Page 52: Jak vyvinout úspěšnou aplikaci pro Google Glass (Martin Pelant, eMan)
Page 53: Jak vyvinout úspěšnou aplikaci pro Google Glass (Martin Pelant, eMan)

Q/A

http://www.google.com/moderator/#1/e=208f1b&[email protected]


Top Related