The latest version of Google Search rolled out yesterday with a couple of pretty great new features. We already know that 3.4 offers a new parking reminder, mall directories, and the start of voice commands for system settings. But there are still a few secrets worth exploring, so let's get to it!

See Your Friend's Photos

The content of Google Now tends to focus heavily on your current or future location, and as a close second, it tries to be helpful with reminders about TV shows and events. What it hasn't really done is hook into the events generated by your friends. A new layout and some new strings indicate that we're about to see cards generated from the pictures shared to Google+ by our friends.

Judging by the name of the layout, friend_location_photos_card, it still seems to be tied to a location. Perhaps this will only appear when you're traveling to or searching for information about a place where friends have taken photos. The layout is pretty straight forward with a title at the top, a grid of photos or a single image, another string of text to identify the origin. At the bottom of the card will be a +1 button and a button to send an email.

<string name="friend_location_photos_title">"%1$s's photos of %2$s"</string>

<string name="friend_photos_source">%1$s shared these photos on Google+</string>

<string name="contact_google_plus">%1$s on Google+</string>

We haven't seen these cards appear yet, but there is plenty of code to back them up. We're probably just waiting for Google to flip the switch to turn these on.

Real Timer Integration

Setting a timer isn't exactly new feature, but Google Now has never really done it right. Instead of setting a proper timer with precision down to the second, it creates an alarm, which may be inaccurate and can even incorrectly set itself to go off the following day. A set of new strings suggest Google Now is going to finally fix this bug with proper integration with timers.

<string name="action_set_timer_duration">Duration:</string>

<string name="action_set_timer">Set timer</string>

<string name="action_set_timer_set_a_duration">add a time</string>

<string name="action_view_timers">View timers</string>

<string name="action_timer_canceled_title">Timer canceled</string>

<string name="action_timer_canceled_tts">Timer canceled</string>

<string name="set_timer_submit">Start timer</string>

<string name="timer_app_not_available">No apps able to set timer</string>

These strings are appearing in code, but attempting to set a timer still fires up an alarm, so this doesn't seem to be working yet. With each release, we keep hoping this will start working the way it's supposed to. Fingers crossed!

More Info About Our Travel Reservations

Based on a few of the strings here, it looks like we're about to get more data about our reservations on different modes of travel. Some new layouts and strings indicate we're going to see reservation numbers, cities we're traveling between, the boarding platform, and the type and number of seats. Judging by the layouts, this is also going to show multiple legs of a journey.

New layouts:

  • transportation_card_row
  • transportation_info_multiple
  • transportation_info_row
  • transportation_info_single
  • transportation_single_card

<string name="city_to_city">%1$s to %2$s</string>

<string name="transportation_coach">Coach</string>

<string name="transportation_platform">Platform</string>

<string name="transportation_class">Class</string>

<string name="transportation_passenger">Passenger</string>

<string name="transportation_reservation_number">Reservation #</string>

<string name="transportation_time_zone">(%1$s)</string>

<plurals name="transportation_seat">

<item quantity="other">%1$d Seats</item>

<item quantity="one">Seat</item>

</plurals>

More Info For Sporting Events

Matching the momentum on travel details, sporting events are about to get more elaborate content thanks to a pair of new layouts named sport_event_versus_list_row.xml and sport_event_versus_details_card.xml. These appear to be extensions of the existing sporting events cards, so there really isn't a lot of new information to add. The rows will simply show a title, the team logos, game status, and scores. The full-size detail card repeats the same information, but adds team names and a histogram.

There's no sign that these cards are showing up yet, they look ready to go when Google decides it's time.

Nearby Products Card

It looks like Google's Shopping engine is about to get a card of its own. A new layout just turned up with the name nearby_product_card_row. It is just a row, so it only contains the product name, price, and a photo. It's possible that these will be displayed as search results instead of loading up the generic Google shopping results web view. And the name obviously indicates this feature is meant to help people find the most accessible options for purchasing a particular product.

Hints of this particular feature also turned up in the Glass XE 16 teardown in the form of a new icon and in the list of built-in voice commands, so it's likely to make a debut fairly soon. Unfortunately, there is only the one layout and almost no helpful code, so there isn't much more to say on this.

Music Controls Directly In Google Now

In part 2 of the Glass teardown for XE 16, I discovered Glass was about to receive some much needed voice controls for music apps. It looks like Google Now is going to receive similar treatment, although, without the actual voice commands. We're going to have a card containing media controls, most likely appearing anytime a music app is playing in the background. There aren't a lot of strings to look at, but there is a media_control_card layout and plenty of code to support this. I've run Play Music to try to activate the card, but it never turned up. It's probably scheduled to go live in a future update.

<string name="media_control_name">Action</string>

<string name="music_control_prompt">Controlling music</string>

Settings For Hotword Detection

Hotword detection is certainly an awesome feature, but some have complained that they would like a little more control over it. That might explain the next couple of strings that we'll probably see sometime in the future.

<string name="hotword_charging_pref_title">Listen while charging</string>

<string name="hotword_screen_on_pref_title">Listen if the device is unlocked</string>

It seems we'll gain the ability to choose if listening should occur when the device is charging and when the device is unlocked. Ok, I agree, that sounds exactly like the times it should be operating, so maybe these preferences will allow for disabling hotword detection under those circumstances.

REMOTE_ACCESS And REMOTE_SEARCH_ACCESS Permissions

This one is a little more mysterious. For a while now, Search has had a permission called com.google.android.apps.now.REMOTE_ACCESS, and its protection level was set to "signature." That meant only other apps signed by Google were able to access that permission. With this update, the protection level has changed to "normal" and presumably allows any app to use the APIs guarded by that restriction, assuming they add that permission to their manifest. This particular permission is described as "Remote access to your data in Google Now."

<permission android:description="@string/permission_remote_access_desc" android:label="@string/permission_remote_access_label" android:name="com.google.android.apps.now.REMOTE_ACCESS" android:protectionLevel="normal"/>

Along with this minor change, a new permission for REMOTE_SEARCH_ACCESS and a related service were also added.

<string name="permission_remote_search_access_label">Google Search remote access</string>

<string name="permission_remote_search_access_desc">Remote access to Google Search results.</string>

<service android:label="@string/serviceLabel" android:name="com.google.android.remotesearch.RemoteSearchService" android:permission="com.google.android.remotesearch.REMOTE_SEARCH_ACCESS" android:process=":search">

<intent-filter>

<action android:name="com.google.android.remotesearch.IRemoteSearchService"/>

<category android:name="android.intent.category.DEFAULT"/>

<data android:mimeType="audio/l16"/>

</intent-filter>

</service>

<permission android:description="@string/permission_remote_search_access_desc" android:label="@string/permission_remote_search_access_label" android:name="com.google.android.remotesearch.REMOTE_SEARCH_ACCESS" android:protectionLevel="normal"/>

<uses-permission android:name="com.google.android.remotesearch.REMOTE_SEARCH_ACCESS"/>

It's not clear if this means other apps will be able to read search history, recent results, or conduct searches on your behalf. More details about this change will probably turn up in the developer portal fairly soon.

Wrap-Up

For what seemed like a small update, there's a LOT here. Most of these bits look pretty close to complete, if not totally ready to go. A lot of this is probably happening in preparation for Google I/O in June, so we might have to wait a little bit for most of it to turn up. I don't know about everybody else, but I think there's some great stuff here!