2012-03-22 99 views
5

我正在开发一个谷歌电视应用程序,我想读一个USB闪存驱动器连接到谷歌电视的图像,并显示在我的应用程序。我已经知道如何显示图像,但我不知道如何从USB读取它。我试过这个代码:如何从USB闪存驱动器读取数据?

File imgFile = new File("sdcard/image/1.jpg"); 

但它不起作用的USB。

回答

1

我认为你需要使用:

“/ SD卡/ ......”,而不是“SD卡/ ......”

如果你尝试“SD卡/ ..”它会读取应用程序的文件目录,而不是您想要的SDCard。所以你的情况,它会尝试打开 “/data/data/your_project_package_structure/files/sdcard/image/1.jpg”

而且它可能有助于使用环境变量,让您的外部存储的目录/ usb

Uri u = Uri.fromFile(new File(Environment.getExternalStorageDirectory(), "blabla.xml")); 

确保使用debug和文件资源管理器的路径是正确的。

+1

感谢但这并不工作,因为getExternalStorageDirectory方法返回所有aplications共享一个文件系统,它通常是SD卡,但在那样拥有多个谷歌电视设备外部存储,此方法返回共享的主要文件系统,并且Google电视中的文件系统不可移除。 – user1286765 2012-03-23 14:48:08

1

没有公共的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"); 
+0

我试过使用这个库,但是当我尝试实例化VolumeManager时,它会引发“SecurityException:Licensing.allow()必须先在fr.maxcom ....(SourceFile:50)”被调用。我遵循以下指示:1)添加jar 2)生成api key 3)添加api key到manifest。 – 2013-10-17 00:37:40

+0

我的问题是我将api键放在我的应用程序库的清单中(我使用的是VolumeManager),而不是在主应用程序清单中。也就是说,当我使用站点上的示例代码枚举卷和文件时,日志在VolumeManager中打印出约20条“Error:null”消息,并且StringBuilder为空。尽管在您的示例中添加了媒体存储目录。 – 2013-10-17 18:30:32

相关问题