Galaxy S の マイクロSDカードマウントについて質問です。

1,434 views
Skip to first unread message

福井登志也

unread,
Feb 17, 2011, 2:48:20 PM2/17/11
to android-g...@googlegroups.com
ちょるちょるドットコムの福井と申します。


Galaxy s をターゲットに開発をされている方に質問させて頂きます。

Galaxy S では、SDカードの パスとして、以下の二つが用意されているとのことらしいのですが、実際にはどうなんでしょうか?

内臓SDカード: /sdcard
外部マイクロSD: /sdcard/external_sd


先日、SDメモリカードの内容をサーチするアプリを作成、公開したのですが、目的のファイルが見つからないとのことで、どうやら目的のファイルはマイクロSDに納められていたようです。 私の手元にはこの実機が無いものですので、ちょっと困っています。

しかし、この場合、/sdcard というパスを起点にしてサーチを行えば、マイクロSDカードがマウントされている限り、ファイルが見つかる気がします。

また、二つのSDをマウントする状況において、

Environment.getExternalStorageState()

というコードがどのように振舞うかも疑問です。


以上、どなたか教えていただけると幸いです。


福井 登志也 < fu...@choruchoru.com >

国東半島ちょるちょる村発 ソフトウェアの町工場
ちょるちょるドットコム   http://choruchoru.com


飯塚康至

unread,
Feb 17, 2011, 6:59:28 PM2/17/11
to android-g...@googlegroups.com, 福井登志也
こんにちは、飯塚です。

Y.A.Mさんのブログにまとまっています。参考になるかと。
http://y-anz-m.blogspot.com/2010/08/android_31.html

2011年2月18日4:48 福井登志也 <dx7...@gmail.com>:

> --
> このメールは Google グループのグループ「日本Androidの会」の登録者に送られています。
> このグループに投稿するには、android-g...@googlegroups.com にメールを送信してください。
> このグループから退会するには、android-group-j...@googlegroups.com
> にメールを送信してください。
> 詳細については、http://groups.google.com/group/android-group-japan?hl=ja
> からこのグループにアクセスしてください。
>

--
以上、宜しくお願いします。

飯塚 康至

Toru KIKUCHI

unread,
Feb 17, 2011, 6:19:39 PM2/17/11
to android-g...@googlegroups.com

福井樣

初めまして、菊地と申します。

手元にGalaxySがあったのでご回答いたします。

おっしゃるとおり両方のフォルダが存在し、外部マイクロSDはexternal_sd です。
確認のため抜き挿ししてみましたが、抜けばアンマウントされ、中身は見れなくなりました。

以上、参考になれば幸いです。

2011/02/18 6:23 "福井登志也" <dx7...@gmail.com>:

福井登志也

unread,
Feb 19, 2011, 1:30:48 PM2/19/11
to android-g...@googlegroups.com
菊地様
 
福井です。

貴重な情報、ありがとうございます。 大変、参考になりました。


恐縮ですが、更に突っ込んだ内容を申し上げますと、

私の所有する XPERIA は、一つのボリュームしかないので、

Environment.getExternalStorageDirectory().toString();

を実行すると、文字列 "/sdcard" を返してくれるのですが、Garaxy S の場合はどうなのかが気になるところです。(おそらく、ここはXPERIAと同様に 内部 SDカードのマウントポイントを返してくれると思っていますが。)


また、実機をPCにUSB接続して、SDメモリの内容をPCで閲覧している時の実機側から見たSDメモリの状態がGaraxy S だとどうなるのかを知りたいのです。

これを取得するためのAPI は、
Environment.getExternalStorageState() なのですが、

XPERIAの場合は、以下を返します。

 ・PCとの接続時(実機をUSBマウント) → Environment.MEDIA_UNMOUNTED
 ・PCから実機を切り離したとき → Environment.MEDIA_MOUNTED


と、いうワケでおそらく、複数のボリュームを持つ Garaxy S の場合は

Environment.getExternalStorageState() で、

内部SDカードをマウントしているかどうかは判断できても、外部マイクロSDカードのマウント状態は分らないのではないかと思っています。

多分、 /sdcard/external_sd の下に ファイルやフォルダが無くなったら microSD をアンマウントしたと判断するしかないのかと...。

きっと想像ではこんな感じだと思っています。


実機が無いってのは困ったモンです。 それでも、ケータイアプリを書く場合に比べたらラクになったと思いますが...(^-^;)

// ちょるちょるドットコム 福井 登志也



2011年2月18日8:19 Toru KIKUCHI <toruki...@gmail.com>:

Yusuke Hirano

unread,
Feb 20, 2011, 8:40:37 AM2/20/11
to android-g...@googlegroups.com
福井様

平野@u_s_kです。
疑問の解決になるかどうかわかりませんが、似たような事が私も気になり、
外部メモリの取り扱いに関してしらべてみました。

http://www.tenshodo.org/tdiary/?date=20101211#p02

GalaxySの場合、内部メモリのパスが返されるようなので、なかなか面倒そうです。


2011年2月20日3:30 福井登志也 <dx7...@gmail.com>:

福井登志也

unread,
Feb 20, 2011, 9:54:18 AM2/20/11
to android-g...@googlegroups.com
u_s_k 平野様

 福井@ちょるちょるドットコムです。


 ブログ、拝読させて頂きました。 大変参考になり、なんとなく状況も分ってきました。


 どうやら、Nexsus One は 内部フラッシュメモリと SDカードメモリは別物として扱ってるみたいですね。

 Xperia ユーザーの私としては、こちらも知らない事実でした。 正直、驚いています。


 で、Xperia と、Garaxy S の場合は、もともと内部メモリとして、SDカードメモリを使用していて、デバイスをPCから切り離した通常状態で

 MEDIA_MOUNTED = true

 となるのかと思います。 (Nexsus One は内臓フラッシュが SDではないので、 false なのかと。)

ブログの結論の通り、Garaxy S ではやはり、外部 microSD カードメモリのマウント状態もパスも返す関数も存在しないみたいですね。


尚、Environment.getExternalStorageDirectory().getPath()

で、返すパスも

Xperia : /sdcard
Galaxy S : /mnt/sdcard/

と、違いがあるみたいですね。 これも知りませんでした。

本当に、色々な情報、ありがとうございました。 感謝感謝です!!


// ちょるちょるドットコム 福井登志也


2011年2月20日22:40 Yusuke Hirano <u-s...@tenshodo.org>:
Reply all
Reply to author
Forward
0 new messages