我有一个dirPath
的String变量,我希望能够将其更改为我选择的目录,用于Android TV应用程序。我发现Leanback框架的幻灯片式界面对于微妙的操作有点笨重,但是我想尽可能地坚持使用它,因为我完全是初学者,对Android和Java都不熟悉。
因此,试图坚持最佳实践,我希望用户能够更改dirPath
以指向他们选择的目录(dirPath
被用作扫描指定目录及其子目录中的音乐所用的变量)。在其他平台上,我会寻找一个标准的文件打开对话框,但我似乎在Leanback框架中找不到这样的对话框。
我最好的猜测是使用GuidedStepFragments。这感觉有点不雅观,因为要选择一个目录就需要引入整个选项页面(参见我早期关于leanback幻灯片式UX的评论),但看起来我别无选择?其次,在GuidedActions中,我没有看到任何文件对话框小部件。也许我错过了,或者Google更倾向于将文件选择指向在线而不是本地。
额外信息:
我试图扫描dirPath
的所有子目录中的mp3和flac文件,然后将路径、元数据等添加到我已经使用虚拟数据开发的SQLite
数据库中。我避免使用mediastore
,因为它有太多限制,特别是无法访问网络共享,这对于我来说访问NAS会很方便。
总结: 我正在尝试使用“AsyncTask”在与UI不同的线程中扫描Android TV设备的附加存储器以查找音乐文件。“扫描”将得到“dirPath”字符串变量,并检查此路径及其所有子目录以查找音乐文件,然后将相关数据传递给元数据提取器,最后将其存储在SQLite数据库中。
我认为我已经理解了如何实现扫描(Google提供了示例),并已成功地将虚拟数据插入数据库。但是我似乎无法提供一种简单的方式让用户使用Android TV的“Leanback”库选择要扫描的路径(s)。显然这在“Leanback”中是不可用的。有没有一种方法可以实现这一点而不是噩梦?我正在寻找尽可能简单的目录选择对话框。如果必须使用整个选项页面,例如“GuidedStepFragments”,那就这样做吧。
ACTION_OPEN_DOCUMENT
在NVIDIA Shield 2017上是可用的。它的工作方式与您预期的基本相同。 - CommonsWare