【发布时间】:2012-03-22 19:11:25
【问题描述】:
我正在为 google tv 开发一个应用程序,我想从连接到 google tv 的 USB 闪存驱动器中读取图像并将其显示在我的应用程序中。我已经知道如何显示图像,但我不知道如何从 USB 读取它。我试过这段代码:
File imgFile = new File("sdcard/image/1.jpg");
但它不适用于 USB。
【问题讨论】:
标签: android google-tv usb-drive
我正在为 google tv 开发一个应用程序,我想从连接到 google tv 的 USB 闪存驱动器中读取图像并将其显示在我的应用程序中。我已经知道如何显示图像,但我不知道如何从 USB 读取它。我试过这段代码:
File imgFile = new File("sdcard/image/1.jpg");
但它不适用于 USB。
【问题讨论】:
标签: android google-tv usb-drive
没有公共 API 可以将 USB 设备作为文件系统进行访问。 getExternalStorageDirectory() 不是解决方案。
为了解决这个问题,我建议查看libmedia,这是一个旨在帮助开发人员构建应用程序的工具箱。
就这么简单:
VolumeManager volumeManager = new VolumeManager();
List<Volume> volumes = volumeManager.getVolumes();
Volume volume = volumes.get(0); // simplified
File rootFolder = volume.getRoot();
File imgFile = new File(rootFolder, "image/1.jpg");
【讨论】:
我认为你需要使用:
“/sdcard/....”而不是“sdcard/...”
如果您尝试“sdcard/..”,它将从您的应用程序的文件目录中读取,而不是您想要的 SDCard。所以在你的情况下它会尝试打开 "/data/data/your_project_package_structure/files/sdcard/image/1.jpg"
使用环境变量获取外部存储/usb 的目录也可能会有所帮助
Uri u = Uri.fromFile(new File(Environment.getExternalStorageDirectory(), "blabla.xml"));
确保使用调试和文件资源管理器路径正确。
【讨论】: