2. • 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
9. • DES MEETUP
• DES CONFÉRENCES
• UN HACKATON LE 17 JANVIER 2014
http://glasscamp.org/apply
10.
11.
12. 02/2012
03/2013
04/2013
Début 2014
Lancement du projet
#IfihadGlass:
Distribution des premières
Google Glass aux personnes
sélectionnées
Livraison du SDK « Mirror API »
Lancement
des Google Glass
23. LE CONTEXTE, LE CONTEXE ET LE CONTEXTE
Contenu
Contexte
Usage
Contexte
Contenu
Usage
Contexte
Contenu
Usage
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
…
60. Appears in
the timeline
Access to
user input
Control
over user
interface
Major uses
Yes
No
No, must be
in the form
of aCard
Information
display
without user
interaction
Yes
Yes, but
timeline
takes
precedence
Yes, no
restrictions
Rich and
live content
with low
user
interaction
No
Yes, no
restrictions
Yes, no
restrictions
Rich and
live content
with high
user
interaction
Static
Cards
Live Cards
Immersions
61. Création de la carte
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);
Mais aussi, update, delete, query…
62.
63. Création du service
Intent intent = TvPlayerService.getIntent(this,
TvPlayerService.ACTION_PLAY);
startService(intent);
finish();
Création de la carte
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);
64.
65. Création du menu – res/menu/activity_tv_menu.xml
<?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>
TvMenuActivity.java
@Override
public boolean onCreateOptionsMenu(Menu menu) {
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.activity_tv_menu, menu);
return true;
}
68. 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);
69. 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;
}
});