Реализация диалога файлов в Android TV Leanback

у меня естьdirPath строка переменная, которую я хочу изменить в каталог по своему выбору для приложения Android TV. Я нахожу, что интерфейс слайд-шоу в Leanback-фреймворке немного обременителен для более тонких действий, но я бы хотел придерживаться его, когда смогу, так как я полностью новичок в Android и Java в целом.

Поэтому, стараясь придерживаться лучших практик, я бы хотел, чтобы пользователь мог изменитьdirPath указать каталог по своему выбору (dirPath используется в качестве переменной для поиска музыки в назначенном каталоге и его подкаталогах). На других платформах я искал бы стандартный диалог открытия файлов для ОС, но я не могу найти его в инфраструктуре Leanback.

Моя лучшая догадка используетGuidedStepFragments, Это кажется немного неуместным, чтобы ввести целую страницу параметров (см. Мой предыдущий комментарий о UX в виде слайд-шоу с откидным верхом) - все ради выбора каталога, но, похоже, у меня мало выбора? Во-вторых, я не вижу никакого виджета диалогового окнаGuidedActions, Возможно, я пропустил это, или же Google стремился сделать выбор файлов онлайн, а не локальным.

Дополнительная информация:

Я пытаюсь отсканироватьmp3 а такжеFLAC файлы во всех подкаталогахdirPath а затем добавить пути, метаданные и т. д. вSQLite база данных, которая у меня уже есть с фиктивными данными. Я избегаюmediastore поскольку у него слишком много ограничений, в частности невозможность доступа к сетевым ресурсам, что было бы желательно для доступа к NAS.

После того, как пользователь назначилdirPath исканирование запущен, я передам этоAsyncTask работать в отдельном фоновом потоке из пользовательского интерфейса.

Чтобы подвести итог:

Я пытаюсь просканировать подключенное хранилище устройства Android TV на наличие музыкальных файлов, используяAsyncTask в другой теме, чем пользовательский интерфейс. Скан будет переданdirPath строка переменная и проверит этот путь и все его подкаталоги на наличие музыкальных файлов, которые затем передадут в экстрактор метаданных перед сохранением соответствующих данных вSQLite база данных.

Я думаю, что у меня есть некоторое представление о реализации сканирования (Google предоставляет примеры) и успешно реализовал вставку фиктивных данных в базу данных. То, что я не могу управлять, это предоставить пользователю простой способ выбора путей для сканирования с помощью Android TV.Leanback библиотека. Видимо это не доступно вLeanback, Есть ли способ, которым я могу реализовать это, не кошмар? Я ищу как можно более простое диалоговое окно выбора каталога. Если он должен использовать всю страницу параметров, аляGuidedStepFragments, быть по сему.

Ответы на вопрос(3)

ить, обратите внимание, чтоСтруктура доступа к хранилищу недоступно в Android TV:

// from AOSP:
// cts/hostsidetests/appsecurity/test-apps/DocumentClient/src/com/android/cts/documentclient/
// DocumentsClientTest.java
private boolean supportedHardware() {
    final PackageManager pm = getInstrumentation().getContext().getPackageManager();
    if (pm.hasSystemFeature("android.hardware.type.television") || pm.hasSystemFeature("android.hardware.type.watch")) {
        return false;
    }
    return true;
}

Ты можешь проверитьintent.ACTION_GET_CONTENT(с дополнительнымIntent.createChooser), чтобы отнести его к другим приложениям, но по моему опыту он не работает на Sony Android TV (все еще изучая его)

 biscuitstack11 авг. 2016 г., 10:51
Это многообещающе, спасибо за отзыв Майкл.
 biscuitstack02 авг. 2016 г., 11:06
Спасибо, Майкл. Горько-сладкий, так как я счастлив, что не пропустил что-то очевидное, но грустно, что это так. Вызывает разочарование тот факт, что намерение Android TV побуждает разработчиков избегать локального хранилища. Такие устройства, как Shield, способны на многое. Я знаю, что это все еще выполнимая задача, пусть даже и долгожданная, но за пределами моей зоны комфорта, поэтому я могу решить этот вопрос, чтобы получить надежную отправную точку. Возможно, ответ (если он есть) вам тоже поможет.
 Michael Sotnikov10 авг. 2016 г., 08:46
Привет @biscuitstack, Относительно пути / выбора файла, Вы можете проверитьgithub.com/spacecowboy/NoNonsense-FilePicker, С правильной определенной темой (я взял цвета из худой темы) это выглядит хорошо по GuidedStepFragment UI. Единственное, что я изменил, этоrequestFocus вonLoadFinishedиначе есть некоторые проблемы с навигацией по dpad. К сожалению, у меня недостаточно репутации, чтобы написать правильный ответ на примере источника.
 CommonsWare12 дек. 2017 г., 22:53
«эта платформа Access Access Framework недоступна в Android TV» -ACTION_OPEN_DOCUMENT доступно на NVIDIA Shield 2017, как я только что протестировал. Работает так же, как и следовало ожидать.
 Michael Sotnikov14 дек. 2017 г., 22:16
@CommonsWare, и это доступно только на щит nvidia. Проверено со щитом, Mibox, Sony телевизоров.

Вы можете использовать любую уже существующую логику для просмотра файлов и реализовать диалог с настраиваемым представлением для вашего случая. Вы можете проверить приложение Es File explorer для справки. В Android TV вы можете реализовать и показать пользователю любой вид, который вы пожелаете. Мантра это'nextFocusDown', 'nextFocusUP', 'nextFocusLeft', 'nextFocusRight' для каждого вида иметь простую навигацию между компонентами пользовательского интерфейса. Если вы хотите подарить пользователю текст редактирования, будьте осторожны, поскольку нет специальных клавиатур, таких как цифровая клавиатура и т. Д., Представьте для Leanback.

В настоящее время Storage Access Framework не является частью Android TV, хотя можно создать собственный инструмент выбора файлов, используяGuidedStepFragment просматривать папки в локальной файловой системе, пока не найдете ту, которую хотите выбрать.

Ваш ответ на вопрос