Android中使用ALSA声卡及alsa conf asound conf

本文详细介绍了在Android系统中如何配置和使用ALSA(Advanced Linux Sound Architecture)声卡,包括配置文件解析、源码下载、系统配置修改、编译过程、音频路径问题以及调试步骤。通过配置asound.conf文件和使用alsa命令,实现对音频设备的正确操作。
摘要由CSDN通过智能技术生成
               

1. 配置文件

总共有三个配置文件:

 1) /system/usr/share/alsa/alsa.conf :它指定了另外两个配置文件的路径

 2) /etc/asound.conf
 3) .asoundrc

可通过cat /proc/asound/cards查看当前系统有哪些声卡。

  

2. 第一步

cd到Android源码树根目录下:

cd /home/xxx/android/Android-2.0

从Android主页下载ALSA声卡的相关源码:

git clone git://android.git.kernel.org/platform/external/alsa-lib.git

git clone git://android.git.kernel.org/platform/external/alsa-utils.git

git clone git://android.git.kernel.org/platform/hardware/alsa_sound.git

这样下载完之后的各个包将会自动放到合适的地方。

3. 第二步

修改自己板子的BoardConfig.mk,使板子使用ALSA声卡,如下:
#HAVE_HTC_AUDIO_DRIVER := true
#BOARD_USES_GENERIC_AUDIO := true
BOARD_USES_ALSA_AUDIO := true
BUILD_WITH_ALSA_UTILS := true

如果是使用我们提供的Android-2.0那么这个BoardConfig.mk应该位于Android-2.0/build/target/board/generic

4. 第三步

重新编译Android

5. 第四步

在制作出来的根文件系统中添加/system/etc/asound.conf脚本配置声卡的工作参数,内容如下:
# #
# # Mixer devices
# #
ctl.AndroidPlayback {
        type hw
        card 0 # Can replace with drivers name from /proc/asound/cards
}
ctl.AndroidRecord {
        type hw
        card 0  #如果有多个Mic,可以指定一个Mic,则使用snd_pcm_open(.., "default",..)打开设备时,

                    #则只打开此设备,否则会从所有Mic进行录音
}

# #
# # Playback devices
# #
pcm.AndroidPlayback {
                type hw
                card 0
                device 0
}

pcm.AndroidPlayback_Speaker {
                type hw
                card 0
                device 0
}

pcm.AndroidPlayback_Speaker_normal {
                type hw
                card 0
                device 0
}

pcm.AndroidPlayback_Speaker_ringtone {
                type hw
                card 0
                device 0
}

pcm.AndroidPlayback_Speaker_incall {
                type hw
                card 0
                device 0
}

pcm.AndroidPlayback_Earpiece {
                type hw
                card 0
                device 0
}
               
pcm.AndroidPlayback_Earpiece_normal {
                type hw
                card 0
                device 0
}

pcm.AndroidPlayback_Earpiece_ringtone {
                type hw
                card 0
                device 0
}

pcm.AndroidPlayback_Earpiece_incall {
                type hw
                card 0
                device 0
}

pcm.AndroidPlayback_Bluetooth {
                type hw
                card 0
                device 0
}
               
pcm.AndroidPlayback_Bluetooth_normal {
                type hw
                card 0
                device 0
}

pcm.AndroidPlayback_Bluetooth_ringtone {
                type hw
                card 0
                device 0
}

pcm.AndroidPlayback_Bluetooth_incall {
                type hw
                card 0
                device 0
}

pcm.AndroidPlayback_Headset {
                type hw
                card 0
                device 0
}
               
pcm.AndroidPlayback_Headset_normal {
                type hw
                card 0
                device 0
}

Android凭借其开源,良好的用户体验,高性价比,庞大的应用程序等优势迅速发展起来并保持强劲的发展势头。如今Android智能手机、Android平板电脑等移动产品已走入人们的日常生活,成为人们通讯、娱乐的重要工具。本设计以malata采用RK2918方案的Android平板电脑项目为背景,主要任务是设计和实现Android平板电脑的音频系统,为广大平板用户提供良好的音频体验。 ALSA(Advanced Linux Sound Architecture,高级Linux声音架构)在Linux操作系统上提供了音频和MIDI(Musical Instrument Digital Interface,音乐设备数字化接口)的支持。它的主要特性包括:高效地支持从消费类入门级声卡到专业级音频设备所有类型的音频接口,完全模块化的设计,支持对称多处理和线程安全,对OSS(Open Sound System,开放声音系统)的向后兼容,以及提供了用户空间的alsa-lib库来简化应用程序的开发[1]。基于ALSA的音频系统能够很好的适应硬件的多样性,因此Android设备厂商能够更灵活地根据不同需求选择不同的音频编解码芯片。ALC5625是一款高度集成低功耗高保真的带I2S/PCM接口并具有多路输入输出的音频编解码器,可满足本次设计的各项需求。 基于ALSA的Andorid音频系统拥有一个标准和健全的架构,自上而下由Audio应用程序、Audio Java框架层、Audio本地框架层、AudioFlinger、Audio硬件抽象层、alsa-lib和底层Audio驱动几个部分组成。本文分析音频系统架构的各个层次,并着重阐述ALSAAndroid音频系统的应用以及Audio驱动的详细实现。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值