React Native - Android TV - DPad 功能
React Native - Android TV - DPad Functionality
我已经为 android 电视的 google play store 发布了一个 React Native 应用程序。
对于电视,我收到了以下通知:
Missing DPad functionality
Your app requires user interaction for
menus or app navigation. Please make sure that all menus and app
navigation are fully functional using a DPad. Please refer to our DPAD
Control and Hardware Declaration documentation.
我们如何为反应本机 android 应用启用方向键导航?
如果您需要更多信息,请告诉我。
您的清单是否声明了正确的使用特性?主要是第一个 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"/>
我也想为 React Native 发布一个 android 电视应用程序,但是 androidtv 的焦点管理有错误,即如果你点击了右键,但该项目在垂直上方右边 android 电视什么都不做。
编辑------------
您尝试过实施这些配置吗?
<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"] />
最后,我解决了反应本机 android 电视应用程序的方向键导航和横幅问题。
问题是:(这包括甚至不属于问题一部分的问题)
1.没有全尺寸应用横幅
修复: create a folder called drawable
在"your-app/android/app/src/main/res"
下添加一个png文件(dimensions 320px x 180px and 320 dpi
),最重要的部分是,within image, there should be no other text then application name
,您用它发布了 APK。
2。不支持的硬件使用
修复: 我在发布问题之前修复了这个问题,但是如果你遇到这个问题,
refer the answer by **@reidisaki** on this question.
3。缺少 DPad 功能(问题中提出的实际问题)
修复: 我在屏幕上使用了 InputText。好吧,在 react-native version 0.56
下用于 android/android 电视,InputText cannot be focused by d-pad
(方向键)。 I stopped using TextInput
并修复了方向键导航。它也可以在 android 模拟器中使用,以测试应用程序。
为了使我的应用程序更兼容电视,在 AndroidManifest.xml 中,我将 activity 启动器升级为:
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LEANBACK_LAUNCHER"/>
</intent-filter>
要将 android 电视的主题升级为 Leanback:
I added leanback library
to "app-name/android/app/build.gradle" under dependencies section:
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>
我也遇到过这个问题(并设法解决)
在我的案例中缺少 Dpad 功能 问题与使用 TextInput 组件有关,AndroidTV 尚未完全支持该组件(无法使用 DPad 聚焦)
我通过使用 hack 使 TextInput 可聚焦来修复它。也就是说,将其包装在一个可触摸的对象中(TouchableWithoutFeedback、TouchableOpacity 和 TouchableHighlight 都可以用于此目的)并使用 onFocus 处理程序来管理嵌套 TextInput 组件上的焦点。
大致如下:
<TouchableOpacity
onFocus={() => {
textInput && textInput.current.focus();
}}
>
<TextInput ref={textInput} />
</TouchableOpacity>
修复 TextInput 焦点问题后,该应用已获准用于 AndroidTV
我已经为 android 电视的 google play store 发布了一个 React Native 应用程序。
对于电视,我收到了以下通知:
Missing DPad functionality Your app requires user interaction for menus or app navigation. Please make sure that all menus and app navigation are fully functional using a DPad. Please refer to our DPAD Control and Hardware Declaration documentation.
我们如何为反应本机 android 应用启用方向键导航?
如果您需要更多信息,请告诉我。
您的清单是否声明了正确的使用特性?主要是第一个 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"/>
我也想为 React Native 发布一个 android 电视应用程序,但是 androidtv 的焦点管理有错误,即如果你点击了右键,但该项目在垂直上方右边 android 电视什么都不做。
编辑------------ 您尝试过实施这些配置吗?
<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"] />
最后,我解决了反应本机 android 电视应用程序的方向键导航和横幅问题。
问题是:(这包括甚至不属于问题一部分的问题)
1.没有全尺寸应用横幅
修复: create a folder called drawable
在"your-app/android/app/src/main/res"
下添加一个png文件(dimensions 320px x 180px and 320 dpi
),最重要的部分是,within image, there should be no other text then application name
,您用它发布了 APK。
2。不支持的硬件使用
修复: 我在发布问题之前修复了这个问题,但是如果你遇到这个问题,
refer the answer by **@reidisaki** on this question.
3。缺少 DPad 功能(问题中提出的实际问题)
修复: 我在屏幕上使用了 InputText。好吧,在 react-native version 0.56
下用于 android/android 电视,InputText cannot be focused by d-pad
(方向键)。 I stopped using TextInput
并修复了方向键导航。它也可以在 android 模拟器中使用,以测试应用程序。
为了使我的应用程序更兼容电视,在 AndroidManifest.xml 中,我将 activity 启动器升级为:
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LEANBACK_LAUNCHER"/>
</intent-filter>
要将 android 电视的主题升级为 Leanback:
I
added leanback library
to "app-name/android/app/build.gradle" under dependencies section: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>
我也遇到过这个问题(并设法解决)
在我的案例中缺少 Dpad 功能 问题与使用 TextInput 组件有关,AndroidTV 尚未完全支持该组件(无法使用 DPad 聚焦)
我通过使用 hack 使 TextInput 可聚焦来修复它。也就是说,将其包装在一个可触摸的对象中(TouchableWithoutFeedback、TouchableOpacity 和 TouchableHighlight 都可以用于此目的)并使用 onFocus 处理程序来管理嵌套 TextInput 组件上的焦点。
大致如下:
<TouchableOpacity
onFocus={() => {
textInput && textInput.current.focus();
}}
>
<TextInput ref={textInput} />
</TouchableOpacity>
修复 TextInput 焦点问题后,该应用已获准用于 AndroidTV