google glass meetup 3/3 - 8 janvier 2014
DESCRIPTION
Meetup #Glasscamp organisé le 08 Janvier 2014 à Paris dans les locaux d'Epitech.TRANSCRIPT
K
b
8
5
a
>
[
• GlassCamp : le principe, la communauté, les règles à respecter
• Fonctionnement des Glass
• Penser une application Google Glass
• WearScript JS
• GDK (ou Glassware Development Kit)
• Echange libre
• Test des Google Glass
• #Glasscamp
• @glasscamp
• @niji_digital
• @Juli3nD3v
• @dhbismuth
• @mathemagie
• @yanntolila
• @Kamaxe
Développeur : • IOS • Android • Drupal 7 • Symfony 2
Envois un mail à [email protected]
Présentation du groupe
[
Y
COLLABORER
DESIGNER
• DES MEETUP
• DES CONFÉRENCES
• UN HACKATON LE 17 JANVIER 2014
http://glasscamp.org/apply
03/2013 Distribution des premières Google Glass aux personnes sélectionnées
02/2012 Lancement du projet #IfihadGlass:
04/2013 Livraison du SDK « Mirror API »
Début 2014 Lancement
des Google Glass
B A C D E
Contrôle vocal
Contrôle tactile
•
•
•
Les cartes de la timeline
Navigation dans la timeline
1. Landing page de l’application 2. Personnalisation des notifications
3. Début des notifications
PENSER L’INSTANT PRÉSENT
LE CONTEXTE, LE CONTEXE ET LE CONTEXTE
Lieu Date
Historique Préférences
Présence d’autres Offre en cours
Météo Cours de la bourse
Prochain métro Tube du moment
…
Contenu
Contexte Usage
Usage
Contexte Contenu
Contexte
Contenu Usage
ENRICHIR LA VIE DE SES UTILISATEURS
DONNER LA BONNE INFO AU BON MOMENT
MISER SUR L’INTERACTIVITÉ
USER INTERFACE
A
USER INTERFACE – THE TIMELINE
USER INTERFACE – THE TIMELINE
A
USER INTERFACE
B
USER INTERFACE – ONGOING TASKS
USER INTERFACE - ONGOING TASKS
B
Z
Wearscript (BrandynWhite)
A rapid prototyping solution
Aurélien Fache @mathemagie
●
●
●
●
OpenCV.apk launchy.apk CaptureActivity.apk wearscript.apk
Linux (dedicated
hosting) apt-get install golang git mercurial redis-server +
http://golang.org/
LISTEN on 8080
1/ Setup
WS
JS + HTML (canvas, etc)
2/ Authentification
http://mathemagie.net:8080/
JS API REFERENCE: ● SENSORS : pupil, gps, accelerometer, magneticField,
orientation, gyroscope, light, rotationVector, gravity ● CAMERA (PHOTO, VIDEO)
● WIFI (ON, OFF, SCAN)
● QR code scanner, Text-to-speech
● TIMELINE, CARD MANAGEMENT
● Gesture Recognition : SWIPE_DOWN, LONG_PRESS, etc etc
Les briques s’imbriquent !
Ivan E. Sutherland The ultimate display (1965)
STEVE MANN
“REDUCE THE TIME BETWEEN INTENTION AND ACTION”
Thad Starner
Z
Une librairie Un Add-On
Android SDK Manager
…android-sdk/add-ons/addon-google_gdk-google-15/libs/gdk.jar
12 classes 1 interface
<?xml version="1.0” encoding="utf-8"?> <trigger keyword=”Le Gorafi”> <input prompt=”A la une" /> </trigger>
res/xml/voice_trigger_legorafi
<activity android:name=".ui.glass.HomeGlassActivity" > <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/voice_trigger_legorafi"/> </activity>
AndroidManifest.xml
Appears in
the timeline
Access to
user input
Control
over user
interface
Major uses
Static
Cards
Yes No No, must be
in the form
of aCard
Information
display
without user
interaction
Live Cards
Yes Yes, but
timeline
takes
precedence
Yes, no
restrictions
Rich and
live content
with low
user
interaction
Immersions
No Yes, no
restrictions
Yes, no
restrictions
Rich and
live content
with high
user
interaction
Card card = new Card(this); card.setText("Content"); card.setFootnote("Footnote"); card.addImage(R.drawable.ic_niji); TimelineManager timelineManager = TimelineManager.from(this); timelineManager.insert(card);
Création de la carte
Mais aussi, update, delete, query…
Intent intent = TvPlayerService.getIntent(this, TvPlayerService.ACTION_PLAY); startService(intent); finish();
Création du service
mLiveCard = mTimelineManager.createLiveCard(LIVE_CARD_ID); mLiveCard.setDirectRenderingEnabled(true).getSurfaceHolder().addCallback(mMediaPlayerDrawer); Intent menuIntent = new Intent(this, TvMenuActivity.class); mLiveCard.setAction(PendingIntent.getActivity(this, 0, menuIntent, 0)); mLiveCard.publish(LiveCard.PublishMode.REVEAL);
Création de la carte
<?xml version="1.0" encoding="utf-8"?> <menu xmlns:android="http://schemas.android.com/apk/res/android"> <item android:id="@+id/menu_stop" android:title="Stop" android:icon="@drawable/ic_stop" /> </menu>
Création du menu – res/menu/activity_tv_menu.xml
@Override public boolean onCreateOptionsMenu(Menu menu) { MenuInflater inflater = getMenuInflater(); inflater.inflate(R.menu.activity_tv_menu, menu); return true; }
TvMenuActivity.java
… @Override public void onResume() { super.onResume(); openOptionsMenu(); } @Override public boolean onOptionsItemSelected(MenuItem item) { // Handle item selection. switch (item.getItemId()) { case R.id.menu_stop: stopService(new Intent(this, TvPlayerService.class)); return true; default: return super.onOptionsItemSelected(item); } } …
TOUT EST POSSIBLE !
mGestureDetector = createGestureDetector(this); mCardScrollView = new CardScrollView(this) { @Override public final boolean dispatchGenericFocusedEvent(MotionEvent event) { if (mGestureDetector.onMotionEvent(event)) { return true; } return super.dispatchGenericFocusedEvent(event); } }; MyAdapter myAdapter = new MyAdapter(); mCardScrollView.setAdapter(myAdapter); setContentView(mCardScrollView);
GestureDetector gestureDetector = new GestureDetector(context); //Create a base listener for generic gestures gestureDetector.setBaseListener( new GestureDetector.BaseListener() { @Override public boolean onGesture(Gesture gesture) { Log.d("onGesture", gesture.name()); if (gesture == Gesture.TAP) { // do something on tap return true; } else if (gesture == Gesture.TWO_TAP) { // do something on two finger tap return true; } else if (gesture == Gesture.SWIPE_RIGHT) { // do something on right (forward) swipe return false; } else if (gesture == Gesture.SWIPE_LEFT) { // do something on left (backwards) swipe return false; } return false; } });
CAPTURE VIDEO AFFICHAGE RÉALITÉ AUGMENTÉE GPS CAPTEUR DE MOUVEMENT VOICE RECOGNITION COLOR RECOGNITION …
Z
SEUL ?
EMULATEUR SUR SMARTPHONE ANDROID
GDK ? MIRROR API
PLAYGROUND
WEARSCRIPT
+
@glasscamp @dhbismuth @mathemagie @yanntolila @KamaXe
t
Consultant en stratégie numérique au sein de Niji
Etudiant à la Web School Factory
Consultant en stratégie numérique au sein de Niji
Merci à nos sponsors