Я опубликовал собственное приложение реагирования в магазине Google Play для Android TV.
Что касается телевидения, я получил уведомление о:
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.
Как включить навигацию с помощью d-pad для приложений Android, поддерживающих реакцию?
Если вам нужна дополнительная информация, просто дайте мне знать.
@SanjayKakadiya все та же проблема. Сегодня вечером попробую несколько вещей. Дам вам знать, если у меня получится.
@SanjayKakadiya проверь мой ответ
В вашем манифесте указаны правильные возможности использования? в основном первый 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, а также для реагирования на родной язык, но управление фокусом для Android TV имеет ошибки, а именно, если вы нажмете правую кнопку, но элемент находится вертикально вверху и вправо, 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"] />
Да, я удалил все эти разрешения, пометив как ложные. Тем не менее, ошибка сохраняется.
Наконец, я исправил проблему с навигацией с помощью d-pad и баннером для Android-приложения для 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 tv, InputText cannot be focused by d-pad (стрелка). I stopped using TextInput и исправил навигацию с помощью d-pad. Он также доступен в симуляторе Android для тестирования приложения.
Чтобы мое приложение было более совместимо с ТВ, в AndroidManifest.xml я обновил свою программу запуска действий до:
<intent-filter>
<action android:name = "android.intent.action.MAIN" />
<category android:name = "android.intent.category.LEANBACK_LAUNCHER"/>
</intent-filter>
Чтобы обновить тему до уровня Leanback для Android TV:
Я 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>
Приянк, как вы сказали в пункте 3, вы перестали использовать TextInput. Что вы используете для получения данных от пользователя на телевизионных устройствах.
Я использовал компонент <Text />. Создал свою собственную экранную клавиатуру с помощью кнопок, но да, мои требования к вводу данных были очень ограничены. Так что у меня это сработало. Взял переменную в состоянии и сделал привязку с <Text />
Для TextInput вы можете разместить прозрачный компонент TouchableOpacity. Получив фокус, принудительно установите фокус на InputText.
Я тоже столкнулся с этой проблемой (и мне удалось исправить)
В моем случае проблема Отсутствует функциональность Dpad была связана с использованием компонента TextInput, который еще не полностью поддерживается на AndroidTV (не может быть сфокусирован с помощью DPad)
Я исправил это с помощью хака, чтобы сделать TextInput фокусируемым. А именно, обернул его в touchable (для этой цели подойдут TouchableWithoutFeedback, TouchableOpacity и TouchableHighlight) и использовал обработчик onFocus для управления фокусом на вложенном компоненте TextInput.
Что-то в этом роде:
<TouchableOpacity
onFocus = {() => {
textInput && textInput.current.focus();
}}
>
<TextInput ref = {textInput} />
</TouchableOpacity>
После устранения проблемы с фокусом TextInput приложение было одобрено для AndroidTV.
У меня такая же проблема. Вы получили ответ. Поделитесь пожалуйста решением.