Android4.4.4双声卡同时出声

 时间:2026-02-16 00:17:14

1、修改AudioHardware.cpp文件,在AudioHardware::AudioHardware() 构造函数头部的mPcm(NULL),一句后面添加mPcm1(NULL),一句,然后在AudioHardware::~AudioHardware()析构函数体内的TRACE_DRIVER_IN(DRV_MIXER_CLOSE)一句前添加如下内容:

if (mPcm1) {

       route_pcm1_close();

}

接下来在struct pcm *AudioHardware::openPcmOut_l()函数体内的return mPcm;前一个}括号符前添加如下内容:

mPcm1 = route_pcm1_open(2, flags); //其中2为声卡2(除默认外的第2张声卡,可查看/proc/asound/cards获得该序号,请根据实际修改)

接下来在void AudioHardware::closePcmOut_l()函数体内的mPcm = NULL;后面添加如下内容:

route_pcm1_close();

mPcm1 = NULL;

接下来在ssize_t AudioHardware::AudioStreamOutALSA::write函数体内的ret = pcm_write(mHardware->getPcm(),(void*) p, bytes);一句后面添加ret = pcm_write(mHardware->getPcm1(),(void*) p, bytes);一句。

2、修改AudioHardware.h文件,在struct pcm *getPcm() { return mPcm; };后面添加struct pcm *getPcm1() { return mPcm1; };一句,在

android::SortedVector <  android::sp >   mInputs;

android::Mutex           mLock;

struct pcm*     mPcm;

后面添加struct pcm*     mPcm1;一句。

3、修改alsa_audio.h文件,添加如下内容:

struct pcm *route_pcm1_open(int card, unsigned int flags);

int route_pcm1_close(void);

4、修改alsa_route.c文件,在struct pcm* mPcm[PCM_MAX + 1];后面添加struct pcm* mPcm1;一句,在文件尾部添加如下内容:

struct pcm *route_pcm1_open(int card, unsigned flags)

{

    ALOGD("lxt route_pcm1_open()");

    flags &= ~PCM_CARD_MASK;

    switch(card) {

    case 1:

        flags |= PCM_CARD1;

        break;

    case 2:

        flags |= PCM_CARD2;

        break;

    default:

        flags |= PCM_CARD1;

        break;

    }

    flags &= ~PCM_DEVICE_MASK;

    flags |= PCM_DEVICE0;

    mPcm1 = pcm_open(flags);

    return mPcm1;

}

int route_pcm1_close(void)

{

       ALOGD("lxt route_pcm1_close()");

       pcm_close(mPcm1);

       return 0;

}

至此,相关代码修改完成。

  • 如何通过注册表隐藏账号
  • 【喇叭/音箱】低音与箱体
  • ser 2012系统如何显示隐藏文件或者文件夹
  • php如何连接硬件
  • usbcan、can分析仪的产品特点和功能特点
  • 热门搜索
    睡前减肥小妙招 减肥午餐吃什么 童年简介 晚上不吃饭能减肥吗 普洱茶能减肥吗 命运石之门攻略 红烧黄花鱼的家常做法 西红柿可以减肥吗 表白失败怎么办 红烧鲅鱼的家常做法