01
May
GoogleSearch-Teardown

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!

Cody Toombs
Cody is a Software Engineer and Writer with a mildly overwhelming obsession with smartphones and the mobile world. If he’s been pulled away from the computer for any length of time, you might find him talking about cocktails and movies, sometimes resulting in the consumption of both.

  • Josh Crumley

    Neat.

  • http://turbofool.com Jarrett Lennon Kaufman

    "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."

    I would assume this is more akin to Moto X's active listening feature than merely letting you turn it OFF specifically when it makes the least sense to do so. I suspect it's the opposite; letting you allow it to listen always when the phone is charging, which is exactly when the extra power drain of always listening on a device not built for it would be irrelevant, and listen while unlocked would essentially take it one step further to not merely listening when you're on the home screen or have the app up, but the rest of the time, too, presumably with a power drain warning (except, maybe, on devices with chipsets capable of doing this with minimal drain).

    • Paul_Werner

      Gonna bee nice to see this added to the N5 since it has a chipset to handle this

      • ltredbeard

        "Gonna bee nice to see this added to the N5 since it has a chipset to handle this"

        Buzz Buzz

    • http://turbofool.com Jarrett Lennon Kaufman

      Just crossed my mind that the second option is more likely a subset of the first:
      Option 1 - Listen while charging?
      Option 1A - Listen while charging, but only while unlocked?

    • h4rr4r

      Now I need a wireless charging station for the car.

    • Simon Belmont

      Oh wow. I didn't scroll down before making my post above, but that's exactly what I was thinking. It's basically further proof that touchless controls (with the screen off) are coming. Especially for those devices (like the Nexus 5) that have a low power listening core.

      My theory was that it would let people WITHOUT low power listening cores have the ability to use touchless controls when their device is charging and the screen is off (no battery impact). For folks with a Snapdragon 800 series SoC, this would probably wouldn't even be option since active listening can be on all the time with no battery impact.

  • http://petercast.net Peterson Silva

    "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.""

    Isn't it obviously related to this?

    http://www.androidpolice.com/2014/04/25/rumor-ok-google-everywhere-modular-actions-new-navigation-buttons-coming-to-android/

  • http://www.twitter.com/b_boogey_xl b_boogey_xl

    Im grateful for every new feature, but am I the only one that fears Google Now becoming bloated?

    • Thomas’

      Yes, you are.

      Since most cards can be deactivated.

      • Brandon Miller

        Agreed. As long as we can choose to deactivate certain types of cards then I don't really care how many extra things they add to Google Now.

      • http://www.twitter.com/b_boogey_xl b_boogey_xl

        Let's not pretend like Google Now can't become bloated.

      • http://petercast.net Peterson Silva

        Yes, but they still take up memory and, even though I'm not a coder I hear code can get pretty messy as apps grow functionality-wise...

        • http://www.androidpolice.com/author/cody-toombs/ Cody Toombs

          In the case of most of these cards, there is almost no impact to size or memory usage. And the actual complexity to add most of these cards is usually minimal. After all, the card is just a little on-screen block that displays a little bit of information. The majority of real work is taking place on Google's servers. Consequently, adding new cards is actually pretty trivial.

          • http://petercast.net Peterson Silva

            Well that makes sense. Thanks for clarifying! =)

          • Thomas’

            Adding new cards is not trivial. Hardly any task is easy on Googles scale, as I have experienced.

            What is correct is that adding cards can be mostly done on the server-side with hardly any modification to the client code.

    • Paul_Werner

      Google Now All the Things

  • Brett Besa

    Music control card? Awwww yeah!

    • http://petercast.net Peterson Silva

      It seems so useless though. Isn't the notification shade much more handy?

      Maybe it's a Wear cade thrown in for the sake of consistency.

      • Taco Monster

        Yeah, Now should be restricted to things that need context awareness. Music controls doesn't seem to fit the bill.

      • Flo Edelmann

        Maybe it also suggests playing some music when you would usually like to. Like when you enter the car and usually start the music appapp then, it could do that work for you.

        • http://petercast.net Peterson Silva

          I already have tasker do that for me but for folks who haven't thought of it this is nice indeed! =)

      • CoreRooted

        Sure the notification shade controls are handy... When the music app is open. If it is contextually aware of your location though, then gNow could suggest playing music for your commute or when you get to your office or home. Also, there's nothing wrong with having music controls available in multiple places (for instance, we have them on the lockscreen and the shade at the same time).

        • http://petercast.net Peterson Silva

          This! This makes sense! =D
          It's funny but there are some songs I don't wanna hear when I'm driving. And there are some songs I'd rather listen to only at home. Maybe Now is supposed to figure that out and make the proper suggestions =)

          • CoreRooted

            I had heard rumours awhile back about contextual playlist support from GPM. That is one feature I would love (and also one that a lot of the other apps have already pioneered).

  • JPB

    Getting ready for big Google I/O announcements?

    • Guest

      What does that have to do with anything?

  • AbbyZFresh

    This is getting ridiculous. There's beginning to be too many cards.

    • miri

      /s

    • Roh_Mish

      The previous small list of card is gone. Now there is a nearly endless list. And they don't add the priority setting option.

    • Chris

      Disable the ones you don't use...

  • jon

    It also stops Tasker and Xposed from working properly...

    • Roh_Mish

      Working for me properly

      • vgergo

        Are you sure you have version 3.4? Mine works too, but it's still 3.3.11... I have already started to pack and move back to Nova Launcher :-( If the XPOSED search API gets broken too, I will keep using this version for a long time...

        • Stanley Chan

          XGELS framework stopped working with this last update, but the great @thecknut is working with other devs like Gravity Box to get back the hidden codes that google is afraid to show with this update.

          Google dont want anyone to customize his things. This is pretty stupid and sad. Wake up google! Android is an open system!?

          • CoreRooted

            ANDROID is an open system. Google's proprietary apps are not, however. If they choose not to allow use of the various APIs to third party apps, that is their right as the owner and developer of said applications. I personally would hate to develop an application and be forced to open up my APIs to everything and everyone. Google, as a development shop, is no different. These are their applications that they provide to use for free (well, at the cost of being able to mine our data).

  • Kareem Ayman
    • http://petercast.net Peterson Silva

      It has been hinted before and it hasn't happened yet, so calm down, it's not the time for the song yet =)

  • Simon Belmont

    Perhaps the listen while charging will give folks that don't have a low-power listening core at least a taste of touchless controls while the device's screen is off and charging. Obviously, for phones like the Nexus 5 and other Snapdragon 800 series devices will be able to listen all the time without a battery impact.

    We are supposed to get OK Google everywhere, after all. So when the screen is off is almost guaranteed in my book. As for music controls, I'd really like to be able to say "OK, Google, pause this song" or "go to the next track" and the like while music is playing. I REALLY hope that's coming at Google I/O.

    • http://www.androidpolice.com/author/cody-toombs/ Cody Toombs

      That's not impossible, especially with creative use of sound reduction, but I think voice controls aren't going to be heard very well with music playing out loud. On the other hand, it could work with the right circumstances, like headphones or bluetooth audio.

      On a related note, I'm going to convince a pop star to include the phase "Ok Google, Hardcore Action" in a song.

      • Simon Belmont

        Well, an "in the field" test of various voice commands with my Nexus 5 and my 18 month old yelling at Sesame Street on the TV yields the commands working quite well. Hardly scientific, but it's empirical data! :P

        But, yeah, I was thinking the same that it'd definitely work better via my Bluetooth headphones. But, the noise cancellation on my Nexus 5, itself, seems pretty darn good (except for that darn hiss in the video recording app!). ;)

  • Franz

    I hope they will add a lot of features on Google Now for the World Cup.