2012-03-22 12 views
5

私はGoogle TVのアプリケーションを開発しています.Googleのテレビに接続されたUSBフラッシュドライブから画像を読み込んで、アプリケーションに表示したいと考えています。私はすでにイメージを表示する方法を知っているが、私はUSBからそれを読む方法を知らない。私はこのコードで試した:USBフラッシュドライブからデータを読み取るにはどうすればよいですか?

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

しかし、それはusbのためには動作しません。

「/ SDカード/ ....」の代わりに「SDカード/ ...」

あなたがしようとした場合

「SDカード/ ..」それから読まれます

答えて

1

は、私はあなたが使用する必要があると思いますあなたが望むSDカードではなく、あなたのアプリケーションのファイルディレクトリ。したがって、あなたのケースでは開こうとします "/ data/data/projects_package_structure/files/sdcard/image /1.jpg"

また、 usb

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

デバッグとファイルエクスプローラを使用してパスが正しいことを確認してください。

+1

おかげではなくgetExternalStorageDirectory方法は、すべてのaplications間で共有されるファイルシステムを返し、通常、それはSDカードであるが、複数の持っているGoogleのテレビのようなデバイスであるため、これは動作しません。このメソッドは共有されているプラ​​イマリファイルシステムを返し、Google TVのファイルシステムはリムーバブルではありません。 – user1286765

1

ファイルシステムとしてUSBデバイスにアクセスするパブリックAPIはありません。 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)追加された瓶2)生成されたAPIキー3)マニフェストにAPIキーを追加しました。 –

+0

私の問題は、主なアプリケーションマニフェストではなく、アプリケーションライブラリ(VolumeManagerを使用していた場所)のマニフェストにapiキーを配置していたことでした。つまり、サイト上のサンプルコードを使用してボリュームとファイルを列挙すると、ログにはVolumeManagerの「Error:null」という約20のメッセージが表示され、StringBuilderは空です。これは、あなたの例のようにメディアストレージディレクトリを追加しているにもかかわらずです。 –

関連する問題