5mpx Video : 720p Microphone Touchpad Tap one/two fingers Swipe one/two fingers Transducteur Bone conduction Electronique 16 GB 1,2 GHz 1GB RAM Wifi / Bluetooth Un petit bijou technologique …
Rechercher sur Google ! Jouer de la musique ! Envoyer des messages ! Effectuer des appels ! Utiliser la navigation ! Recevoir des notifications ! Prendre des notes ! … … ayant les mêmes fonctionnalités qu’un smartphone …
voix ! « Ok, glass » + commande ! Par le trackpad ! Avec différentes Gestures (taps, swipes, one finger, two fingers) ! Par des boutons physiques ! Pour prendre un photo ou enregistrer une vidéo ! Pour allumer/éteindre les Google Glass ! Avec son corps (tête, yeux, …) ! La détection de mouvement (grâce aux capteurs, accéléromètre, gyroscope, …) ! Le clin d’oeil droit ! Les applications “My Glass” ! Sur smartphone (iOS / Android) ! Sur le web (https://glass.google.com/u/0/myglass)
! Le GDK est en version Preview ! Il est disponible directement dans le SDK manager ! Il ajoute des fonctionnalités dédiées ! La gestion de la voie ! La gestion des gestes du corps ! Un nouveau type d’interface: les Cards Glass Development Kit
à l’utilisateur ? Comment s’authentifier ? Comment scanner ou reconnaître des objets ? Comment proposer une navigation intuitive ? Comment échanger avec votre SI et partager du contenu avec d’autres utilisateurs ?
de l’information à une application ! Interagir avec l’application ! Effectuer une recherche ! … Exemple : Effectuer un virement ou rechercher une information Contraintes ! Les commandes sont « imposées » ! Selon l’usage une connexion réseau est nécessaire Comment gérer la voix ?
gérer la voix de 3 façons différentes ! Les commandes vocale via l’écran d’accueil è afin de lancer directement un Glassware depuis l’écran d’accueil ! Les commandes vocale contextuelles è afin de lancer les items d’un menu directement par la voix ! La reconnaissance vocale è afin de transmettre ce que l’utilisateur dit au sein de son activité Comment gérer la voix ?
de lancer directement un Glassware depuis l’écran d’accueil ! Une ressource XML pour la commande vocale selon une liste définie par Google (è VoiceTriggers.Command) Comment gérer la voix ? res/xml/voice_trigger.xml <?xml version="1.0" encoding="utf-8"?>! <trigger keyword="SEND_MONEY" /> "SEND_MONEY"! "FIND_A_PLACE"! "FIND_A_HOSPITAL"! "FIND_PARKING"! "SHOW_ME_MY_SPEED"! "SHOW_ME_THE_NEWS"! "SHOW_ME_THE_WEATHER"! "START_A_RUN"! "START_A_STOPWATCH"! "START_A_TIMER"! "TAKE_A_PICTURE"! "TAKE_A_NOTE"! "TRANSLATE_THIS"! "PLAY_A_GAME"! Exemple de commandes :
de lancer directement un Glassware depuis l’écran d’accueil ! Déclarer un Intent Filter au sein du Manifest de l’application avec également la possibilité de fournir un icône à la commande vocale Comment gérer la voix ? <activity! android:name=".ui.activity.MainActivity"! android:icon="@drawable/ic_launcher"! android:label="@string/app_name"! android:keepScreenOn="true"! android:immersive="true">! <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" />! </activity>
de lancer directement un Glassware depuis l’écran d’accueil ! Possibilité d’ajouter un prompt afin d’offrir la possibilité à l’utilisateur d’ajouter un message supplémentaire ! Il est également possible de restreindre l’utilisation de la voix selon la disponibilité de certains services au sein des Google Glass (ex : camera, réseau, …) Comment gérer la voix ? <?xml version="1.0" encoding="utf-8"?>! <trigger keyword="SEND_MONEY">! <input prompt="@string/how_much_prompt" /> </trigger> ArrayList<String> voiceResults = getIntent().getExtras().getStringArrayList(RecognizerIntent.EXTRA_RESULTS);
dynamiquement du contenu ! Offrir la possibilité d’interagir avec le contenu (afficher plus de détail, le partager, …) Exemple : lors d’un événement ou la visite d’un musée Contraintes ! Respecter les guidelines Google ! L’information doit être simple et pertinente Comment afficher de l’information à l’utilisateur ?
parties ! Le passé ! Le future / présent ! Les applications appelées « Glasswares » ! Les paramètres pour configurer les Google Glass (WIFI, Bluetooth, …) Home
Pour afficher du texte, des images, des vidéos ou du HTML ! Utilisé pour afficher des notifications (è Mirror API) ! Possibilité d’y invoquer des LiveCards ou de l’Immersion ! Ne peut pas être rafraichie fréquemment
à certaines capacités des Google Glass (ex : accéléromètre, gyroscope, camera, …) ! S’exécute au sein de la timeline ! Peut être mis à jour fréquemment ! Low Frequency Livecards (de l’ordre de la seconde) ! High Frequency Livecards
TimeLine ! Développer votre propre interface (è Activity Android) ! Accès à l’ensemble des capacités des Google Glass (ex : les capteurs, la voix, les gestures, …) ! Attention à respecter les contraintes Google (taille de l’écran, les interactions, gestures) ! Spécifier dans le Manifest android:immersive="true" pour éviter que les Glass se mettent en veille
permet de générer un layout selon différent styles intégrés au GDK Gérer l’interface selon le besoin View view = new CardBuilder(context, CardBuilder.Layout.COLUMNS) .setText(”Bonjour, bienvenue à la Droidcon Paris") .setFootnote(”Session Google Glass à 15h55") .addImage(R.drawable.image) .getView(); .Layout.CAPTION .Layout.TITLE .Layout.ALERT .Layout.ALERT .Layout.AUTHOR .Layout.COLUMN
Assurance ! … Exemple : afficher le solde de mon compte Contraintes ! Pas de claviers sur les Glass ! Dicter un mot de passe n’est pas sécurisé Comment s’authentifier ?
Depuis le site web ou le smartphone ! Contient un token de connexion unique ! Zbar Comment s’authentifier ? compile files('libs/zbar.jar’)! ! ! imageScanner = new ImageScanner();! imageScanner.setConfig(0, Config.X_DENSITY, 3);! imageScanner.setConfig(0, Config.Y_DENSITY, 3);! int[] symbols = getIntent().getIntArrayExtra(SCAN_MODES);! if (symbols != null) {! imageScanner.setConfig(Symbol.NONE, Config.ENABLE, 0);! for (int symbol : symbols) {! imageScanner.setConfig(symbol, Config.ENABLE, 1);! }! }
! Intervention sur le terrain ! … Exemple : détecter une bouteille de vin Contraintes ! Performances ! Détection en local Comment scanner ou reconnaître un objet ?
Utilisateur privilégié / jeu concours ! … Exemple : rendre une navigation fluide lors de l’affichage de contenu Contraintes ! L’utilisateur est face à un terminal qu’il connaît mal ! Google propose déjà des guidelines Comment proposer une navigation intuitive et dynamique ?
distance ! Assurance ! … Exemple : afficher ce que je vois à un conseiller clientèle Contraintes ! Internet partagé avec le téléphone ! Capacité du processeur Comment échanger avec votre SI et partager du contenu avec d’autres utilisateurs ?
Utilisez votre librairie réseau préférée! Comment échanger avec votre SI et partager du contenu avec d’autres utilisateurs ? compile 'com.mcxiaoke.volley:library:1.0.4@aar’ compile 'com.octo.android.robospice:robospice:1.4.14’ compile 'com.squareup.retrofit:retrofit:1.6.1’
utilisant la solution de QuickBlox Comment échanger avec votre SI et partager du contenu avec d’autres utilisateurs ? public Camera getCamera() {! try {! Field privateCameraField = com.quickblox.module.videochat.views.CameraView.class.getDeclaredField("camera");! privateCameraField.setAccessible(true);! return (Camera) privateCameraField.get(this);! } catch (NoSuchFieldException e) {! return null;! } catch (IllegalAccessException e) {! return null;! }! }