Skip to content

Instantly share code, notes, and snippets.

@zhuowei
Last active December 17, 2015 14:29
Show Gist options
  • Star 33 You must be signed in to star a gist
  • Fork 2 You must be signed in to fork a gist
  • Save zhuowei/5624527 to your computer and use it in GitHub Desktop.
Save zhuowei/5624527 to your computer and use it in GitHub Desktop.
Glass Labs experiments: what they do

Glass Lab Experiments

Updated: July 2nd (XE7)

Ron Amadeo of Android Police did a review of these experiments: http://www.androidpolice.com/2013/05/24/google-glasss-hidden-labs-features-ok-glass-everywhere-web-browsing-video-stabilization-and-more-video/

Google Glass has a series of Labs experiments that can be enabled on engineering or userdebug builds. Using APKTool, I've removed that restriction and now they can be enabled with root access.

To start, for example, the SOUND_SEARCH lab, type in a root shell

setprop persist.lab.sound_search true

and restart the Glass home screen.

This is tested with the Xenologer modded APKs for Nexus 7.

If you have an actual Glass (lucky you), you might be able to enable these by using root to edit build.prop so your build shows up as a userdebug instead of a user build, and then using the properties to enable individual labs.

Experiments:

This is the list of experiments extracted from a Google Glass Home XE5 APK.

Format:

NAME("NAME_AGAIN", random number, is enabled by default);

the property name to enable is persist.lab.(the name in all lowercase).

      BLUETOOTH_HEADSET("BLUETOOTH_HEADSET", 13, true),
      BLUETOOTH_PCM("BLUETOOTH_PCM", 14, false),
      CALL_NOISE_CANCEL("CALL_NOISE_CANCEL", 29, false),
      CLASSIC_SALIL("CLASSIC_SALIL", 47, false),
      DEBUG_LAUNCHER("DEBUG_LAUNCHER", 15, false),
      DEV_SERVERS("DEV_SERVERS", 22, false),
      DING_ON_LOAD("DING_ON_LOAD", 34, false),
      GCAM("GCAM", 0, true),
      GPS_DEBUG_CARD("GPS_DEBUG_CARD", 24, false),
      GPS_ENABLE_LOCAL("GPS_ENABLE_LOCAL", 26, false),
      GPS_ENABLE_REMOTE("GPS_ENABLE_REMOTE", 27, true),
      GPS_IN_BACKGROUND("GPS_IN_BACKGROUND", 25, false),
      HO_B("HO_B", 4, false),
      HO_CONNECTIVITY("HO_CONNECTIVITY", 7, false),
      HO_HO_HO("HO_HO_HO", 8, false),
      HO_LOG_VERBOSE("HO_LOG_VERBOSE", 5, false),
      HO_SUPER_DEBUG("HO_SUPER_DEBUG", 6, false),
      HO_USE_SVC("HO_USE_SVC", 3, true),
      KANNADI_DEV_SERVER("KANNADI_DEV_SERVER", 18, false),
      LOG_NEG_HOTWORD_REC("LOG_NEG_HOTWORD_REC", 11, false),
      LOG_POS_HOTWORD_REC("LOG_POS_HOTWORD_REC", 10, true),
      LONG_TAP_TO_SEARCH("LONG_TAP_TO_SEARCH", 35, true),
      LONG_TAP_UI_SEARCH("LONG_TAP_UI_SEARCH", 36, true),
      NATIVE_APP_VOICE("NATIVE_APP_VOICE", 31, false),
      NAV_CONTAMINATE_FIX("NAV_CONTAMINATE_FIX", 45, true),
      NV_TRST("NV_TRST", 28, false),
      OKG_INC_CALL("OKG_INC_CALL", 52, true),
      OMELETTE_DU_FROMAGE("OMELETTE_DU_FROMAGE", 49, false),
      PEOPLE_GRID("PEOPLE_GRID", 44, false),
      PHONE_AEC_LOG("PHONE_AEC_LOG", 43, false),
      PRODUCTION_SERVERS("PRODUCTION_SERVERS", 19, true),
      PUPPIES_IN_PJS("PUPPIES_IN_PJS", 48, false),
      QUICK_QR_CODE("QUICK_QR_CODE", 37, false),
      SAVE_AUDIO("SAVE_AUDIO", 9, false),
      SC_RM("SC_RM", 53, false),
      SEARCH_DEV_SERVER("SEARCH_DEV_SERVER", 16, false),
      SEARCH_FEEDBACK("SEARCH_FEEDBACK", 12, false),
      SEARCH_GWS_FLOW("SEARCH_GWS_FLOW", 40, true),
      SEARCH_TEST_SERVER("SEARCH_TEST_SERVER", 17, false),
      SMS_FROM_VOICE_MENU("SMS_FROM_VOICE_MENU", 32, true),
      SOUND_SEARCH("SOUND_SEARCH", 46, false),
      SPECIAL_GWS_SERVER("SPECIAL_GWS_SERVER", 41, false),
      STAGING_SERVERS("STAGING_SERVERS", 20, false),
      TESTING_SERVERS("TESTING_SERVERS", 21, true),
      THIRD_PARTY_VOICE("THIRD_PARTY_VOICE", 30, false),
      TOUCH_VOICE_MENU("TOUCH_VOICE_MENU", 39, true),
      UPLOAD_SESSION_MNGR("UPLOAD_SESSION_MNGR", 23, true),
      USE_SAX_PARSER("USE_SAX_PARSER", 42, false),
      VIDEO_PLAYER("VIDEO_PLAYER", 50, false),
      VOLUME_SLIDER("VOLUME_SLIDER", 51, false),
      VSTAB("VSTAB", 1, false),
      VSTAB_CALIBRATION("VSTAB_CALIBRATION", 2, false),
      WEB_BROWSING("WEB_BROWSING", 33, true),
      WINK("WINK", 38, false);

New and removed labs in XE7: https://gist.github.com/zhuowei/5913178

Known working labs

DEBUG_LAUNCHER: Adds a new option in Settings -> Device Info -> Start Launcher; brings me to the standard Android home screen. Edit: after looking at the code, I realized it calls the vanilla Android launcher by name, so it won't work with any third-party launchers.

WINK: Adds a "Wink" option to the Settings bundle. I haven't installed the GlassGestures APK which contains Winking-related code, so I can't test. Edit: Ron Amadeo proved this works.

NATIVE_APP_VOICE: allows native apps to add themselves to the OK Glass screen. Crashes if you don't have any installed, but works fine otherwise - Launchy now has support for this.

SOUND_SEARCH: New in XE6: OK Glass -> Google -> (swipe right) I tried holding it to headphones playing "Fireflies" and it recognized it.

Labs that may do something on the Glass but won't work on a Nexus 7

GPS_DEBUG_CARD: Just gives a new blank card in the Settings bundle. From the code, it should be printing to LogCat GPS info, but I haven't checked.

SEARCH_FEEDBACK: No visible effect.

VSTAB and VSTAB_CALIBRATION: Enables video stabilization as seen on http://developer.android.com/reference/android/hardware/Camera.Parameters.html#setVideoStabilization%28boolean%29 . I did not even bother to try this on the Nexus 7, as I hardly believe the front camera can stabilize video.

Labs that graduated

GCAM: Enabled by default in XE6; probably the enhanced camera abilities

NAV_CONTAMINATE_FIX: Enabled by default in XE6; no idea what it does

WEB_BROWSING: XE7 added a browser.

PEOPLE_GRID: XE7 added the new People view, so this seems to have graduated. Its Lab entry is still false, though.

TOUCH_VOICE_MENU: XE7 enabled this (probably to Ron Amadeo's chagrin)

Labs that were killed:

OK_GLASS_EVERYWHERE: you can say "OK Glass" even if you are in a different bundle than the home screen; e.g. in the Settings app. Removed in XE7. (boo!)

@ilyaeck
Copy link

ilyaeck commented Jul 13, 2013

Do you have any idea if THIRD_PARTY_VOICE actually works. As far as I can tell, it should make Android's voice recognition service accessible to other native apps - is that correct?

@dtoan
Copy link

dtoan commented Aug 23, 2013

I cannot get the Labs work. I am using Xenologer modded APKs on Galaxy Reverb (rooted, 4.1.2 Ice Cream Sandwich). The following is the screencast of my cmd.exe:

ROOT_DIR\sdk\platform-tools>adb devices
List of devices attached
b1bd0d2a device

ROOT_DIR\sdk\platform-tools>adb shell
shell@android:/ $

shell@android:/ $ setprop persist.lab.native_app_voice true
setprop persist.lab.native_app_voice true
shell@android:/ $

Did I miss something?

Thanks.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment