Google TV

Basics

  1. User Interface
  2. Support for hardware and features
  3. Application suitability
  4. Classification of applications

Google TV devices are powered by Android operating system, middleware, and key Google TV applications. The Android SDK provides the tools and APIs for developing applications for Google TV using the Java programming language. The Android software stack is described in more detail in the topic What is Android? in the Android Developers Guide.

Note: The Android Developers Guide is the complete and definitive documentation for Android applications. Remember to consult it as you work on your Google TV applications.

The Honeycomb version of the Google TV platform corresponds to the Honeycomb MR1 release of the Android platform. Some Android features that are primarily used by mobile devices are not supported by Google TV; these are listed in the topic Feature Support in Google TV.

User Interface

As an Android environment, Google TV has some unique features:

  • The biggest difference between Google TV and "regular" Android platforms is the lack of a touchscreen input device. Instead, Google TV applications are typically controlled with a remote control which provides a 5-way (up, down, left, right, select) directional pad ("DPad") and a cursor.
  • Not all Google TV devices include their own display, so they detect screen resolution and density from the TV and from settings that the user makes during initialization.
  • TVs are large displays viewed from a distance, instead of small mobile displays viewed close up. The application UI has to be large enough to see, and it has to offer clear boundaries between user-selectable regions. Because of the distance between the user and the display, this environment is often called the 10 ft user experience.

The Android UI framework is flexible enough to handle all of these differences, and you can have one application package (.apk) that supports multiple Android devices including Google TV. To do this, you need to understand and apply Google TV's UI design principles. The topic User Interface offers more information about designing application UIs for Google TV.

Support for hardware and features

Google TV devices and the Google TV platform are slightly different from portable devices and platforms.

Features specific to Google TV

  • Live TV Android application: To support TV viewing, the Google TV platform includes the Live TV Android application. This is the software that actually displays the live TV signal.

    Note: The picture-in-picture (PIP) feature of the Live TV app is not available to other Android applications. Also, you can't run an Android application in the small PIP window.

  • Channel Listing content provider: To support live TV, the Google TV platform also includes the ChannelListing content provider, which offers a table of station callsigns and channels for the currently-configured signal provider.
  • Google TV add-on: Google TV also has an add-on package containing support for Google TV emulator. This helps you test your Android apps in a Google TV environment without using an actual Google TV device.
To learn more about these features, please read the topic Feature Support in Google TV.

Features unavailable on Google TV

Google TV devices do not have some of the hardware found on portable devices, so they don't support the same features. For example, no current Google TV devices have a gyroscope, so they don't offer device orientation sensing. The topic Feature Support in Google TV lists all of the features that are not supported.

Application suitability

Even if your Android application doesn't require unsupported hardware or features, it still may not be useful or suitable for Google TV. For example, an application that tracks gas mileage may only require hardware for connecting to a network, but it still may not be useful as a Google TV application. When you are deciding whether or not to make your application findable or installable as a Google TV app, you should also consider if it's an app that makes sense for a TV monitor in someone's living room.

In some cases, an application may be suitable even if it uses unsupported hardware. For example, the Panoramio application described in the topic Migrating Existing Applications uses geolocation if GPS is available, but prompts the user for a location if the GPS hardware isn't present. The application presents slightly different functionality on Google TV compared to a mobile device.

Classification of applications

In summary, there are several broad classifications of Android apps for Google TV:

Universal application
The application can provide full functionality on all devices including Google TV, and it is suitable for the Google TV experience. You don't have to filter it out of the Google Play Store or prevent it from installing to a Google TV device. If you decide not to filter it out of the Google Play Store, you still have to design it so that its UI works correctly on Google TV. You may need to provide more than one set of resources to accommodate different densities and sizes. If you want your application to appear in the Google Play Store for Google TV devices, you must specify in your manifest file (AndroidManifest.xml) that your application does not require full touchscreen support. To do this, add the following element specification exactly as it appears:
    <uses-feature android:name="android.hardware.touchscreen" android:required="false"/>
Limited functionality application
Some application features depend on on hardware or Android features that aren't available on Google TV, but the application is still useful. You may or may not want to filter it out of search results or prevent it from installing to a Google TV device. You still have to design the app to work correctly on Google TV. You also have to test for any hardware or features that aren't supported on Google TV, and you should disable any functionality that depends on them. The following code snippet demonstrates how to detect the feature using PackageManager:
if (getPackageManager().hasSystemFeature("com.google.android.tv")) {
    // disable features that are not supported on Google TV.
}

If you want your application to appear in the Google Play Store for Google TV devices, you must specify in your manifest file (AndroidManifest.xml) that your application does not require full touchscreen support. To do this, add the following element specification exactly as it appears:

    <uses-feature android:name="android.hardware.touchscreen" android:required="false"/>
Google TV-only application
The application only works with Google TV, or is only useful on Google TV. The main example of an application that only works on Google TV is one that tunes to live TV. Similarly, an example of an application that is only useful on Google TV is one that searches channel listings for keywords. To prevent a Google TV-only application from appearing in the Google Play Store on other devices, use the <uses-feature> element and specify the system feature com.google.android.tv. The exact syntax is:
    <uses-feature android:name="com.google.android.tv" android:required="true"/>
Application with versions targeting a device
You prefer to maintain separate application packages for different types or styles of devices. For example, you provide one package for mobile phone devices, another for tablets, and a third for Google TV. In this case, you should have a different manifest for each type of device. This allows you to control filtering and installation of each package. You can set up each manifest so that the Google Play Store only lists it for compatible devices, or Package Manager only installs it on compatible devices.
Application that is not suited to or can not be supported on Google TV
The application is not useful on Google TV or requires unsupported features. For example, a fuel mileage application may only require internet access, which is available on Google TV; it still may not be useful in a TV environment. On the other hand, an SMS application may be useful in a TV environment, but can't be supported on Google TV because it is designed to use telephony only.

The application may also be unsuited to Google TV because it uses features that are not supported at an adequate level. For example, a game application may use touchscreen, and while Google TV provides "touchscreen" control with the mouse pointer, it probably isn't good enough for playing a game.

If your application requires features that aren't supported on Google TV, then setting this requirement with the <uses-feature> element in AndroidManifest.xml with the attribute android:required="true" will filter it out of the Google Play Store when viewed from a Google TV device. To filter out an application that isn't useful on Google TV, use the <uses-feature> element with android:name="android.hardware.touchscreen" and android:required="true". This will filter out your application, because Google TV doesn't support android.hardware.touchscreen.

Authentication required

You need to be signed in with Google+ to do that.

Signing you in...

Google Developers needs your permission to do that.