[英]How can you access external memory on Google TV
我正在開發使用索尼互聯網電視作為開發設備,它有4個USB端口。 所有或沒有端口可以與外部硬盤驅動器一起使用。 如何選擇和訪問設備上的外部存儲器與內部存儲器。
我可以使用以下方法訪問SD卡,或者至少可以訪問SD卡的電視標簽:
Environment.getExternalStorageDirectory();
但我似乎無法弄清楚如何找到外部USB設備。 我試圖沿着UsbManager類的路徑前進,但似乎應該有一種更簡單,更通用的方式。 我只是希望能夠看到大容量存儲設備,並且不想通過供應商ID等清理。但也許我在那里遺漏了一些東西。
這應該是可能的,因為我正在尋找Media Player應用程序在打開菜單並選擇“選擇設備”時找到的相同功能。
我只需要對驅動器的讀訪問權限,但讀/寫可能很有用。
提前致謝。
在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以檢索所有媒體文件。
示例代碼:
游標光標= 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。
因此直覺說要使用USB配件api 。 但是,這只適用於Android 3.1及以上,如果我沒記錯的話,google tv會加入3.0 API。 那說,從文檔:
com.android.future.usb:為支持Android 2.3.4中的USB附件模式,Google API附加庫包括后向移植的USB附件API,它們包含在此命名空間中。
因此,請檢查Google API附加庫以訪問usb內容。
但我似乎無法弄清楚如何找到外部USB設備。
Android SDK中沒有針對外部USB驅動器的官方支持。 我在Google TV開發者文檔中看不到任何內容,表明他們已在此區域添加了任何內容。
您無法使用任何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();
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.