突然消失するかもしれないブログ

”とつきえブログ”

AndroidでSDカードイメージをマウントしてMP3を再生してみる

Android SDK 1.0R1で、SDカードイメージをマウントしてみました。

操作手順は、以下の通りです。

1.mksdcard.exeで、SDカードイメージファイルを作成する。

mksdcard.exe -l “ラベル名” サイズ SDカードイメージファイル名

・サイズは、何もつけなければバイトサイズ、「K」をつけるとキロバイト、「M」をつけるとメガバイトになります。

・指定できるサイズは、8MB以上になります。謎なのですが、上限はないようです。

2.emulator.exeを実行する際に、SDカードイメージファイルを指定する。

emulator.exe -sdcard SDカードイメージファイル名

・emulator.exeが対応しているSDカードイメージファイルは、mksdcard.exeで、サイズを2047MBまで指定して作成したSDカードイメージファイルまで対応しています。(バイトサイズで指定すれば若干増やせるかもしれませんが試してません。)

3.emulatorでSDカードイメージが利用できるか確認します。

/sdcard配下にSDカードイメージがマウントされます。FAT32の領域です。

adb shell

# mount
mount
rootfs / rootfs ro 0 0
tmpfs /dev tmpfs rw,mode=755 0 0
devpts /dev/pts devpts rw,mode=600 0 0
proc /proc proc rw 0 0
sysfs /sys sysfs rw 0 0
tmpfs /sqlite_stmt_journals tmpfs rw,size=4096k 0 0
/dev/block/mtdblock0 /system yaffs2 ro 0 0
/dev/block/mtdblock1 /data yaffs2 rw,nosuid,nodev 0 0
/dev/block/mtdblock2 /cache yaffs2 rw,nosuid,nodev 0 0
/dev/block/mmcblk0 /sdcard vfat rw,dirsync,nosuid,nodev,noexec,uid=1000,gid=1000
,fmask=0711,dmask=0700,codepage=cp437,iocharset=iso8859-1,utf8 0 0

4.SDカードイメージにMP3ファイルを書き込んでみる。

adb push haruhiOP.mp3 /sdcard

MP3を再生してみる。

image

お~、ちゃんと音が鳴りますね。凄い。ARMエミュレーションでMP3をデコードしてるはずですよね。

MENUボタンを押すと、「Use as ringtone」というのがありますので、実行してみると、なんとMP3が着信音に設定できます。

image 

ところが悲しいことに、今のところ「Music」アプリケーション以外から着信音を設定する方法が見つからないため、Android標準のデフォルトの着信音に戻すことができません。

<mksdcard.exeとemulator.exeについて>

ちなみに、操作ミスをしてしまったところ、Androidでは8MB未満の小さなSDカードイメージは取り扱えないと警告が出ます。サイズを指定するのに「K」「M」の単位をつけないと、バイトサイズを指定したことになります。

mksdcard -l sdcard4GB 4096 mysd4GB.img
### WARNING : SD Card images < 8 MB cannot be used with the Android emulator

また、SDカードイメージは最大2GB未満までしか対応していないようです。

例えば、以下のように2GB(2×1024MB=2048MB)のイメージを作成します。

で、エミュレータを起動すると以下のようなエラーがでます。

mksdcard -l sdcard4GB 2048MB mysd2GB.img

emulator.exe -sdcard mysd2GB.img

### WARNING: SD Card files must be at least 8 MB, ignoring ‘mysd2GB.img’

ちなみに、2047MBを指定して作成したイメージならemulator.exeがSDカードイメージを正常にマウントして起動します。

cd /sdcard

/data/local/bin/tar cvfj -f system.tar.bz2 /system
/data/local/bin/tar/cvfj -f

 

6.作成したSDカードイメージファイルを、他のLinuxマシンでマウントしてみる。

先ほど作成したmysd1GB.imgをFTPやsambaで他のLinuxマシンにコピーします。

以下のような感じで、mysd1GB.imgをループバックデバイスとしてマウントします。

mount -t vfat -o loop mysd1GB.img /mnt/t

他のLinuxマシンでSDカードイメージに読み書きできます。

イメージファイルをダンプしてみるとFAT32みたいですね。

hexdump -C mysd1GB.img | grep FAT
00000050  00 00 46 41 54 33 32 20  20 20 00 00 00 00 00 00  |..FAT32   ……|
00000c50  00 00 46 41 54 33 32 20  20 20 00 00 00 00 00 00  |..FAT32   ……|

 

7.MP3再生中に、着信で割り込んでみる。

DDMS.bat(DDMSとは、Dalvik Debug Monitor Serviceです)を実行します。

左のペインに表示されている、ルートにある、emulator-5554(数字は実行の度にに変わります。)を選択して、右ペインの「Emulator Control」タブを選択します。

そこの中にある「Telephony Actions」のVoiceをチェックして、Incoming numberに適当な数字(ここでは117)を入れます。で、「Call」ボタンを押します。

image

電話がかかってきます。MP3の再生が中断されて、着信画面に自動的に切り替わります。ここで緑色の着信ボタンを押さないでそのままにしておきます。

image

続けて、DDMS上のIncoming numberに118(先ほどとは異なる番号)を入力して、「Call」ボタンを押すと、「Conference call」になります。

image 

ここで、緑色の着信ボタンをクリックします。すると、「Conference call」が開始されます。

image

8.通話を終了する。

DDMSで、Incoming numberに118を指定して「Hang up」ボタンを押すと、118がConferenceから抜けます。

続けて、DDMSで、Incoming numberに117を指定して「Hang up」ボタンを押すと、117がConferenceから抜けて、Conferenceが終了します。

ちなみに、最初の117から電話がかかってきたときに緑色の着信ボタンを押してから、118から電話がかかってきて緑色の着信ボタンを押すと、117との通話はhold(保留)されます。

また、着信割り込みで中断されたところから、MP3の再生が自動的に再開されます。(ドコモのFOMAだとどうなるんでしょう?)

ということで、Androidでは、複数の着信を同時に扱うことができ、複数の人と電話会議ができるようです。

広告

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中

%d人のブロガーが「いいね」をつけました。