MyGlass, the Google Glass companion app, has just hit the Play Store. Since no one actually has a pair of Google Glass yet, no one actually knows what this thing does. To save myself from going crazy while waiting for my Glass email, ripping apart this new app seemed like a good distraction.
The package name is "com.google.glass.companion," and, naturally, this release is version 1.0.0. MyGlass has a decent amount of permissions, here are a list of the most important ones:
- Access Wi-Fi and Bluetooth (ACCESS_WIFI_STATE/ACCESS_NETWORK_STATE/CHANGE_WIFI_STATE)
- Google Voice Send and Receive permissions
- Full account access (GET_ACCOUNTS/USE_CREDENTIALS/MANAGE_ACCOUNTS)
- Receive and send SMS and MMS
- Full location access (ACCESS_FINE_LOCATION/ACCESS_COARSE_LOCATION)
- Full internet access
- Read contacts
So basically, it's a tethering app - a tethering app that Glass appears highly dependent on. The account access permissions suggest it will use your phone to sign in to Google's services - no app, no account access. Also interesting is the fact that it wants to get your location information from your phone. Does that mean Glass doesn't have a GPS chip of its own? I guess there's no need for it, and that would be a great way to save battery.
Other than that, Glass uses your phone for, well, phone stuff - it has permissions to read your contacts and deal with MMS/SMS. And did you catch that second bullet point? Special permissions just for Google Voice! Awesome. Interestingly enough, this does not use the new Google Voice permissions that Google added in the last update. We still aren't sure what that is for.
<string name="notification_connected_to_glass">Connected to Glass</string>
<string name="notification_bluetooth_error">Bluetooth connectivity error</string>
<string name="notification_bluetooth_error_action">Restarting your phone may resolve it.</string>
<string name="notification_text_tethering_error">Click to resolve tethering error</string>
<string name="notification_pairing_error">Bluetooth pairing error</string>
<string name="notification_pairing_error_action">Click for more information</string>
<string name="dialog_title_error_bluetooth">Bluetooth connectivity error</string>
<string name="dialog_message_error_bluetooth">"Unable to turn on Bluetooth on phone. It is required to connect with Glass.
To resolve this issue, manually restart your phone by holding down the Power button."</string>
Tethering seems to be done exclusively with Bluetooth. The first string here, "Connected to Glass" seems to be an always-on notification which will inform you that you are currently tethered.
Depressingly, there are also about a million strings for Bluetooth connectivity issues. The worst is the last string, which finishes with "To resolve this issue, manually restart your phone by holding down the Power button." Translation: "Bluetooth sucks, and we know it sucks, and there's nothing we can do about it. So please just deal with it and restart your phone. Thanks."
<string name="phone_call_hanging_up">Hanging up…</string>
<string name="phone_call_missed_call">Missed call</string>
<string name="phone_call_failed">Call failed</string>
<string name="phone_call_total_time">%s call</string>
<string name="phone_call_duration_hours_minutes_seconds" formatted="false">%s hr %s min %s sec</string>
<string name="phone_call_duration_minutes_seconds" formatted="false">%s min %s sec</string>
<string name="phone_call_duration_seconds">%s sec</string>
For some reason the Glass app (not Glass itself) has a full set of phone strings. Maybe Glass is unable hook into the stock dialer, so there is a special one just for Glass? It seems like, in a perfect world, all of these functions would either be on Glass itself, or handled via the stock phone app. There's some kind of dirty hack going on here.
<string name="launching_on_glass">Launching navigation on Glass.</string>
<string name="launching_locally">Not connected to Glass. Navigating on this device.</string>
One of the coolest things I've found in MyGlass is the ability to push a Google Maps Navigation session to Glass, similar to the Chrome to Mobile functionality, but Phone To Glass. I'm not exactly sure where this is or how it works, but it's clearly something they're thinking about. I'm going to need to see a whole lot more of this, in both directions, in order for Glass to be an elegant product.
<string name="setup_account_no_gplus_dialog_title">Enable Google+</string>
<string name="setup_account_no_gplus_dialog_text">You must enable Google+ for your account.</string>
<string name="setup_account_no_gplus_relaunch_toast">Please retry after you have signed up for Google+ to continue setup.</string>
Google+ is mandatory to use Glass. Resistance is futile.
Android App Integration
Finally, here's another really, really neat thing they've included. To understand this one, you're going to need to know what a Glass timeline is. On Google Glass, the timeline is a scrollable list of all the actions you've taken recently. So when you take a picture, or send a message, or ask for a translation, all of that ends up on your timeline. If you want to share a picture, you take it, swipe back to it on your timeline, and hit the share button. Imagine it as a task switcher/history/notification panel. Here's a video of the timeline in action.
<action android:name="com.google.glass.timeline.INSERT_OR_UPDATE" />
<action android:name="com.google.glass.timeline.DELETE" />
MyGlass registers a few timeline intents, meaning Android apps can insert, update, or delete items in your timeline, just like a native Glass app. This is what will allow 3rd party Android apps to send stuff to your pair of Glass!
So, how cool was this? Actual, real Google Glass information. Shipping emails are going out right now, and I'm scheduled to get my pair pretty soon (where is that freaking email?!). This is really happening. Assuming my pair ever actually comes in, I'll have a full review and a million other articles about it. I'll practically be running my own "Google Glass Police" subsection. You'll be sick to death of hearing about it.
I've got to go check my email now. Again.