我的应用仅支持Android TV
设备。我已使用以下Google Play Developers Console
将其上传到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>
问题是,目前它只显示了我用于测试应用程序的28个支持的设备和设备,例如Nexus Player
和Xiaomi Mi Box 3
显示为不支持该消息:< / p>
您的应用的APK清单中不支持此设备型号 因此,此设备型号的用户无法安装您的应用。
其他受欢迎的Android TV
设备(例如Nvidia Shield TV
)也不受支持。好像AndroidManifest.xml
中的所有内容都是正确的,所有活动都使用android:screenOrientation="landscape"
。任何想法为何不适用于此类设备?
答案 0 :(得分:2)
RECORD_AUDIO
权限是为了不受限制地使用麦克风。某些形式的语音输入,特别是通过Play服务等平台附加组件时,可能不需要该权限。我没有使用语音输入和Android TV,但至少曾经有一段时间,应用程序无法访问精选Fire TV遥控器上的麦克风,因为它是为系统级语音搜索/ Alexa命令保留的。< / p>
RECORD_AUDIO
的问题在于它暗示您需要 android.hardware.microphone
系统功能。如果Android电视盒没有麦克风,或者没有提供它供应用程序开发人员直接使用,它就不会声明它具有该系统功能......因此您的应用程序会阻止它。
AFAIK,您的选择是:
与有限的受众群体一起生活,因为您的应用需要完整的麦克风访问
添加<uses-feature>
元素,表示不需要android.hardware.microphone
,然后仅在实际拥有麦克风的设备上使用麦克风(如果完全麦克风访问对您的应用不是必不可少的)< / p>
完全消除麦克风使用情况,因此您可以放弃RECORD_AUDIO
找到处理语音输入的其他方法,以便放弃RECORD_AUDIO
从您的评论中,我假设您选择了#4选项。为了让其他人遇到这个问题,您可以考虑自己回答,更详细地解释您最初请求它的原因以及为什么您认为自己不再需要它。
答案 1 :(得分:0)
就我而言,我使用官方Leanback的SearchFragment作为例子(见AndroidManifest.xml)。从那里可以看出,它尝试使用对我有意义的RECORD_AUDIO
权限,因为搜索有Voice Input
功能,在我认识的大多数Android TV
设备上使用。当RECORD_AUDIO
功能提交给Google Play
时,大多数设备都不支持此功能。
但是,当@CommonsWare回答时,RECORD_AUDIO
权限意味着您需要android.hardware.microphone
系统功能。对于我使用的设备,麦克风用于远程控制器而不是设备本身,因此这可能是android.hardware.microphone
功能无法用于这些设备的原因。
有关RECORD_AUDIO
功能不再需要的更多解释,请参阅帖子New permissions requirements for Android TV:
使用Android TV Leanback支持库时,应用可以消除 需要在运行时期间请求RECORD_AUDIO
如果您有针对API级别23的Android TV应用,请更新 该应用程序使用SpeechRecognitionCallback并删除RECORD_AUDIO 来自你的清单的许可。
<强>概要强>:
如果您仅针对Android TV
开发应用,则无需为针对API级别23+的应用指定RECORD_AUDIO
权限。
如果您支持手机和平板电脑,则可以指定RECORD_AUDIO
权限,但<uses-feature android:name="android.hardware.microphone" android:required="false" />
不需要。