2009年6月20日土曜日

Android Music App on Beagle Board (1)

Android on Beagle Board 上で音楽アプリを使えるようにするための手順。
(1) ALSA ドライバをkernelに組み込む。
(2) ALSA関連のプロジェクトをrepoできるようにmydroid/.repo/local_manifest.xmlに以下のプロジェクトを追加してrepo syncする。
<project path="external/alsa-lib" name="platform/external/alsa-lib"/>
<project path="external/alsa-utils" name="platform/external/alsa-utils"/>
<project path="hardware/alsa_sound" name="platform/hardware/alsa_sound"/>

(3) ALSAを有効にするため vendor/embinux/beagle/BoardConfig.mkに以下を追加してmake
#BOARD_USES_GENERIC_AUDIO := true
BOARD_USES_ALSA_AUDIO := true
BUILD_WITH_ALSA_UTILS := true

(4) ビルドされたkernel, androidで起動すると以下のようなエラーが発生する。
adb logcat:
E/ALSALib ( 2204): external/alsa-lib/src/control/control.c:909:(snd_ctl_open_noupdate) Invalid CTL AndroidPlayback
E/AudioHardwareALSA( 2204): Unable to attach mixer to device AndroidPlayback: No such file or directory
E/AudioHardwareALSA( 2204): Unable to attach mixer to device default: No such file or directory
E/ALSALib ( 2204): external/alsa-lib/src/control/control.c:909:(snd_ctl_open_noupdate) Invalid CTL AndroidRecord
E/AudioHardwareALSA( 2204): Unable to attach mixer to device AndroidRecord: No such file or directory
E/AudioHardwareALSA( 2204): Unable to attach mixer to device default: No such file or directory

原因はAudioFlingerが参照するALSAデバイスファイルの位置が/dev/sndではなく/dev直下なため。シンボリックリンクを作成するようinit.rcを修正する。
# setup for alsa snd device
symlink /dev/snd/pcmC0D0c /dev/pcmC0D0c
symlink /dev/snd/pcmC0D0p /dev/pcmC0D0p
symlink /dev/snd/controlC0 /dev/controlC0
symlink /dev/snd/timer /dev/timer
chmod 0777 /dev/pcmC0D0c
chmod 0777 /dev/pcmC0D0p
chmod 0777 /dev/controlC0
chmod 0777 /dev/timer
chown root audio /dev/snd/controlC0
chown root audio /dev/snd/pcmC0D0c
chown root audio /dev/snd/pcmC0D0p
chown root audio /dev/snd/timer
参考:
http://d.hatena.ne.jp/bs-android/20090603/1244043649

0 件のコメント: