Glass

Plugin to add Google Glass Support to your Cordova Android Application.
Ross Gerbasi1.0.011
platforms: android
$ cordova plugin add com.rossgerbasi.cordova.plugins.glass

Cordova Google Glass Plugin


This plugin modifies the Android platform in your Cordova based application with Google Glass Compatibility. At its most basic usage it will allow you to launch your application via a voice trigger. Advanced usage allows for voice prompts to be captured during the launch process and sent into the application. By default the plugin will automatically dispatch touch events ('touchstart', 'touchend' and 'touchmove') and dispatch native gesture events on the document.

Basic Usage

Add plugin via Node

cordova plugin add https://github.com/aphex/cordova-glass

Modify Voice Trigger located in {app}/platforms/android/res/values/glass.xml

<string name="app_launch_voice_trigger">hello cordova</string>

Voice Trigger Prompt

A Voice Trigger prompt allows your application to ask the user for voice input before the application launches. An example of what this might sound like could be

  • 'Ok Glass' (wake up glass for voice input)
  • 'Open movie search' (launch your movie search application)
  • 'Goodfellas' (capture a voice trigger prompt from the user)

To use first uncomment the following line from {app}/platforms/android/res/xml/app_launch_voice_trigger.xml

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

Then modify Voice Trigger Prompt located in {app}/platforms/android/res/values/glass.xml

<string name="app_launch_voice_prompt">prompt question</string>

After your application has received a 'deviceready' event you will be able to retrieve the input from the user as shown in the follow where 'results' is a array.

rossgerbasi.glass.getLaunchParams(
    function(results) {
        console.log(results);
    },
    function () {
        console.log("Error getting launch Params");
    }
);

Native Gestures

Add an event listener to the document of your web application

document.addEventListener('swiperight', 
    function() {
        console.log('Got that Swipe Right');
    }
);

For example to exit your application on swipe down you can use the following

document.addEventListener('swipedown', function() {
    if(navigator && navigator.app) {
        navigator.app.exitApp();
    } else {
        console.log("Exiting Application");
    }
})

Basic Events

  • tap
  • longpress
  • swipeup
  • swipedown
  • swipeleft
  • swiperight
  • twotap
  • twolongpress
  • twoswipeup
  • twoswipedown
  • twoswipeleft
  • twoswiperight
  • threetap
  • threelongpress

A helpful note here a swipe to the left is backwards on the glass touchpad (from your eye towards your ear) where a swipe to the right is from your ear towards your eye.

Advanced Events

Advanced events have data associated with them

  • scroll
  • twofingerscroll
  • fingercountchanged

Advanced Examples

// Data contains properties type, displacement, delta and velocity
document.addEventListener("scroll", function(data) {
    console.log("Got that scroll");
    console.log(data.displacement);
    console.log(data.delta);
    console.log(data.velocity);
})
// Data contains properties type, displacement, delta and velocity
document.addEventListener("twofingerscroll", function(data) {
    console.log("Got that two finger scroll");
    console.log(data.displacement);
    console.log(data.delta);
    console.log(data.velocity);
})
// Data contains properties type, from and to
document.addEventListener("fingercountchanged", function(data) {
    console.log("Fingers changed from " + data.from + " to " + data.to);
})

Config

The following config.xml preferences are available via this plugin

keepAwake

<preference name="rossgerbasi.glass.keepAwake" value="false"/>

Setting this to true will force your application to always stay on, no screen dimming. A User will need to exit your application via a swipe down gesture to close it.

touchDisabled

<preference name="rossgerbasi.glass.touchDisabled" value="false"/>

Setting this to true will disable the translation of touch events from the touchpad to the web view. Essentially turning off 'touchstart', 'touched' and 'touchmove' events.

gesturesDisabled

<preference name="rossgerbasi.glass.gesturesDisabled" value="false"/>

Setting this to true will disable all native gesture events (swipe, long press, scroll, etc).