在Android TV Leanback中实现文件对话框

bis*_*ack 8 android android-studio android-tv leanback

我有一个dirPath String变量,我希望能够将其更改为我选择的Android TV应用程序目录.我觉得Leanback框架的幻灯片式界面对于更微妙的动作来说有点麻烦,但我想坚持下去,因为我是Android和java的完全初学者.

因此,尝试坚持最佳实践,我希望用户能够更改dirPath为指向他们选择的目录(dirPath用作变量来扫描指定目录及其子目录中的音乐).在其他平台上,我会寻找操作系统的标准文件打开对话框,但我似乎无法在Leanback框架中找到一个.

我最好的猜测是使用GuidedStepFragments.为了选择一个目录,引入一个完整的选项页面(请参阅我之前关于leanback的类似幻灯片的UX的评论)感觉有点不合适,但看起来我没有多少选择?其次,我没有在GuidedActions中看到任何文件对话框小部件.也许我错过了它,否则谷歌热衷于指导文件选择在线而不是本地.


附加信息:

我正在尝试扫描所有子目录中的mp3flac文件dirPath,然后将路径,元数据等添加到SQLite我已经使用虚拟数据的数据库中.我正在避免,mediastore因为它有太多的限制,特别是它无法访问网络共享,这对我来说是理想的NAS访问.

一旦用户提名a dirPath并开始扫描,我将把它传递给AsyncTask在UI上的单独后台线程上运行.


总结一下:

我正在尝试使用AsyncTask与UI不同的线程扫描Android TV设备的附加存储空间以查找音乐文件.扫描将被提供dirPath String变量,并将检查此路径及其所有子目录的音乐文件,然后将其传递到元数据提取器,然后将相关数据存储在SQLite数据库中.

我想我对实现扫描有一些了解(Google提供了示例)并且已成功实现将虚拟数据插入数据库.我似乎无法管理的是提供一种简单的方法让用户选择使用Android TV的Leanback库扫描的路径.显然这在Leanback中不可用.我有没有办法实现这不是一场噩梦?我正在寻找尽可能简单的目录选择对话框.如果它必须使用整个选项页面,ala GuidedStepFragments,那就这样吧.

Mic*_*kov 5

Leanback 库中没有这样的选择器。如果您决定实施,请注意,存储访问框架在 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;
}
Run Code Online (Sandbox Code Playgroud)

您可以检查intent.ACTION_GET_CONTENT(使用 optional Intent.createChooser)以将其分配给其他应用程序,但根据我的经验,它在 Sony Android TV 上不起作用(仍在调查中)