Google Glass is very much an experimental piece of hardware and it turns out the software has been built with that ethos in mind, too. With root and a few carefully-crafted ADB commands, you can enable a ton of experimental features the Google has built into the Glass software.
Over on Github, Zhuowei Zhang has posted the whole list of Glass Labs features, and how to enable them. Zhuowei isn't a Glass explorer though, so it's been up to me to be the guinea pig and actually try this stuff.
Check these out:
AUTO_SHARE_TARGETS("AUTO_SHARE_TARGETS", 26, false),
BLUETOOTH_HEADSET("BLUETOOTH_HEADSET", 10, true),
CALL_NOISE_CANCEL("CALL_NOISE_CANCEL", 25, false),
CLIPLET("CLIPLET", 4, false),
COMPANION_API("COMPANION_API", 35, false),
DEBUG_LAUNCHER("DEBUG_LAUNCHER", 11, false),
DEV_SERVERS("DEV_SERVERS", 18, false),
DING_ON_LOAD("DING_ON_LOAD", 31, false),
DISABLE_GAZE_ON_MIC("DISABLE_GAZE_ON_MIC", 32, true),
GCAM("GCAM", 0, false),
GPS_DEBUG_CARD("GPS_DEBUG_CARD", 20, false),
GPS_IN_BACKGROUND("GPS_IN_BACKGROUND", 21, false),
HO_BG_WAITING("HO_BG_WAITING", 5, false),
HO_USE_SVC("HO_USE_SVC", 3, true),
KANNADI_DEV_SERVER("KANNADI_DEV_SERVER", 14, false),
LOG_NEG_SENSORY_REC("LOG_NEG_SENSORY_REC", 8, false),
LOG_POS_SENSORY_REC("LOG_POS_SENSORY_REC", 7, true),
LONG_TAP_TO_SEARCH("LONG_TAP_TO_SEARCH", 33, true),
LONG_TAP_UI_SEARCH("LONG_TAP_UI_SEARCH", 34, true),
NATIVE_APP_VOICE("NATIVE_APP_VOICE", 28, false),
NAV_CONTAMINATE_FIX("NAV_CONTAMINATE_FIX", 42, false),
NAV_NO_COMPANION("NAV_NO_COMPANION", 23, true),
NAV_USE_LOCAL_GPS("NAV_USE_LOCAL_GPS", 22, false),
OK_GLASS_EVERYWHERE("OK_GLASS_EVERYWHERE", 24, false),
PHONE_AEC_LOG("PHONE_AEC_LOG", 41, false),
PRODUCTION_SERVERS("PRODUCTION_SERVERS", 15, true),
QUICK_QR_CODE("QUICK_QR_CODE", 36, false),
SAVE_AUDIO("SAVE_AUDIO", 6, false),
SEARCH_DEV_SERVER("SEARCH_DEV_SERVER", 12, false),
SEARCH_FEEDBACK("SEARCH_FEEDBACK", 9, false),
SEARCH_GWS_FLOW("SEARCH_GWS_FLOW", 40, false),
SEARCH_TEST_SERVER("SEARCH_TEST_SERVER", 13, false),
SHORT_TIMELINE_POLL("SHORT_TIMELINE_POLL", 38, false),
SMS_FROM_VOICE_MENU("SMS_FROM_VOICE_MENU", 29, true),
STAGING_SERVERS("STAGING_SERVERS", 16, false),
TESTING_SERVERS("TESTING_SERVERS", 17, true),
THIRD_PARTY_VOICE("THIRD_PARTY_VOICE", 27, false),
TOUCH_VOICE_MENU("TOUCH_VOICE_MENU", 39, false),
UPLOAD_SESSION_MNGR("UPLOAD_SESSION_MNGR", 19, false),
VSTAB("VSTAB", 1, false),
VSTAB_CALIBRATION("VSTAB_CALIBRATION", 2, false),
WEB_BROWSING("WEB_BROWSING", 30, false),
WINK("WINK", 37, false);
All of these are properties that go in Glass's build.prop file, in the form of "persist.lab.[NAME]=true". If you happen to have a rooted Glass unit, you can find full instructions on Zhuowei's Github.
These experiments are probably still works in progress. Some of these settings barely work, some might work but I have no idea what they should do, and some work really, really well and should probably be turned on by default. If you'd like to see some of the cooler ones in action, here's a video:
"Wink" is one we've heard of before, it enables winking to take a picture. Before you had to enable this with a third party app, but now a quick build.prop edit and you're up and running. Wink works perfectly. I've been using it pretty extensively and haven't had a false positive from blinking; it's a very deliberate motion.
Wink works pretty much the way I laid out in the XE4 Teardown. In the settings you'll see a "Wink" card, where you can enable winking, or swipe over to help and see a bunch of tip cards.
Turning Wink on requires that you go through the calibration first. Glass displays a live action video of someone winking, which, in my teardown, I though was very odd. There is good reason for the video, though. You have to nail the timing for wink to work. It's a 1 second wink, not a 0.8 second wink, or a 1.2 second wink. It's 1 second. It's like a form of eyeball Guitar Hero.
Once you understand Wink is an exact timing thing, it works very, very well. You don't get false positives and Glass doesn't miss an intended picture-wink. Winking to take a picture even works when Glass is off - that's right, anytime Glass is on your face, just wink, and you've taken a photo.
'Ok Glass' Everywhere
"OK_GLASS_EVERYWHERE" does exactly what it says on the tin. Enable this, and you'll be able to say 'Ok Glass' on just about any screen. The default Glass setting is to only listen on the "Ok Glass" screen, which is crap. Enabling this makes Glass feel a lot more intelligent - it is always listening.
"WEB_BROWSING" does not enable some kind of awesome Glass web browser, but it does enable the option to kick you out to a web browser, which is probably my #1 Glass feature request. Often I run into a situation on Glass when a search will bring up the Google result I want, but have no way to read them. This gives us an escape hatch.
With this enabled, a tap on a Google result will bring up the option to "View website, " and tapping on it will fire off the web browsing intent. Glass doesn't have a built-in web browser, so it's up to you to bring your own. Installing Chrome will sort of work; Chrome will open up, kick you out to the normal Android interface and start loading your web page, but the Glass UI jumps back on top after a second or two. It doesn't really matter, there would be no way to scroll with Glass, anyway.
The important part is that Google has given the Glass community a spot to plug into. We just need someone to make a Glass-controllable browser now. Please.
Touch Voice Menu
"TOUCH_VOICE_MENU" will bring up an alternate menu layout when you tap on the "Ok Glass" screen. Normally you can scroll up and down the vertical list with the touchpad, but this breaks every voice option down into an individual card. This alternate version is wildly inefficient: The normal vertical list will scroll from top to bottom with a single, long swipe; this version takes a whole swipe for each card. It's neat that we can enable it, but it blows compared to the default design - that's probably why it's not default.
"VSTAB" is supposed to enable video stabilization, but it's not anywhere near "done" yet. When you flip it on and record a video, it looks like Glass is struggling to do something, but it's failing miserably. The live video feed stutters and tears while recording, and while the finished video isn't as bad, it's still jumpy and freezes a lot. I'm not sure if it's actually stabilizing anything.
This is behind a flag for a reason; it's just not finished yet. It's great to hear Google is working on video stabilization, though. Glass videos all have a trademark "foot step shake" when someone is walking; eliminating that would be great.
There's also a "VSTAB_CALIBRATION," but that doesn't seem to do anything. I didn't spot any new settings to calibrate anything.
Those are just the most interesting ones, but I'll give a quick run down of the others:
"CLIPLET" makes "take a picture" take a 5 second video, and generally breaks the entire picture taking process. There is a huge amount of camera lag when you enable this, and the Glass screen turns completely black while you're recording. It's a big mess. Microsoft Research has a product called "Cliplet," which is a cinemagraph maker. So maybe this is a new, crazy, broken camera mode.
"COMPANION_API" sounds interesting; like they have a lot more planned for the MyGlass app, which is internally called "com.google.glass.companion." I haven't bothered trying this because it would undoubtedly require a special version of MyGlass, which I do not have.
"DEBUG_LAUNCHER" adds an option to launch an Android home screen app in Settings -> device info. It just crashes on my Glass unit though. I'm not sure if that's something I broke or if it's just not ready yet.
"GPS_DEBUG_CARD" adds a completely blank card to settings! Scary.
Either "LONG_TAP_TO_SEARCH" or "LONG_TAP_UI_SEARCH" should let you disable the Google Search long press, which is great, because it is annoying.
"NAV_USE_LOCAL_GPS" would presumably use Glass's GPS chip instead of your phone's (if it even has one) but it doesn't work. I tried.
"QUICK_QR_CODE" doesn't seem to do anything, but then the only thing I could think to try was to take a picture of a QR code. Nothing happened.
"THIRD_PARTY_VOICE" sounds like it would enable developers to plug into the voice menu, which is exactly what Glass needs. I didn't try this because you would need to write an accompanying native Glass app that adheres to a completely undocumented and possibly broken API.
There are also settings for switching the server your Glass unit connects to: "DEV_SERVERS," "KANNADI_DEV_SERVER," "PRODUCTION_SERVERS," "STAGING_SERVERS," and "TESTING_SERVERS." I haven't tried messing with these, because, well, if you've ever read the Glass Terms of Sale, the Glass Team sounds like they are vengeful gods, who would not look kindly on being poked with a stick. I don't want my $1500 gadget to be remotely obliterated.
(I'm sure this is just a case of temporary sanity on my part and I will probably not be able to resist trying them later. I'm not expecting much, though.)
Wasn't that fun? Hopefully this was an inadvertent peek at a few future Glass features.
If you actually have Glass and want to try this stuff out, be warned, my Glass boot up is now a little shaky and pops up a few crash messages while it's warming up. If you're doing to try anything, I can whole-heartedly recommend "ok_glass_everywhere." It really changes how I think of my device, and should be a default setting. If you play around with this and spot anything neat, let me know! Glass Labs is definitely the first thing I'll check for changes in the next update.
Source: Github, Thanks Zhuowei Zhang!