繁体   English   中英

如何在Google TV上访问外部存储器

[英]How can you access external memory on Google TV

我正在开发使用索尼互联网电视作为开发设备,它有4个USB端口。 所有或没有端口可以与外部硬盘驱动器一起使用。 如何选择和访问设备上的外部存储器与内部存储器。

我可以使用以下方法访问SD卡,或者至少可以访问SD卡的电视标签:

Environment.getExternalStorageDirectory();

但我似乎无法弄清楚如何找到外部USB设备。 我试图沿着UsbManager类的路径前进,但似乎应该有一种更简单,更通用的方式。 我只是希望能够看到大容量存储设备,并且不想通过供应商ID等清理。但也许我在那里遗漏了一些东西。

这应该是可能的,因为我正在寻找Media Player应用程序在打开菜单并选择“选择设备”时找到的相同功能。

我只需要对驱动器的读访问权限,但读/写可能很有用。

提前致谢。

在Google TV v2中,有关USB存储支持的一些更改。 USB驱动器的主要变化是:
1.USB驱动器将安装/mnt/media/usb.XXXXX而不是/ sdcard。 (XXXXX由USB卷的ID(卷号:vfat或exfat,uuid:ntfs)决定。)
2.GTV支持多个USB驱动器。 用户可以插入多个USB驱动器。

MediaProvider会索引所有插入的USB卷中的所有媒体文件。 因此,应用程序可以查询MediaProvider以检索所有媒体文件。

示例代码:

游标光标= getContentResolver()。query(
Images.Media.EXTERNAL_CONTENT_URI,
new String [] {
Images.Media._ID,
Images.Media.DATA,//文件路径
},
null,null,null);

应用程序如何在驱动器同步或弹出时检测到?:
您可以注册BroadcastReceiver以接收Intent.ACTION_MEDIA_SCANNER_FINISHED和Intent.ACTION_MEDIA_EJECT。

因此直觉说要使用USB配件api 但是,这只适用于Android 3.1及以上,如果我没记错的话,google tv会加入3.0 API。 那说,从文档:

com.android.future.usb:为支持Android 2.3.4中的USB附件模式,Google API附加库包括后向移植的USB附件API,它们包含在此命名空间中。

因此,请检查Google API附加库以访问usb内容。

但我似乎无法弄清楚如何找到外部USB设备。

Android SDK中没有针对外部USB驱动器的官方支持。 我在Google TV开发者文档中看不到任何内容,表明他们已在此区域添加了任何内容。

您无法使用任何getExternalXXX()访问USB设备,并且通过浏览MediaProvider,您将获得分类为媒体的唯一文件(例如,没有.txt)的平面集合(目录结构丢失)。

我为这种需求和其他一些开发了libmedia 在Sony NSZ-GS7上测试过。

示例代码:

VolumeManager volumeManager = new VolumeManager();
List<Volume> volumes = volumeManager.getVolumes();
for (Volume volume: volumes) {
    String label = volume.getLabel();
    File rootFolder = volume.getRoot();
    File[] files = rootFolder.listFiles();
    for (File file: files) {
        String filename = file.getName();
    }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM