2011年6月14日火曜日

[Android] SDカードへのパスの取得方法

SDカードには外部SDカードと内部SDカードがある機種がある。
Samsung端末などがそう。

こういった端末だと、Environment.getExternalStorageDirectory()して取得したSDカードへのパスは、内部パスになる。
それに対して、PCから直接見える場所が、外部パス。
Galaxy Tabの場合,内部パスが/mnt/sdcard、外部パスが/mnt/sdcard/external_sd。

外部パスは、adb shellで、
printenvコマンドで環境変数を出力すると、$EXTERNAL_STORAGEで設定されている。
$EXTERNAL_STORAGEの設定とファイルマネージャから確認できる外部パスは、下記の記事および手元の端末での確認ではすべて合致しているけれど、公式のドキュメントはないので、保証はない、という状態。
確認した端末は、次の3機種。

---
Galaxy Tab
内部SDカード:/mnt/sdcard/ (Environment.getExternalStorageDirectory)
外部SDカード:/mnt/sdcard/external_sd (ファイルマネージャ,adb shell)
環境変数EXTERNAL_STORAGE:/mnt/sdcard/external_sd

Camangi FM600
内部SDカード:/mnt/sdcard (Environment.getExternalStorageDirectory)
外部SDカード:/mnt/sdcard(ファイルマネージャ,adb shell)
環境変数EXTERNAL_STORAGE:/mnt/sdcard

VIA U07AV
内部SDカード:/sdcard (Environment.getExternalStorageDirectory)
外部SDカード:/sdcard(ファイルマネージャ,adb shell)
環境変数EXTERNAL_STORAGE:/sdcard
ちなみにmnt以下にはlocaldiskのみ
---

http://groups.google.com/group/android-group-japan/browse_thread/thread/53deac144d256b27/bdc76c63092ac990?hl=ja
http://blog.tappli.com/article/44620525.html
http://wlog.flatlib.jp/?itemid=1486

2011年6月2日木曜日

端末スリープ時に発生するConfigurationChange

端末スリープ時およびスリープからの復帰時に発生するConfigurationの変更は、orientationだけ。

スリープ時には、実際の端末の向きと関係なく、決まった方向にorientationが変更されるみたい。
この時のorientationの向きは、端末によって異なる。

手元の端末では、
Galaxy TabではORIENTATION_PORTRAIT - Constant Value: 1 (0x00000001)に、
Camangi FM600dではORIENTATION_LANDSCAPE - Constant Value: 2 (0x00000002)になった。

原則、AndroidManifestのactivityタグでscreenOrientationを設定していても、この設定変更は発生する。
(screenOrientationで設定した向きと端末のスリープ時の向きの設定が同じなら、向きが変わったことにならないので発生しない。)