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

时间:2011-11-13 22:37:07

标签: android google-tv

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

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

Environment.getExternalStorageDirectory();

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

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

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

提前致谢。

4 个答案:

答案 0 :(得分:6)

在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以检索所有媒体文件。

示例代码:

  

Cursor cursor = 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。

答案 1 :(得分:1)

所以直觉说使用USB accessories api。但是,这只适用于Android 3.1及以上,如果我没记错的话,google tv会加入3.0 API。也就是说,来自文档:

  

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

请检查Google APIs add-on library以访问usb内容。

答案 2 :(得分:1)

  

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

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

答案 3 :(得分:0)

您无法使用任何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();
    }
}