Google has been on a roll this week with app updates and there have been some pretty cool new features, not the least of which makes comic books more awesome. One of the latest arrivals to the list is a beta update to the titular app. Known originally as "Search," the Google app now encompasses a custom launcher, the Now stream, Now on Tap, voice commands, and more. The recently announced Google assistant is on course to join the party, promising to bring many of these technologies together to deliver something not unlike the computer from Star Trek: The Next Generation. While there's still plenty of work remaining, a teardown gives a bit of insight into some of the progress that Google has made already.

Teardown

Disclaimer: Teardowns are based on evidence found inside of apks (Android's application package) and are necessarily speculative and usually based on incomplete information. It's possible that the guesses made here are totally and completely wrong. Even when predictions are correct, there is always a chance that plans could change or may be canceled entirely. Much like rumors, nothing is certain until it's officially announced and released.

The features discussed below are probably not live yet, or may only be live for a small percentage of users. Unless stated otherwise, don't expect to see these features if you install the apk.

Ok Google while driving

2016-07-22 20.40.07

(screenshot from Maps app.)

We all know that playing with a phone while driving is an absolute no-no. That's why Google put so much effort into making voice commands a fundamental component for both the Maps app and Android Auto. However, many people have voiced complaints that these things haven't been implemented quite the way they might like. It looks like Google is listening and will be putting control back in users' hands...err, mouths... bah, you know what I mean.

<string name="hotword_pref_title_during_gmm_navigation">While driving</string>
<string name="hotword_pref_summary_during_gmm_and_androidauto_navigation">Works in Google Maps and Android Auto</string>
<string name="hotword_pref_summary_during_gmm_navigation">Works in Google Maps</string>
<string name="hotword_pref_summary_during_androidauto_navigation">Works in Android Auto</string>

The lines above represent three choices for hotword detection and when it should be enabled. Options include Google Maps, Android Auto, or both. Since this setting only applies while in navigation mode, it might suggest this is a counterpart to the "from any screen" setting. In other words, it could allow users that don't want Ok Google active on any screen to have it enabled while driving.

Whatever the case, I'm looking forward to this going live because it clearly indicates that hotword detection is coming to Android Auto. As an Auto user, it has always bothered me that Ok Google doesn't work while my phone is connected to the car.

Google assistant

The first taste of Google's recently announced "assistant" turned up in the v6.1 teardown last month, but it was more like a sighting than a full-fledged feature because there was so little in place. This changes with v6.2. There are quite a few strings and preferences listed that give out some more meaningful clues about what we can expect from the Google assistant when it's ready to launch with Google Home and Allo later this year.

Preferences screen

The majority of the new resources are tied to preference screens, so I'll start with the layout of those. The Settings screen for the Google app will add a line for Google assistant, which will lead to a screen with these options: (Note: bold text is a heading that will appear above the options listed after it.)

  • Changes you make here show up across your Google assistant experience
    • Account
    • Activity
    • About me
  • Here're things your assistant can do on
    • [dropdown list of device types]
    • Music
    • News
    • Daily Brief
    • Google assistant
    • Connected Home
    • Google Cast
    • Shopping list
    • Services
  • Personal Voice Actions
    • Voice shortcut
Preference screen resources

<string name="assistant_header_category_title">Google assistant</string>
<string name="assistant_settings_header_title">Google assistant</string>
<string name="assistant_settings_global_category">Changes you make here show up across all your Google assistant experience</string>
<string name="assistant_settings_settings_tab_title">Settings</string>
<string name="assistant_settings_account_title">Account</string>
<string name="assistant_settings_history_title">Activity</string>
<string name="assistant_settings_shopping_list_title">Shopping list</string>
<string name="assistant_settings_devices_category">"Here're things your assistant can do on"</string>
<string name="assistant_settings_home_control_title">Connected Home</string>
<string name="assistant_settings_cast_title">Google Cast</string>
<string name="assistant_settings_brief_title">Daily Brief</string>
<string name="assistant_settings_brief_wrap_up_title">Your daily brief ends with ...</string>
<string name="assistant_settings_music_title">Music</string>
<string name="assistant_settings_news_title">News</string>
<string name="assistant_settings_default_provider_category">Default provider</string>

<string name="assistant_settings_about_me_title">About me</string>
<string name="assistant_settings_assistant_devices_title">Google assistant</string>
<string name="assistant_settings_services_title">Services</string>
<string name="assistant_settings_help_title">What can you do?</string>
<string name="assistant_settings_help_category_tips">Check out what you can say to the Google assistant</string>
<string name="assistant_settings_update_error_message">"Couldn't update the setting. Check your connection."</string>
<string name="assistant_settings_no_shopping_list">You have no shopping list.</string>

<string name="assistant_settings_home_cloud_services_title">Cloud Services</string>
<string name="assistant_settings_home_cloud_services_linked_category">Linked Services</string>
<string name="assistant_settings_home_cloud_services_add_category">Add new</string>

<activity android:excludeFromRecents="true" android:exported="true" android:name="com.google.android.apps.gsa.assistant.settings.AssistantSettingsActivity" android:noHistory="true" android:process=":search" android:theme="@android:style/Theme.NoDisplay">
<intent-filter>
<action android:name="com.google.android.googlequicksearchbox.action.ASSISTANT_SETTINGS"/>
<category android:name="android.intent.category.DEFAULT"/>
</intent-filter>
</activity>

<string name="assistant_global_preference_category">assistantGlobalCategory</string>
<string name="assistant_account_preference">assistantProfile</string>
<string name="assistant_history_preference">assistantHistory</string>
<string name="assistant_shopping_list_preference">assistantShoppingList</string>
<string name="assistant_brief_preference">assistantBrief</string>
<string name="assistant_device_type_preference">assistantDeviceType</string>
<string name="assistant_devices_preference_category">assistantDevicesCategory</string>
<string name="assistant_devices_preference">assistantDevices</string>
<string name="assistant_home_control_preference">assistantHomeControl</string>
<string name="assistant_home_control_services_linked_category">assistantHomeLinkedServicesCategory</string>
<string name="assistant_home_control_services_add_category">assistantHomeAddServicesCategory</string>
<string name="assistant_cast_preference">assistantCast</string>
<string name="assistant_music_preference">assistantMusic</string>
<string name="assistant_news_preference">assistantNews</string>
<string name="assistant_about_me_preference">assistantAboutMe</string>
<string name="assistant_services_preference">assistantServices</string>

<string name="assistant_user_defined_action_preference_category">assistantUserDefinedActionCategory</string>
<string name="assistant_user_defined_action_preference">assistantUserDefinedAction</string>

/layout/assistant_home_bottom_sheet.xml
/layout/assistant_home_main_layout.xml
/layout/assistant_main_fragment.xml
/layout/assistant_refresh_wrapper.xml
/layout/assistant_settings_template.xml

/xml/assistant_cloud_services_settings.xml
/xml/assistant_empty_settings.xml
/xml/assistant_home_device_settings.xml
/xml/assistant_preference_header.xml
/xml/assistant_settings.xml

The first group contains options that center primarily around your account with Google, and as such, are the details that are inherently common across all devices signed in with your account. These options are fairly typical in a lot of Google apps. The first line named "Account" will actually show up as a list of accounts signed into the device, probably to make it easier to switch between them to adjust settings. The next line named "Activity" is just as a section title, followed by the "About me" line which leads to another screen containing profile details.

The second section is dedicated to the different types of things that can be done by various device types. It looks like the list will change to include different options depending on which device type is currently selected. Each item in the list will lead to its own preference screen, so it will be possible to configure things like your favorite news sources and topics, preferred music selection and services, etc.

As for which devices will be in the list, it's actually just two for now: Nexus and Google Home. The length of the list makes plenty of sense; once Google Home launches, it will join phones and tablets as the only other major category of devices that will run assistant and accept commands. The really interesting part is the choice of title – it's not called "phones and tablets" or "mobile devices," it's "Nexus." Perhaps this means Google assistant will be the first "opinionated" exclusive to Nexus devices, though that seems like it would severely limit its growth potential. I think it's more likely that this is a temporary choice, or maybe even an intentional tease for teardown readers.

<string name="assistant_settings_device_type_google_home">Google Home</string>
<string name="assistant_settings_device_type_nexus">Nexus</string>

There are a couple of fairly interesting notes to take away from the list of things Google assistant can do. To begin with, the presence of a "Daily Brief" feature feels like a pretty clear shot at Amazon's Alexa, which offers an obviously similar feature called "Flash Briefing." However, thanks to the technology and wealth of data Google has cultivated in Google Now, the assistant will probably deliver a very different (read: better) experience. News and Music are fairly unsurprising, and others like Google Cast and Connected Home are obvious if you've seen the announcement, but the "shopping list" seems a little out of place. This could be another jab at Alexa, which includes purchasing capabilities with Amazon, but I suspect it's more likely a shared grocery list for families. The Services item will open a list of cloud services.

The final group is for "personal voice actions," which seems vague, but the names are fairly telling – it's for creating "voice shortcuts." Ok, so that's still pretty vague, since it's not clear if these voice actions are along the lines of clever shortcuts, shorthand names for people and groups, or something else. It's a little abstract, but this could also be a place for third-party developers to have voice actions installed, similar to Alexa's "skills" implementation.

<string name="assistant_user_defined_action_title">Voice shortcut</string>
<string name="assistant_settings_user_defined_action_category">Personal Voice Actions</string>

Devices, Rooms, and Groups

Google has worked on multiple variations of the smart home for years, but ultimately tabled basically all of those earlier projects before they were launched. But it looks like this time it's actually going to happen. The demonstration for the upcoming Google Home device was fairly thorough in presenting a concept of what it will be like to use it, but anybody who has ever started a project to install any kind of home automation would tell you half of the work is in setting it all up.

How does Google assistant know which Google Cast-equipped TV should play a video or know to play music on one speaker and not others? This wasn't discussed in the presentation, but the actors gave instructions that clearly demonstrate this sort of thing happening. It looks like Google isn't breaking any new ground with this one, at least not yet. Users will simply have to setup the devices in their homes using some fairly ordinary methods.

The first step in this process will be adding devices. Since most of the gadgets Google assistant will work with are network-connected by default and offer fairly low-friction ways to communicate (e.g. Google Cast), it shouldn't take much effort to get a full list of everything in a home. These devices can be given a nickname so they're recognizable and friendly to voice commands.

Once devices are in the system, they can be assigned a room and placed into groups. Each device can only be in one room at a time, but it can be in many groups simultaneously. This is important because it allows for a single command to turn on a few lights in one room, across multiple common rooms like the living room and dining room, or throughout a whole house. This organization may also play a part in commands. For example, if somebody asks to play a song, Google assistant should be able to assume the music should play in the same room where the command is given without asking for clarification.

The preferences screen for setting up a home is fairly simple. There are currently four tabs: Devices, Rooms, Groups, and "Tab 4." Yes, really, the final tab seems to be a placeholder for now. If nothing else, this is pretty good proof the home automation portion of Google assistant isn't ready to launch quite yet. The pages for rooms and groups are very basic, offering just enough control to add or remove them from the list. Groups also have the ability to add devices. The page for devices is a little more involved. Each piece of hardware is listed along with a space to give a nickname, a spot to pick which room it's in, and a list of the groups a device belongs to.

strings

<string name="assistant_settings_home_devices_title">Devices</string>
<string name="assistant_settings_home_rooms_title">Rooms</string>
<string name="assistant_settings_home_groups_title">Groups</string>
<string name="assistant_settings_home_tab4_title">Tab 4</string>

<string name="assistant_settings_home_add_device_title">Add a Device</string>
<string name="assistant_settings_home_device_nickname">Nickname</string>
<string name="assistant_settings_home_overview_list_devices">Devices (%1$d)</string>
<string name="assistant_settings_home_overview_list_edit">Edit</string>

<string name="assistant_settings_home_no_devices">No devices available</string>
<string name="assistant_settings_home_no_rooms">No rooms available</string>
<string name="assistant_settings_home_no_groups">No groups available</string>

<string name="assistant_settings_home_device_room">Room</string>
<string name="assistant_settings_home_device_room_not_set">(No room set)</string>
<string name="assistant_settings_home_device_assign_room">Assign Room</string>
<string name="assistant_settings_home_device_create_room">Add a new room</string>
<string name="assistant_settings_home_device_create_room_dialog_title">New room name</string>

<string name="assistant_settings_home_device_groups">Groups</string>
<string name="assistant_settings_home_device_add_group">Add to group</string>
<string name="assistant_settings_home_device_assign_group">Assign Groups</string>
<string name="assistant_settings_home_device_create_group">Add a new group</string>
<string name="assistant_settings_home_device_create_group_dialog_title">New group name</string>
<string name="assistant_settings_home_room_group_remove_device">Remove device</string>
<string name="assistant_settings_home_group_name">Group name</string>
<string name="assistant_settings_home_group_delete_message">Are you sure you want to delete this group?</string>

<string name="assistant_settings_home_room_name">Room name</string>
<string name="assistant_settings_home_room_add_new">Add new</string>
<string name="assistant_settings_home_room_group_save">Save</string>
<string name="assistant_settings_home_room_group_selected_devices">Selected devices (%1$d)</string>
<string name="assistant_settings_home_room_delete_message">Are you sure you want to delete this room?</string>

<string name="assistant_settings_cast_devices_title">Add devices</string>
<string name="assistant_settings_cast_devices_category">Link these devices to your Google assistant</string>
<string name="assistant_settings_cast_devices_not_found">No devices found</string>
<string name="assistant_settings_cast_devices_category_already_added">Already linked</string>
<string name="assistant_settings_cast_devices_category_not_supported">Not supported</string>
<string name="assistant_settings_cast_devices_menu_button">Add</string>
<string name="assistant_settings_cast_default_category">Play media on Google Cast devices</string>

That's about it for now, but Google assistant promises to be a significant undertaking. We'll surely see a lot more as we get closer to the launch of Google Home. So far, no new features seem to have gone live with this update, but keep watching because they aren't always obvious or live at release time. If you haven't received the update yet, there's a link below to download the apk.

Download

The APK is signed by Google and upgrades your existing app. The cryptographic signature guarantees that the file is safe to install and was not tampered with in any way. Rather than wait for Google to push this download to your devices, which can take days, download and install it just like any other APK.

Version: 6.2.27 beta

Google
Google
Developer: Google LLC
Price: Free