Developing for Google Glass

January 16, 2014

Some caveats to a good glass app Inspired by the good principals of a good web app.

  • follows similar style and UX principals in other apps

  • natural usage in day to day life.

  • GDK on the client, voice recognition and translate avaliable on the client.

  • Standard Android API and Paradigms

  • Types - invocation - elements GDK OK GLASS MIRROR MENU ITEM GDK + Mirror Timeline card Gesture Detector - touch pad movement Voice Trigger - specify use Card Scroller & Cards(builder)- build timeline cards and arrange to scroll through them Live Card - real time info

GDK

Live card -> real time updates Static Card -> moment in time Immersion - “word lens " Service - “settings”

Four Development patterns

  • Sharing
  • Periodic Notification New Patterns
  • on going tasks - information or interaction:
  • Immersion -Enter into a specific experience and then getting back into it

Tips

Add flag to keep the screen on,

public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_flag);
        getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
}


//can be removed with
getWindow().clearFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);

Start the camera intent

startActivity();

		//camera pic taking
Intent cameraIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE, null);
startActivityForResult(cameraIntent, 1);

keep the camera unscrambled http://stackoverflow.com/questions/19235477/google-glass-preview-image-scrambled-with-new-xe10-release

parameters.setPreviewFpsRange(30000, 30000);
/*
    Camera.Parameters params = camera.getParameters();
    params.setPreviewFpsRange(30000, 30000);
    camera.setParameters(params);
*/

open url

		//url opening
		String url = "https://mobile.xtuple.com";
		Intent intent = new Intent(Intent.ACTION_VIEW);
		intent.setData(Uri.parse(url));
		startActivity(intent);

trying to build to something shell proprerties

Google Inc.:Glass Development Kit Sneak Peek:15

on keydown, emit something

    @Override
    public boolean onKeyDown(int keycode, KeyEvent event) {
        if (keycode == KeyEvent.KEYCODE_DPAD_CENTER) {
            openOptionsMenu();
            Log.v("@@@@","TEST");
            return true;
        }
        return false;
    }

Insert a card into the timeline via gdk


		mTimelineManager = TimelineManager.from(this);
		Card card = new Card(this);
		card.setText("Hello World").setFootnote("Footer").addImage(R.drawable.ic_launcher);
		mTimelineManager.insert(card);