我已经为Android电视向Google Play商店发布了一个react native应用。
对于电视,我收到了以下通知:
缺少DPad功能 您的应用需要用户互动 菜单或应用导航。请确保所有菜单和应用 使用DPad可以完全导航。请参考我们的DPAD 控制和硬件声明文档。
如何为react-native android应用启用d-pad导航?
如果您需要更多信息,请告诉我。
答案 0 :(得分:3)
最后,我已经修复了反应本机android电视应用程序的d-pad导航和标题问题。
问题是:(其中包括甚至不是问题的一部分)
1。没有完整尺寸的应用横幅
修复: create a folder called drawable
下的"your-app/android/app/src/main/res"
,添加一个png文件(dimensions 320px x 180px and 320 dpi
),最重要的部分是您发布APK的 within image, there should be no other text then application name
。
2。不支持的硬件使用
修复: :我在发布问题之前已解决了此问题,但是如果您遇到问题,则
refer the answer by **@reidisaki** on this question.
3。缺少DPad功能(问题中出现了实际问题)
修复: :我在屏幕上使用InputText。好吧,在android / android tv的react-native version 0.56
下, InputText cannot be focused by d-pad
(方向键)。 I stopped using TextInput
,它固定了触摸板导航。它也可以在android模拟器中进行测试。
为使我的应用程序与电视更加兼容,在 AndroidManifest.xml 中,我将活动启动器升级到:
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LEANBACK_LAUNCHER"/>
</intent-filter>
要将主题升级为适用于android电视的leanback:
我 added leanback library
到“依赖项”部分下的“ app-name / android / app / build.gradle”:
dependencies {
....
compile "com.android.support:leanback-v17:${rootProject.ext.supportLibVersion}"
}
在 AndroidManifest.xml 中,我将主题更改为 @style/Theme.Leanback
<application
android:name=".MainApplication"
android:label="@string/app_name"
android:icon="@mipmap/ic_launcher"
android:banner="@drawable/banner"
android:allowBackup="true"
android:theme="@style/Theme.Leanback">
....
</application>
答案 1 :(得分:1)
您的清单是否声明了正确的使用功能?主要是第一个otne touchScreen需要false
<uses-feature android:name="android.hardware.touchscreen"
android:required="false"/>
<uses-feature android:name="android.hardware.faketouch"
android:required="false"/>
<uses-feature android:name="android.hardware.telephony"
android:required="false"/>
<uses-feature android:name="android.hardware.camera"
android:required="false"/>
<uses-feature android:name="android.hardware.nfc"
android:required="false"/>
<uses-feature android:name="android.hardware.location.gps"
android:required="false"/>
<uses-feature android:name="android.hardware.microphone"
android:required="false"/>
<uses-feature android:name="android.hardware.sensor"
android:required="false"/>
我也希望发布一个Android TV应用程序以响应本机,但是androidtv的焦点管理存在一些错误,即如果您单击了正确的按钮,但是该项目垂直位于上方,而android tv却没有任何作用。
编辑------------ 您是否尝试过实施这些配置?
<uses-configuration
android:reqFiveWayNav=["true" | "false"]
android:reqHardKeyboard=["true" | "false"]
android:reqKeyboardType=["undefined" | "nokeys" | "qwerty" | "twelvekey"]
android:reqNavigation=["undefined" | "nonav" | "dpad" | "trackball" | "wheel"]
android:reqTouchScreen=["undefined" | "notouch" | "stylus" | "finger"] />
答案 2 :(得分:0)
我也遇到了这个问题(并设法解决了)
就我而言,缺少Dpad功能的问题与使用TextInput组件有关,AndroidTV尚不完全支持TextInput组件(无法使用DPad进行聚焦)
我通过使用黑客使TextInput可聚焦来修复它。即,将其包装在一个touchable中(TouchableWithoutFeedback,TouchableOpacity和TouchableHighlight均可用于此目的),并使用onFocus处理程序来管理对嵌套TextInput组件的关注。
遵循以下原则:
<TouchableOpacity
onFocus={() => {
textInput && textInput.current.focus();
}}
>
<TextInput ref={textInput} />
</TouchableOpacity>
在解决了TextInput焦点问题后,该应用已获批准用于AndroidTV