Using ALSA audio drivers in Android
While working on a port of the Gingerbread (2.3.7) userland of Android for the N810, I had to figure out how to add support for an audio chip with a working ALSA driver in an Android build. The information was out there but it took me a while to figure everything out, so here’s a brief summary of the process.
First, of course, ALSA drivers for the chip must be enabled in the kernel; to check whether they are working, see if
/dev/snd is properly populated. If not, check if the driver has been compiled into the kernel and not as a module.
There are three libraries that act as intermediate layers between an ALSA sound device and the Android userland. Due to the recent relocation of the Android source tree, I used alternative URLs for the three libraries. The code (shamelessly stolen and modified from this Armadeus Wiki page) is as follows, assuming
$ANDROID_SOURCE points to the root of the checked-out Android source tree:
cd $ANDROID_SOURCE/external git clone git://git.omapzoom.org/platform/external/alsa-lib.git git clone git://git.omapzoom.org/platform/external/alsa-utils.git cd $ANDROID_SOURCE/hardware git clone git://git.omapzoom.org/platform/hardware/alsa_sound.git
However, a bogus commit to the last library in
platform/hardware/alsa_sound breaks the build (as explained in this thread), hence:
cd $ANDROID_SOURCE/hardware/alsa_sound git checkout ece3f1b6f1e6a67d02e42490eca6c7de62220b57
Then, modify the
BoardConfig.mk of your build to include:
HAVE_HTC_AUDIO_DRIVER := false BOARD_USES_GENERIC_AUDIO := false BOARD_USES_ALSA_AUDIO := true BUILD_WITH_ALSA_UTILS := true
And that should do the trick.