2012-03-22 95 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

相關問題