簡體   English   中英

如何在Google TV上訪問外部存儲器

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM