我正在开发一个谷歌电视应用程序,我想读一个USB闪存驱动器连接到谷歌电视的图像,并显示在我的应用程序。我已经知道如何显示图像,但我不知道如何从USB读取它。我试过这个代码:如何从USB闪存驱动器读取数据?
File imgFile = new File("sdcard/image/1.jpg");
但它不起作用的USB。
我正在开发一个谷歌电视应用程序,我想读一个USB闪存驱动器连接到谷歌电视的图像,并显示在我的应用程序。我已经知道如何显示图像,但我不知道如何从USB读取它。我试过这个代码:如何从USB闪存驱动器读取数据?
File imgFile = new File("sdcard/image/1.jpg");
但它不起作用的USB。
我认为你需要使用:
“/ 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和文件资源管理器的路径是正确的。
没有公共的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");
我试过使用这个库,但是当我尝试实例化VolumeManager时,它会引发“SecurityException:Licensing.allow()必须先在fr.maxcom ....(SourceFile:50)”被调用。我遵循以下指示:1)添加jar 2)生成api key 3)添加api key到manifest。 – 2013-10-17 00:37:40
我的问题是我将api键放在我的应用程序库的清单中(我使用的是VolumeManager),而不是在主应用程序清单中。也就是说,当我使用站点上的示例代码枚举卷和文件时,日志在VolumeManager中打印出约20条“Error:null”消息,并且StringBuilder为空。尽管在您的示例中添加了媒体存储目录。 – 2013-10-17 18:30:32
感谢但这并不工作,因为getExternalStorageDirectory方法返回所有aplications共享一个文件系统,它通常是SD卡,但在那样拥有多个谷歌电视设备外部存储,此方法返回共享的主要文件系统,并且Google电视中的文件系统不可移除。 – user1286765 2012-03-23 14:48:08