閉じる

SDカードが必須でない Android端末

先日入手した Sony Tableもそうなんだけど、16Gや 32Gといった比較的大容量のメモリを内蔵して /mnt/sdcard/に見せている。
で、SDカードを追加するとどうなるか。
/mnt/sdcard2/にマウントされる。*1
このパスが仕様で決まっていれば良いのだけど、実際は機種によって違っており、具体的にどこへマウントされるかを知る標準的な方法は存在しない。
ってなわけだから、アプリによってはこれらにアクセス*2 する手段が存在しない。*3
こういうアプリで使うデータは全て内蔵メモリへ格納する必要がある。*4
PCへつないだときに単純にマスストレージデバイスとして認識されるのなら救いがあるのだけど、Sony Tabletのように余計なお世話機能があるとかなり怠いことに。
…落ちはないっす。
アプリを作る側としては手当たり次第に見て回るか機種固有情報のテーブルをもつしかない状態に対する単なる愚痴。

2012/04/25追記

XPERIA acro HD(SO-03D)を触ってみたところ、「/mnt/sdcard/external_sd/」にマウントされるのを確認。
Environment.getExternalStorageDirectory()は /mnt/sdcard/を返すので、「知ってさえいれば」本当の SDカードへのアクセスは容易だね。

2012/05/12追記

HYUNDAI A7 HDを触ってみたところ、「/mnt/extsd/」にマウントされるのを確認。
Sony Tablet同様、知っていないとアクセスできないタイプだね。
ただ、PCに USB接続すると「/mnt/sdcard/」「/mnt/extsd/」それぞれ独立したストレージとして認識してくれるので扱いはこちらの方が数段楽。
ちなみに USB接続されたストレージは「/mnt/usbhost1/」にマウントされた。


*1 /mnt/usb0や /mnt/usb1等のディレクトリもあるのは USBホストになれる 3.xならではなんだろうな。

*2 Sony Tabletは問題ないようだけど、「sdcard2等にマウントされたメディアはプリインストールアプリから以外は読み込み専用」という機種も存在するらしく、アプリの性格によってはアクセスする意味がないと言うこともあるね。

*3 Adobe Reader for Androidなんかがそうだね。

*4 そんな事情だから Sony Tabletに SDカードをさすと「ファイル転送プログラム」なんてのが立ち上がるんだろうな。

コメントを残す

メールアドレスが公開されることはありません。必須項目には印がついています *

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)