Google Play applies filters that control whether your application shows up on Google TV devices. Filtering is determined by comparing device configurations that you declare in your app's Android Manifest file to the Google TV device configuration and by examining other factors such as default and implicit features (described below).
The following Android Manifest elements affect whether your app will show up on Google TV device:
This element declares a single hardware or software feature that is required by the application. Android assumes touchscreen feature is required for every application by default. Google TV is a non-touchscreen device, so to show up on Google Play on Google TV, your Android Manifest should include:
<uses-feature android:name="android.hardware.touchscreen" android:required="false"/>If your Android Manfest includes any of the Unsupported hardware and software features, it will be filtered out of Google Play.
If you decide that your application is exclusive to Google TV and you want it to only be available on Google TV compatible devices, you can declare a required feature to be com.google.android.tv. This will filter your app out of Google Play for any devices other than a Google TV device.
<uses-feature android:name="com.google.android.tv” android:required="true"/>
Google TV does not support apps that use native code. If your app requires NDK support, it will be filtered out of Google Play. So you should consider whether or not it is possible to avoid using the NDK for your app before you decide to port it to Google TV.
This element specifies the screen configurations with which the application is compatible. Google TV is "Large" screen, so if your app declares this element, be sure to include "large" screen. We recommend you avoid using this element, unless its absolutely needed. For more details on it, please see here.
This element specifies a shared library that the application must be linked against. The Google TV framework includes the following libraries:
Google TV supports OpenGL ES 2.0. These are the texture compression extensions supported on Google TV:
For Google TV you don't need to include any special values for this element. Please go through the detailed documentation on this element and keep in mind that Google TV is a "large" screen device.
Google TV is currently at sdk level 13,
so your app visibility on Google Play should only be affected by this element
if you specify
minSdkVersion > 13 or
maxSdkVersion < 13.
Google TV does not support the touchscreen feature. If your app declares:
<uses-configuration android:reqTouchScreen= "finger" / >it implies the touchscreen feature is required and your app will be filtered out of Google Play. For more information see here.
Screen Orientation for Activity
Google TV screen orientation is landscape by default and does not support portrait mode. If your Activity specifies that it requires portrait orientation through an Android Manifest tag, it will be filtered out of Google Play. If your activity requests portrait mode through code, it may pass Google Play filters, but the activity will not load.
Verifying the Android Manifest File
The Android SDK comes with a tool which lets you verify all the filtering criteria of your application as they will be interpreted by the Google Play Store. This is especially important for these types of features:
- Default Features that get assumed without being defined in your Android Manifest file, like the feature: android.hardware.touchscreen
- Implicit Features that are defined based on requested permissions, like android.hardware.camera. (For more details, please see: http://developer.android.com/guide/topics/manifest/uses-feature-element.html#implicit.)
The tool to verify all those filtering criteria is the Android Application Packaging Tool (aapt) found in the Android SDK under .../platform-tools/. For more information on aapt, please see: http://developer.android.com/guide/topics/manifest/uses-feature-element.html#testing.
For Google TV, keep an especially close look out for the android.hardware.touchscreen feature.
To display the filtering criteria, use the aapt command:
$ aapt dump badging [your_app.apk]Here is some sample output from aapt with the important pieces highlighted:
$ aapt dump badging ResolutionTest.apk package: name='com.my.sample.basicresolutiontest' versionCode='15' versionName='1.1.5' sdkVersion:'12' targetSdkVersion:'12' uses-feature-not-required:'android.hardware.touchscreen' application-label:'Resolution Test' application-icon-160:'res/drawable-hdpi/icon.png' application-icon-240:'res/drawable-hdpi/icon.png' application-icon-320:'res/drawable-xhdpi/icon.png' application: label='Resolution Test' icon='res/drawable-hdpi/icon.png' launchable-activity: name='com.my.sample.basicresolutiontest.TestMainActivity' supports-screens: 'small' 'normal' 'large' 'xlarge' supports-any-density: 'true' locales: '--_--' 'de' densities: '160' '240' '320' '65535'
When looking at this output, make sure that the feature android.hardware.touchscreen is listed as not required. It is also good practice for Google TV to define app icons for 320dpi resolution as well as a fallback for 213dpi or 240dpi.
The next step is typically to sign your app before uploading it to Google Play. More information about this can be found at http://developer.android.com/tools/publishing/app-signing.html.