Yesterday was a busy day with the official announcement of Android Oreo and our sun playing a short game of peekaboo behind the moon. Yesterday also saw the release of a brand new version of the Google app to the beta channel. After a bit of digging, there aren't any notable changes jumping out at us, but a teardown of the APK provides a monstrous amount of information about a mystery device called Bisto. There's plenty here, so let's dig straight into the juicy bits!


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.


The Bisto codename first appeared in v7.0 of the Google app back in April, but it wasn't until earlier this month when v7.9 came out that we got near-certain confirmation that this was for a special set of headphones with built-in Google Assistant. Now with the latest update, a flood of new material gives us a boatload of clues to pick through. Actually, at this point, it's almost wrong to call them clues because there's enough here to practically draw a picture of what's to come. I'm terrible at illustrations, so I'm not going to try...

For starters, we can throw out any remaining doubt about what this device is. A few lines of text make it perfectly clear, this is a set of headphones with built-in Google Assistant. It will take voice commands and give responses much like Google Home.

<string name="intro_screen_title">Meet your Google Assistant</string>
<string name="intro_screen_explanation">Your headphones have the Google Assistant. Ask it questions. Tell it to do things. It's your own personal Google, always ready to help.</string>

<string name="bisto_magic_pairing_assistant_prop_title">Meet your Google Assistant</string>
<string name="bisto_magic_pairing_assistant_prop_text">Your headphones have the Google Assistant. Ask it questions. Tell it to do things. It's your own personal Google, always ready to help.</string>

Partners will also make Bisto-style headphones

There are plenty of details to go over about the hardware and features of Bisto, but first, it's important to set the stage for the ecosystem Bisto is going to live in. We can almost certainly conclude that Google will be making and selling Bisto, but Google also appears to be working with other OEMs to produce their own headphones that differ from Google's version.

The signs for this come from Bisto's settings screen, which includes a shortcut to "additional settings for your headphones." What this line actually does is launch an "oem partner app." This line will only appear if an OEM's companion app is installed, and it will generally take users to a screen where they can configure the custom features unique to that model or OEM. For example, a pair of headphones with built-in AM/FM radio might have an app that allows users to set their favorite stations, or headphones designed for audiophiles could have an app with an advanced equalizer and other controls for precisely dialing in the audio experience.

This is obviously good for many reasons, but the best is that customers are going to have very real options. We can probably expect to see everything from low-cost headphones that are accessible to lots of people, all the way up to extremely high-end models for serious sound. They can also change form factors to be mono earpieces, or maybe even earbud-style models for travel and sports.

Bisto settings

from xml/assistant_device_id_bisto_settings.xml
< android:key="bistoImageHeader" />
< android:title="@string/assistant_settings_common_device_id_category" />
<Preference android:persistent="false" android:title="@string/bisto_device_tutorial_pref_title" android:key="bistoTutorials" android:summary="@string/bisto_device_tutorial_pref_summary" android:widgetLayout="@layout/preference_widget_newpage" />
<SwitchPreferenceCompat android:persistent="false" android:title="@string/bisto_device_notifications_pref_title" android:key="bistoNotifications" android:summary="@string/bisto_device_notifications_pref_summary" />
<Preference android:persistent="false" android:title="@string/bisto_device_notification_access_pref_title" android:key="bistoNotificationAccess" android:summary="@string/bisto_device_notification_access_pref_summary" android:widgetLayout="@layout/preference_widget_warning" />
<SwitchPreferenceCompat android:persistent="false" android:title="" android:key="bistoPii" android:summary="" />
<Preference android:persistent="false" android:title="@string/bisto_device_oem_partner_app_title" android:key="oemPartnerApp" android:summary="@string/bisto_device_oem_partner_app_summary" android:widgetLayout="@layout/preference_widget_launch" />
<Preference android:persistent="false" android:title="@string/bisto_device_remove_device_pref_title" android:key="bistoRemoveDevice" android:widgetLayout="@layout/preference_widget_clear" />
<PreferenceCategory android:title="@string/bisto_information_preference_category" android:key="bistoInformationCategory">
<Preference android:persistent="false" android:title="@string/bisto_device_battery" android:key="bistoBattery" />
<Preference android:persistent="false" android:title="@string/bisto_device_connection_status" android:key="bistoConnectionStatus" />
<Preference android:persistent="false" android:title="@string/bisto_device_firmware_version_title" android:key="bistoFirmwareVersion" />
<Preference android:persistent="false" android:title="@string/bisto_device_serial" android:key="bistoSerialNumber" />
<PreferenceCategory android:title="@string/bisto_support_preference_category" android:key="bistoSupportCategory">
<Preference android:persistent="false" android:title="@string/bisto_device_help_pref" android:key="bistoHelp" android:widgetLayout="@layout/preference_widget_newpage" />
<Preference android:persistent="false" android:title="@string/bisto_device_leave_feedback" android:key="bistoLeaveFeedback" android:widgetLayout="@layout/preference_widget_newpage" />

The remaining settings available through this screen are relatively uninteresting. In order, they include:

  • A link to a Tutorials screen
  • Switch to enable spoken notifications (more on that in a bit)
  • A button to trigger a request for permission to read notifications
  • Switch to the your PII (personally identifiable information)
  • The aforementioned link to launch OEM partner apps
  • Option to disable Google Assistant on Bisto
  • Standard hardware details: Battery level, connection status, firmware version, and serial number
    Note, there is also a line for "make and model," but it's not used in this screen yet

<string name="bisto_device_tutorial_pref_title">Tutorials</string>
<string name="bisto_device_tutorial_pref_summary">Get tips on how to talk to your Assistant, get notifications, and reply to messages</string>

<string name="bisto_device_notifications_pref_title">Spoken notifications</string>
<string name="bisto_device_notifications_pref_summary">Hear incoming notifications read aloud</string>

<string name="bisto_device_notification_access_pref_title">Turn on Notification access</string>
<string name="bisto_device_notification_access_pref_summary">Allows spoken notifications on your headphones</string>

<string name="bisto_device_oem_partner_app_title" />
<string name="bisto_device_oem_partner_app_summary">Additional settings for your headphones</string>

<string name="bisto_device_remove_device_pref_title">Remove your Google Assistant</string>

<string name="bisto_device_battery">Battery</string>
<string name="bisto_device_connection_status">Connection status</string>
<string name="bisto_device_firmware_version_title">Firmware version</string>
<string name="bisto_device_serial">Serial number</string>

<string name="bisto_device_make_and_model">Make and model</string>

<string name="bisto_device_help_pref">Help</string>
<string name="bisto_device_information_separator">Information</string>
<string name="bisto_device_leave_feedback">Leave feedback</string>

Buttons and operations

Part of the reason I started with details about other OEMs producing their own Bisto-like headphones is that it explains why many of the instructions we're about to see are written with two versions. The first version describes the layout of buttons in a way that can only be correct if it's referring to a specific model with known attributes, while the other uses terms that are descriptive but avoids referencing specific placement of the buttons.

Let's talk about how you will interact with Bisto. Since this device runs Google Assistant, it almost goes without saying that there's a microphone for voice commands. The other inputs are made up of three main buttons which the Google app simply refers to by their positions on the device: top, middle, and bottom. Based on the instructions here, everything you can do with Google Assistant is done by pressing and holding one of those buttons. I have a feeling that a regular press (without holding) will perform other operations like changing the volume or controlling playback of music, but it's also possible that Google chose to require a press and hold to prevent accidental touches from triggering events.

The instructions reveal that most other Bisto-like devices are likely to operate with a single dedicated Google Assistant button instead of the three separate buttons described above. Like many other small portable electronics with limited controls, this means operations will be activated through patterns of button presses.


<string name="announcement_chime_only_prompt">When you hear a notification chime, you can press and hold the top button to hear it.</string>
<string name="announcement_chime_only_prompt4">When you hear a notification chime, you can press the Google Assistant button to listen to the notification.</string>

<string name="announcement_queue_stop_prompt">You can stop this briefing at any time - just press and hold the bottom button.</string>
<string name="announcement_queue_stop_prompt4">By the way, you can stop me at any time. Just double-press the Google Assistant button.</string>

<string name="how_to_fetch">Just so you know, you can listen to your notifications for up to an hour. To hear them, press the top button.</string>
<string name="how_to_fetch4">By the way, you can listen to your notifications for up to an hour. To hear them, press the Google Assistant button.</string>

<string name="how_to_fetch_level_2">When you want to hear your latest notifications, just press and hold the top button.</string>
<string name="how_to_fetch4_level_2">When you want to hear your latest notifications, just press the Google Assistant button.</string>

<string name="microphone_action_prompt_1">To reply, press and hold the middle button while talking, then let go of the button.</string>
<string name="microphone_action_prompt4_1">To reply, press and hold the Google Assistant button while talking, then let go when you're done.</string>

<string name="microphone_action_prompt_2">To reply, press and hold the middle button.</string>
<string name="microphone_action_prompt4_2">To reply, press and hold the Google Assistant button while talking.</string>

<string name="voice_query_no_speech_follow_on">When you're ready, you can go ahead and start again.</string>
<string name="voice_query_wrong_button">To talk to me or ask me a question, press and hold the Google Assistant button while talking.</string>
<string name="voice_query_wrong_button4">To talk to me or ask me a question, press and hold the Google Assistant button on the left earcup while talking.</string>

<string name="finish_screen_message_baywolf">
<b>Give it a try.</b>"
"<b>Press &amp; hold</b>" the Google Assistant button while talking. When you're done, "<b>let go</b>" of the button.
Try saying \"What can you do?\""</string>
<string name="finish_screen_content_description">Animation of holding down the button on the back of the headset while a question is asked, then releasing the button when done.</string>
<string name="finish_screen_title">Your Assistant is set up!</string>
<string name="finish_screen_action_text">DONE</string>

Reading note: Names with a "4" at or near the end denote strings for hardware built by OEM partners. The other strings are specific to Bisto.


Notifications are an important part of Bisto, and Google Assistant is breaking some new ground by actually organizing and reading them aloud. Bisto will ask for permission to read your notifications so it can tell you about messages, calendar events, and more.


<string name="not_access_screen_title">Have your Assistant read your notifications to you</string>
<string name="not_access_screen_explanation">To hear your messages, calendar events, and other important info, give your Assistant access to your notifications</string>
<string name="not_access_screen_content_description">Animation of notifications being played into an ear.</string>
<string name="not_access_toast">Turn on notification access for %1$s.</string>
<string name="not_access_screen_cancel_button">SKIP</string>

<string name="no_notif_permission_fetch">To hear your notifications, turn on notification access on your phone. Just touch and hold the Home button, then tap 'headphones settings'.</string>

When notifications are requested, Bisto will pick the most pertinent and respond with straightforward language. For example, if a friend asked a question over Hangouts and there's a notification about a new video on YouTube, you might hear something like, "Message from Brian W and notifications from YouTube." On the other hand, if you're as inundated with notifications as I usually am, it's going to sound more like, "Message from Artem Russakovskii and 14 other updates." The prebuilt phrases currently focus on notifications from messaging apps and your calendars, and everything is generally mashed together as a number of "other updates."


<string name="bundle_summary_app_generic">Notifications from %1$s and %2$d other updates.</string>

<string name="bundle_summary_app_generic_remaining_messages">Notifications from %1$s and messages from %2$d people.</string>

<string name="bundle_summary_app_and_app">Notifications from %1$s and %2$s</string>
<string name="bundle_summary_app_and_app_same_app">Notifications from %1$s</string>
<string name="bundle_summary_app_and_event">Notifications from %1$s and one Calendar event.</string>
<string name="bundle_summary_app_and_message">Notifications from %1$s and messages from %2$s.</string>

<string name="bundle_summary_two_events">Two Calendar events</string>
<string name="bundle_summary_event_and_app">One Calendar event and notifications from %1$s.</string>
<string name="bundle_summary_event_and_message">One Calendar event and a message from %1$s.</string>
<string name="bundle_summary_event_generic">One Calendar event and %1$d other updates.</string>
<string name="bundle_summary_event_generic_remaining_messages">One Calendar event and messages from %1$d people.</string>

<string name="bundle_summary_message_and_message">Messages from %1$s and %2$s</string>
<string name="bundle_summary_message_and_app">Message from %1$s and notifications from %2$s.</string>
<string name="bundle_summary_message_and_event">Message from %1$s and one Calendar event.</string>
<string name="bundle_summary_message_generic">Message from %1$s and %2$d other updates.</string>
<string name="bundle_summary_message_generic_remaining_messages">Message from %1$s and %2$d other people.</string>

<string name="bundle_summary_with_action_prompt">%1$s. %2$s</string>
<string name="no_notifications_in_queue">You don't have new notifications right now.</string>
<string name="on_announcement_playback_failed">Sorry, I can't tell you all of your updates right now.</string>

Things get more interesting as Bisto gives details about individual notifications. Messages from apps like Allo and Hangouts can be read out with the name of the sender and the content. If the conversation is taking place in a group chat, the group can also be named.


<string name="single_person_says">%1$s says,</string>
<string name="message_contents">%1$s.</string>
<string name="blank_message_content">Blank message</string>
<string name="sender_and_message_contents">%1$s says, %2$s.</string>
<string name="non_interruptive_group_and_sender_and_message_contents">Messages in %1$s. %2$s says, %3$s.</string>
<string name="non_interruptive_messages_from_group">Messages in %1$s.</string>
<string name="non_interruptive_messages_from_one_person">Message from %1$s.</string>

<string name="interruptive_messages_from_one_person">%1$s.</string>
<string name="interruptive_summary_group_messaging_1">You have messages in %1$s.</string>
<string name="interruptive_summary_group_messaging_2">Messages in %1$s.</string>
<string name="interruptive_summary_group_messaging_3">Messages in %1$s.</string>
<string name="interruptive_summary_messaging_1">You have a message from %1$s.</string>
<string name="interruptive_summary_messaging_2">Message from %1$s.</string>
<string name="interruptive_summary_messaging_3">Message from %1$s.</string>
<string name="interruptive_messages_from_group">%1$s</string>
<string name="interruptive_group_and_sender_and_message_contents">%1$s. %2$s says, %3$s.</string>

<string name="unnamed_group_name">Group message</string>

The story is pretty similar with calendar events. Bisto will be able to tell you about events past, present, and future. Based on the situation, it will be able to tell you that events have already started, are about to begin, or the next event you have planned. A count of the remaining events will also be mentioned after the first.


<string name="gmail_intelligence_events_group_header">Events</string>
<string name="gmail_intelligence_more_events">More events</string>

<string name="event_summary_with_current_timestamp">%1$s is starting now.</string>
<string name="event_summary_with_future_timestamp">%1$s is %2$s</string>
<string name="event_summary_with_past_timestamp">%1$s started %2$s</string>

<string name="generic_event_summary_with_current_timestamp">Next event is starting now.</string>
<string name="generic_event_summary_with_future_timestamp">An event is starting %1$s</string>
<string name="generic_event_summary_with_past_timestamp">An event started %1$s</string>

<string name="multiple_event_summary_with_current_timestamp">%1$d events are starting now.</string>
<string name="multiple_event_summary_with_future_timestamp">%1$d events are starting %2$s</string>
<string name="multiple_event_summary_with_past_timestamp">%1$d events started %2$s</string>

<string name="announcement_multiple_events_different_times_one_soonest">%1$s. %2$d other events are starting later.</string>
<string name="announcement_multiple_events_different_times_multiple_soonest_now">%1$d events are starting now. %2$d other events are starting later.</string>
<string name="announcement_multiple_events_different_times_multiple_soonest_future">%1$d events are %2$s. %3$d other events are starting later.</string>
<string name="announcement_multiple_events_different_times_multiple_soonest_past">%1$d events started %2$s. %3$d other events are starting later.</string>

At this stage, most other types of notifications are handled with a generic readout of the app name and whatever text they have posted as content.


<string name="interruptive_summary_non_messaging_1">You have a notification from %1$s.</string>
<string name="interruptive_summary_non_messaging_2">Notification from %1$s.</string>
<string name="interruptive_summary_non_messaging_3">Notification from %1$s.</string>

<string name="single_notification_announcement_non_optimized">%1$s. %2$s</string>
<string name="single_notification_announcement_with_app_name_and_optimized_content">%1$s. %2$s</string>
<string name="single_notification_announcement_with_app_name_non_optimized">%1$s. %2$s. %3$s</string>

<string name="unknown_app_name">Unknown app</string>
<string name="unknown_email">Unknown email</string>
<string name="unknown_phone_number">Unknown number</string>
<string name="unknown_sender">Unknown sender</string>

I get the sense that some of the inspiration came from handling notifications on Android Wear and Google Glass. At one time, there were rumors circulating that something similar was in the works for Google Glass users. Notifications would be aloud and much of the interaction could be done with voice.

For all of this talk about notifications, what about those times when you don't want to be disturbed? Well, Bisto respects Do Not Disturb mode on your phone, so you can listen to music and focus without a regular stream of interruptions breaking through.


<string name="dnd_announcement_alarms">By the way, Do Not Disturb mode is on, so you won't hear your incoming notifications.</string>
<string name="dnd_announcement_priority">By the way, Do Not Disturb mode is on, so you won't hear all of your incoming notifications.</string>

Voice calling

The feature list for Bisto and other similar devices sounds a lot like the unholy coupling of a Google Home and a pair of decent Bluetooth headphones. At this point, there's no reason not to add the other obvious feature to the mix: Voice calling. After all, this thing is connected to your phone, it has speakers, and there's a pretty good microphone, so it makes sense that you should also be able to use it like a Bluetooth earpiece.

Support isn't limited to just standard phone calls, it also extends to apps that offer voice calling features. The list currently only includes Hangouts and WhatsApp. I'd be shocked if Duo didn't make it onto the list soon enough. Unfortunately, there's no indication of whether or not other apps will be able to join in the fun.


<string name="incoming_call">Call from %1$s</string>
<string name="incoming_hangouts_call">Hangouts call from %1$s. To answer, press the Google Assistant button.</string>
<string name="incoming_whatsapp_call">WhatsApp call from %1$s. To answer, press the Google Assistant button.</string>

There may be one catch, though I assume it's probably just an oversight. The lines above are written in only one version and it instructs users to press the Google Assistant button. That could mean Bisto doesn't actually handle voice calls, but devices from some other OEMs will. I find that highly unlikely, but worth pointing out.

Little things

This is just a quick aside, but two lines seem to indicate that Bisto will give spoken responses with its current battery level and time of day.

<string name="battery_level">Your headset's battery is at %1$d percent.</string>

<string name="time_announcement">It's %1$s.</string>

This might sound trivial, but I think back to all of the times I've wondered what the battery level was on a pair of Bluetooth headphones, and I'm already a fan of this.

Remaining stuff

We've covered basically everything of substance, but there are still quite a few lines left. What remains are strings for functions like installing firmware updates, more initial setup steps, and everything related to removing your Google account from the headphones. Readers are welcome to pick through these, but this isn't interesting enough to analyze in detail.


<string name="confirm_ota_message">New features and fixes are available. Your headphones won't be available during the update, which may take a few minutes.</string>
<string name="confirm_ota_positive_button">Update</string>
<string name="confirm_ota_title">Update %1$s?</string>

<string name="bisto_device_firmware_version_up_to_date">%1$s</string>
<string name="bisto_device_firmware_version_available">%1$s. New version available. Update now</string>
<string name="bisto_device_firmware_version_available_disconnected">%1$s. New version available</string>
<string name="bisto_device_firmware_version_applying">Updating to %1$s. This may take a few minutes</string>
<string name="bisto_device_firmware_version_applying_unknown">Updating. This may take a few minutes</string>

<string name="app_update_notification_title">Bisto update available</string>
<string name="app_update_notification_text">Update the Google app to the latest version.</string>
<string name="update_tooltip_text">New update available</string>

<string name="ota_notification_description">Bisto firmware update</string>
<string name="ota_ready_notif_title">Update %1$s</string>
<string name="ota_ready_notif_text">New features and fixes are available</string>
<string name="ota_up_to_date_notif_title">%1$s connected</string>
<string name="ota_up_to_date_notif_text">Your headphones have been updated and are ready to use</string>
<string name="ota_apply_action">Update</string>
<string name="ota_applying_notif_title">Updating %1$s</string>
<string name="ota_applying_notif_text">Your headphones won't be available for a few minutes</string>
<string name="ota_fail_notif_title">Can't update headphones</string>
<string name="ota_fail_notif_text">Try restarting your headphones. To troubleshoot, visit the Help Center.</string>

<string name="confirm_remove_device_confirm_toast">Your Google Assistant has been removed from your headphones.</string>
<string name="confirm_remove_device_error_toast">Cannot remove Google Assistant. Try again.</string>
<string name="confirm_remove_device_positive_button">Remove</string>
<string name="confirm_remove_device_title">Remove your Google Assistant?</string>
<string name="bisto_confirm_removing_device">Your Google Assistant has been removed from your headphones.</string>

<string name="bisto_information_preference_category">Information</string>
<string name="bisto_connectivity_audio_and_data">Connected</string>
<string name="bisto_connectivity_disconnected">Disconnected</string>
<string name="bisto_connectivity_assistant_disconnected">Assistant disconnected</string>
<string name="bisto_error_removing_device">Can't remove Google Assistant. Try again.</string>
<string name="bisto_magic_pairing_notification_title">Connect %1$s</string>
<string name="bisto_magic_pairing_notification_text">then set up your Google Assistant on these headphones</string>
<string name="bisto_magic_pairing_connected">Connected</string>
<string name="bisto_magic_pairing_connecting">Connecting…</string>
<string name="bisto_pairing_card_title_without_device_name">Headphones connected</string>
<string name="bisto_settings_chip_text">Headphones settings</string>
<string name="bisto_settings_header_description">Image of a headset.</string>
<string name="bisto_support_preference_category">Support</string>
<string name="bisto_udc_cancel_confirm_button_negative">Continue Setup</string>
<string name="bisto_udc_cancel_confirm_button_positive">Exit</string>
<string name="bisto_udc_cancel_confirm_title">Exit setup?</string>
<string name="bisto_unknown">Unknown</string>
<string name="pairing_notification_button_text">FINISH SETUP</string>
<string name="pairing_notification_text">Now set up your Google Assistant</string>
<string name="pairing_notification_title">%1$s connected</string>

One last thing: It's already showing up on iOS

A big thanks to Thomas Miller for sending this in to us. It seems that the Google app on iOS may already be revealing the button to initiate a connection to the headphones. The first of the screenshots above has a headphone button at the top right corner next to the Explore button (it looks like a drawer, I guess). This button launches into a connection screen, shown on the left.

If you think this screen is a strange place to leave a connection button so prominently in view, I agree. However, two lines of text basically confirm it to be true, at least for now. These strings are shown as warning messages right before a Google account is disconnected from Bisto. They give the obvious warnings that you won't receive notifications of messages, calendar events, or other information over the headphones, then follow with a note that you can set up Assistant again by holding down the Home button. As we all know, this is the screen we arrive at after holding down the Home button.


<string name="bisto_udc_cancel_confirm_message">Your headphones won't have the Google Assistant, so you won't hear your messages, calendar events, and other important info.
If you want to set up your Assistant later, touch &amp; hold the Home button on you phone.</string>
<string name="confirm_remove_device_message">Your headphones won't have the Google Assistant, so you won't hear your messages, calendar events and other important info.
If you want to set up your Assistant later, touch &amp; hold the Home button on your phone.</string>

Evidently, Google is rolling out the key components to perform testing of Bisto on both Android and iOS at the same time. This historically means that the engineers have moved on from internal testing within a team and other select individuals, and has begun private testing with outsiders. It's not a small step, and it rarely happens until a device is mostly finalized and it's time to iron out any final issues.

I generally avoid making predictions about hardware launches, especially with products that haven't really been leaked in a more tangible way, but the evidence is hard to ignore... Bisto appears to be on track to launch this Fall with the new Pixel phones. Even if it ships later than the phones, I'm anticipating that it will appear on stage during the same event. That's hardly unprecedented, since Daydream View, Google WiFi, and Google Home were all announced at the same time and trickled out to customers over the following weeks. I don't mean to get ahead of myself, but it might be time to begin saving for more than a new phone.


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: 7.10.25 beta

Developer: Google LLC
Price: Free