简体   繁体   中英

Google Play Console: Android TV app unsupported on many devices

My application supports only Android TV devices. I've uploaded it to Google Play Developers Console with the following AndroidManifest.xml :

<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.RECORD_AUDIO" />

<uses-feature
    android:name="android.hardware.touchscreen"
    android:required="false" />
<uses-feature
    android:name="android.software.leanback"
    android:required="true" />

<application
    android:name=".MediaApplication"
    android:allowBackup="true"
    android:icon="@mipmap/ic_launcher"
    android:label="@string/app_name"
    android:supportsRtl="true"
    android:theme="@style/Theme.Leanback">
    <activity
        android:name=".presentation.main.MainActivity"
        android:banner="@drawable/app_icon"
        android:icon="@drawable/app_icon"
        android:label="@string/app_name"
        android:logo="@drawable/app_icon"
        android:screenOrientation="landscape">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LEANBACK_LAUNCHER" />
        </intent-filter>
    </activity>

The problem is, that currently it shows only 28 supported devices and devices I've used for testing the application, such as Nexus Player and Xiaomi Mi Box 3 are displayed as unsupported with the message:

This device model is not supported in your app's APK manifest and hence users of this device model cannot install your app.

Other popular Android TV devices like Nvidia Shield TV are also unsupported. Seems to be like everything is correct in AndroidManifest.xml for me and all activities use android:screenOrientation="landscape" . Any ideas why is it unavailable for such devices?

The RECORD_AUDIO permission is for unfettered use of the microphone. Certain forms of voice input, particularly when through platform add-ons like Play Services, might not require that permission. I haven't played with voice input and Android TV, but at least once upon a time, apps had no access to the microphone on select Fire TV remotes, as that was reserved for system-level voice search/Alexa commands.

The catch with RECORD_AUDIO is that it implies that you need the android.hardware.microphone system feature. If an Android TV box either lacks a microphone or does not offer it for direct use by app developers, it will not declare that it has that system feature... and therefore your app would block it.

AFAIK, your options are:

  1. Live with the limited audience, because your app needs complete microphone access

  2. Add a <uses-feature> element to say that android.hardware.microphone is not required, then only use the microphone on devices that actually have one (if complete microphone access is not essential for your app)

  3. Eliminate microphone usage entirely, so you can drop RECORD_AUDIO

  4. Find some other way to handle voice input, so you can drop RECORD_AUDIO

From your comment, I assume that you chose option #4. For the benefit of others encountering this question, you might consider answering it yourself, explaining in greater detail why you were requesting it originally and why you feel that you no longer need it.

In my case, I've used a SearchFragment from official Leanback as an example (see AndroidManifest.xml ). As can be seen there, it tries to use RECORD_AUDIO permission which made sense for me as there is a Voice Input feature for search which is used on most of the Android TV devices I know. And when RECORD_AUDIO feature was submitted to Google Play it was unsupported on most of the devices.

But as @CommonsWare answered, RECORD_AUDIO permission implies that you need the android.hardware.microphone system feature. And for the devices I've used, microphone is used on remote controller and not on the device itself, so that is probably a reason android.hardware.microphone feature is not available for those devices.

More explanations on why RECORD_AUDIO feature is not needed anymore can be found in post New permissions requirements for Android TV :

When using the Android TV Leanback support library, apps can eliminate the need for requesting RECORD_AUDIO during runtime

If you have an Android TV app targeting API Level 23, please update the app to use SpeechRecognitionCallback and remove RECORD_AUDIO permission from your manifest.

SUMMARY :

If you developing app for Android TV only, there is no need to specify RECORD_AUDIO permission for apps targeting API Level 23+.

In case you support phones and tablets you can specify RECORD_AUDIO permission but as not required with <uses-feature android:name="android.hardware.microphone" android:required="false" /> .

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM