0

我的應用程序只支持Android TV設備。我已經將它上傳到Google Play Developers Console具有以下AndroidManifest.xml谷歌遊戲控制檯:Android TV的應用不支持的許多設備上

<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 PlayerXiaomi Mi Box 3是顯示爲不支持與消息:

此設備型號在應用的APK清單,並 該設備型號的,因此用戶不能安裝您的應用程序不支持。

其他受歡迎的Android TV設備也不受支持。似乎好像一切是正確的AndroidManifest.xml對我和所有活動都使用android:screenOrientation="landscape"。任何想法爲什麼這種設備不可用?

+0

嘗試刪除'RECORD_AUDIO'。 – CommonsWare

+0

@CommonsWare但如果它使用記錄音頻進行語音搜索呢?在這裏查看他們的官方示例https://github.com/googlesamples/leanback-showcase。 –

+0

我不知道你引用的設備提供的硬件功能是否提供'android.hardware.microphone'系統功能。我必須假設只有一部分Android TV設備提供了它。並且,通過請求「RECORD_AUDIO」,您*要求*設備支持「android.hardware.micrphone」。如果你的應用程序可以沒有這個功能,那麼添加一個''元素(類似於你的'觸摸屏')來表示它不是必需的,並且在運行時檢查它。也許它會幫助擴大你的範圍。 – CommonsWare

回答

1

RECORD_AUDIO權限是不受限制的使用麥克風。某些形式的語音輸入,特別是通過Play Services等平臺附加軟件時,可能不需要該權限。/Alexa的命令,我還沒有和語音輸入和Android電視上回放,但在一個時間至少一次,應用程序必須在選擇點火電視遙控器麥克風進不去,因爲這是保留給系統級語音搜索。

RECORD_AUDIO搭配的是它暗示你需要android.hardware.microphone系統功能。如果Android TV盒缺少麥克風,或者不提供它供應用開發人員直接使用,則不會聲明它具有該系統功能...因此,您的應用會阻止它。

據我所知,你的選擇是:

  1. 現場與觀衆有限,因爲你的應用程序需要完整的麥克風接入

  2. 添加<uses-feature>元說,android.hardware.microphone不是必需的,那麼只有使用在設備上的麥克風,實際上有一個(如果完全麥克風訪問是不是你的應用程序必需)

  3. 消除麥克風的使用完全,這樣就可以把RECORD_AUDIO

  4. 尋找一些其他的方式來處理語音輸入,這樣就可以把RECORD_AUDIO

從你的評論,我假設你選擇第4個選項。爲了其他人遇到此問題的益處,您可以考慮自己回答問題,更詳細地解釋爲什麼您最初請求的原因以及爲什麼您覺得您不再需要它。

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電視Leanback的支持庫,應用程序可以消除 需要在運行時請求RECORD_AUDIO

如果您有一個針對API Level 23的Android TV應用程序,請更新 該應用程序以使用SpeechRecognitionCallback並從清單中刪除RECORD_AUDIO 權限。

摘要

如果你開發的應用程序Android TV只,沒有必要指定應用定位API等級23+ RECORD_AUDIO許可。

如果您支持手機和平板電腦,您可以指定RECORD_AUDIO權限,但不需要<uses-feature android:name="android.hardware.microphone" android:required="false" />

相關問題