精华内容
下载资源
问答
  • 蓝牙耳机

    千次阅读 2012-12-13 11:38:30
    最近在关注蓝牙耳机方面的问题,做下简单的流程分析。 解码后,在AudioFlinger里把音频数据写到设备里。这里主要看看AudioFlinger,AudioPolicyManager和external/bluetooth/bluez/audio里面的android_audio_hw.c和...

    最近在关注蓝牙耳机方面的问题,做下简单的流程分析。

    解码后,在AudioFlinger里把音频数据写到设备里。这里主要看看AudioFlinger,AudioPolicyManager和external/bluetooth/bluez/audio里面的android_audio_hw.c和liba2dp.c。


    在AudioPolicyManager里有设备连接判断。

    status_t AudioPolicyManagerBase::setDeviceConnectionState(AudioSystem::audio_devices device,
                                                      AudioSystem::device_connection_state state,
                                                      const char *device_address)
    {

    #ifdef WITH_A2DP
                // handle A2DP device connection
                if (AudioSystem::isA2dpDevice(device)) {
                    status_t status = handleA2dpConnection(device, device_address);//这里是执行蓝牙连接
                    if (status != NO_ERROR) {
                        mAvailableOutputDevices &= ~device;
                        return status;
                    }
                } else
    #endif

    }

    。。。。。

    status_t AudioPolicyManagerBase::handleA2dpConnection(AudioSystem::audio_devices device,
                                                     const char *device_address)
    {

        ...............

           mA2dpOutput = mpClientInterface->openOutput(&outputDesc->mDevice,
                                                &outputDesc->mSamplingRate,
                                                &outputDesc->mFormat,
                                                &outputDesc->mChannels,
                                                &outputDesc->mLatency,
                                                outputDesc->mFlags);
        if (mA2dpOutput) {
            // add A2DP output descriptor
            addOutput(mA2dpOutput, outputDesc);

            //TODO: configure audio effect output stage here

            // set initial stream volume for A2DP device
            applyStreamVolumes(mA2dpOutput, device);
            if (a2dpUsedForSonification()) {
                mDuplicatedOutput = mpClientInterface->openDuplicateOutput(mA2dpOutput, mHardwareOutput);
            }
            if (mDuplicatedOutput != 0 ||
                !a2dpUsedForSonification()) {
                // If both A2DP and duplicated outputs are open, send device address to A2DP hardware
                // interface
                AudioParameter param;
                param.add(String8("a2dp_sink_address"), String8(device_address));
                mpClientInterface->setParameters(mA2dpOutput, param.toString());
                mA2dpDeviceAddress = String8(device_address, MAX_DEVICE_ADDRESS_LEN);

                if (a2dpUsedForSonification()) {
                    // add duplicated output descriptor
                    AudioOutputDescriptor *dupOutputDesc = new AudioOutputDescriptor();
                    dupOutputDesc->mOutput1 = mOutputs.valueFor(mHardwareOutput);
                    dupOutputDesc->mOutput2 = mOutputs.valueFor(mA2dpOutput);
                    dupOutputDesc->mSamplingRate = outputDesc->mSamplingRate;
                    dupOutputDesc->mFormat = outputDesc->mFormat;
                    dupOutputDesc->mChannels = outputDesc->mChannels;
                    dupOutputDesc->mLatency = outputDesc->mLatency;
                    addOutput(mDuplicatedOutput, dupOutputDesc);
                    applyStreamVolumes(mDuplicatedOutput, device);
                }
            } else {

        .........

    }

    如果只是蓝牙播放,那么mDuplicatedOutput和a2dpUsedForSonification都为0,仅执行  addOutput(mA2dpOutput, outputDesc);,走类似speaker和麦克风的流程。

    如果是蓝牙和speaker或麦克风同时播放声音,走mpClientInterface->openDuplicateOutput(mA2dpOutput, mHardwareOutput);注意的是,第一个参数是mA2dpOutput,蓝牙的,第二个参数是mHardwareOutput,speaker或mic等其他输出设备。


    那么接下来我们去看看openDuplicateOutput函数。在AudioFlinger.cpp里有定义

    int AudioFlinger::openDuplicateOutput(int output1, int output2)
    {
        Mutex::Autolock _l(mLock);
        MixerThread *thread1 = checkMixerThread_l(output1);
        MixerThread *thread2 = checkMixerThread_l(output2);

        if (thread1 == NULL || thread2 == NULL) {
            LOGW("openDuplicateOutput() wrong output mixer type for output %d or %d", output1, output2);
            return 0;
        }

        int id = nextUniqueId();
        DuplicatingThread *thread = new DuplicatingThread(this, thread1, id);
        thread->addOutputTrack(thread2);
        mPlaybackThreads.add(id, thread);
        // notify client processes of the new output creation
        thread->audioConfigChanged_l(AudioSystem::OUTPUT_OPENED);
        return id;
    }

    这个函数开启2个线程,一个是蓝牙的,另一个是mHardwareOutput,实现两者同时播放,比如来电,短信,闹铃声等。

    先暂停在这里,接着

    static const char *audio_interfaces[] = {
        "primary",
        "a2dp",
        "usb",
    };

    4.0的代码有三种audio接口,一个是primary,是codec,我们常用的speaker,mic等;二是a2dp,是蓝牙;三是usb接口。

    void AudioFlinger::onFirstRef()
    {
        int rc = 0;

        Mutex::Autolock _l(mLock);

        /* TODO: move all this work into an Init() function */
        mHardwareStatus = AUDIO_HW_IDLE;

        for (size_t i = 0; i < ARRAY_SIZE(audio_interfaces); i++) {
            const hw_module_t *mod;
            audio_hw_device_t *dev;

            rc = load_audio_interface(audio_interfaces[i], &mod, &dev);//加载接口.so文件
            if (rc)
                continue;

            LOGI("Loaded %s audio interface from %s (%s)", audio_interfaces[i],
                 mod->name, mod->id);
            mAudioHwDevs.push(dev);

       .........

    }

    这里会遍历audio接口。

    void AudioFlinger::RecordThread::onFirstRef()
    {
        run(mName, PRIORITY_URGENT_AUDIO);
    }

    int AudioFlinger::openOutput(uint32_t *pDevices,
                                    uint32_t *pSamplingRate,
                                    uint32_t *pFormat,
                                    uint32_t *pChannels,
                                    uint32_t *pLatencyMs,

                                    uint32_t flags){


               ......

                 outHwDev = findSuitableHwDev_l(*pDevices);//获取有效audio接口设备
        if (outHwDev == NULL)
            return 0;
       //获取接口.so库里面的参数信息
        status = outHwDev->open_output_stream(outHwDev, *pDevices, (int *)&format,
                                              &channels, &samplingRate, &outStream);
        LOGV("openOutput() openOutputStream returned output %p, SamplingRate %d, Format %d, Channels %x, status %d",
                outStream,
                samplingRate,
                format,
                channels,
                status);

        mHardwareStatus = AUDIO_HW_IDLE;
        if (outStream != NULL) {
            AudioStreamOut *output = new AudioStreamOut(outHwDev, outStream);//建立这种设备的输出

    ........

    }

    outHwDev->open_output_stream 来自蓝牙audio里的接口函数。

    再看android_audio_hw.c

    static int adev_open(const hw_module_t* module, const char* name,
                         hw_device_t** device)
    {
        struct adev_a2dp *adev;
        int ret;

        if (strcmp(name, AUDIO_HARDWARE_INTERFACE) != 0)
            return -EINVAL;

        adev = calloc(1, sizeof(struct adev_a2dp));
        if (!adev)
            return -ENOMEM;

        adev->bt_enabled = true;
        adev->suspended = false;
        pthread_mutex_init(&adev->lock, NULL);
        adev->output = NULL;

        adev->device.common.tag = HARDWARE_DEVICE_TAG;
        adev->device.common.version = 0;
        adev->device.common.module = (struct hw_module_t *) module;
        adev->device.common.close = adev_close;

        adev->device.get_supported_devices = adev_get_supported_devices;
        adev->device.init_check = adev_init_check;
        adev->device.set_voice_volume = adev_set_voice_volume;
        adev->device.set_master_volume = adev_set_master_volume;
        adev->device.set_mode = adev_set_mode;
        adev->device.set_mic_mute = adev_set_mic_mute;
        adev->device.get_mic_mute = adev_get_mic_mute;
        adev->device.set_parameters = adev_set_parameters;
        adev->device.get_parameters = adev_get_parameters;
        adev->device.get_input_buffer_size = adev_get_input_buffer_size;
        adev->device.open_output_stream = adev_open_output_stream;
        adev->device.close_output_stream = adev_close_output_stream;
        adev->device.open_input_stream = adev_open_input_stream;
        adev->device.close_input_stream = adev_close_input_stream;
        adev->device.dump = adev_dump;

        *device = &adev->device.common;

        return 0;

    err_str_parms_create:
        free(adev);
        return ret;
    }
    这样AudioFlinger里需要的参数,通过这里设定。接着蓝牙audio进行相关init,config,start,stop等状态操作。当然包括蓝牙读写。

    展开全文
  • 使用arduino通过LED进行蓝牙耳机充电过程模拟
  • 蓝牙耳机开发资料学习
  • 现在走在街上都可以看到有些人的耳朵上带着一个无线的耳机,也叫蓝牙耳机。之前小编的朋友骗我说他是助听器,我还傻傻地相信了好长一段时间。现在小编已经知道了蓝牙耳机不但可以连接手机,还可以连接电脑。所以今天...

    现在走在街上都可以看到有些人的耳朵上带着一个无线的耳机,也叫蓝牙耳机。之前小编的朋友骗我说他是助听器,我还傻傻地相信了好长一段时间。现在小编已经知道了蓝牙耳机不但可以连接手机,还可以连接电脑。所以今天小编就来告诉你们蓝牙耳机要怎么连接电脑。

    蓝牙耳机连接电脑可以干什么呢?我们用蓝牙耳机连接电脑可以听音乐,玩游戏的时候开语音等。但是我们要怎么用蓝牙耳机连接电脑呢?这确实大部分人都在想的问题。那么今天小编就来告诉你们蓝牙耳机怎么连接电脑。

    首先打开“开始”,然后打开“控制面板”,然后点击“设备和声音”,再找到“添加设备”,然后就宣你要添加的蓝牙耳机

    566dd44bb9c5e4e3c1a923ba7378e5c2.gif

    蓝牙耳机怎么连接电脑电脑图解-1

    7b0319474c298aa98392a1864f3b08d8.png

    蓝牙耳机电脑图解-2

    3a1b481c31deb5ebc7b1440282b1e663.png

    蓝牙耳机连接电脑电脑图解-3

    然后就会显示正在配对,配对好了之后就会显示已添加成功

    64ad73638125987610e489834192107d.png

    连接电脑电脑图解-4

    4ac96b21ee85e40cd319a87e09bcb4df.png

    蓝牙耳机电脑图解-5

    然后县级“开始”然后找打到“设备和打印机,你就能够看到你添加的蓝牙耳机了

    0f1224e0c09630430c7e1452f678d215.png

    蓝牙耳机电脑图解-6

    在蓝牙耳机上鼠标右键点击进入“属性”,进去后点击“服务”,“耳机”这一项没有被勾选上就不能用蓝牙听音乐,所以要勾选,够了之后,系统会要你安装一个驱动,安装好之后,在桌面右下角的“喇叭”图标,鼠标右键点击“播放设备”

    b6af663c43ff41cc74caae61f2b1b9a4.png

    连接电脑电脑图解-7

    9f183cef023e31a04f3dde30740cc361.png

    蓝牙耳机电脑图解-8

    最后,要把蓝牙音频的扬声器设为默认的,这样你就能用蓝牙耳机听音乐了

    c773164fbca38fcc8b7524523cde8c0f.gif

    蓝牙耳机怎么连接电脑电脑图解-9

    4aea114fa6bee0ce0d0c6894a5fabb74.png

    蓝牙耳机电脑图解-10

    展开全文
  • 近几年来,手机的发展非常迅速,功能越来越多,不仅可以...一、苹果蓝牙耳机怎么配对1、首先按下苹果耳机的电源键,长按几秒,将蓝牙耳机开机。2、保证蓝牙耳机电量的充足,可以完成连接。3、在苹果手机桌面找到“设...

    近几年来,手机的发展非常迅速,功能越来越多,不仅可以发信息打电话,还可以联网玩游戏聊天购物等。而且通过手机蓝牙功能,可以在手机直接传输一些文件、音乐、游戏等。那么苹果蓝牙耳机怎么配对?苹果蓝牙耳机怎么配对安卓手机?下面一起来看看苹果蓝牙耳机使用说明吧。

    一、苹果蓝牙耳机怎么配对

    1、首先按下苹果耳机的电源键,长按几秒,将蓝牙耳机开机。

    2、保证蓝牙耳机电量的充足,可以完成连接。

    a574986883a034390c43bd91dbee27d1.png

    3、在苹果手机桌面找到“设置”,点进去,下拉找到“蓝牙”并点击打开。

    4、蓝牙处于打开状态之后,手机屏幕右上角出现“蓝牙”标识,“蓝牙”选项下方会出现可以连接的蓝牙设备及其状态。

    5、点击想要连接的蓝牙耳机的名称,成功后显示为“连接”。

    6、蓝牙设备使用结束后,想要断开连接,可以点击手机“蓝牙”选项右边开关,将蓝牙功能直接关闭。

    二、苹果蓝牙耳机怎么配对安卓手机

    1、首先在桌面上找到“设置”,并点击打开。

    2、在手机“设置”中,点击蓝牙进入。

    3、打开蓝牙以及开放性检测。

    46b581fb195b629c4612e94a03de4ca7.png

    4、打开安卓手机的蓝牙后,接下来长按苹果耳机的开关键,指示灯进入闪光状态。

    5、最后在蓝牙界面的可用设备中,找到苹果耳机的设备名称,此时已经显示耳机可用的状态,点击进行连接后,安卓手机就能使用苹果的蓝牙耳机了。

    三、苹果蓝牙耳机使用说明

    1、首先将AirPods保持连接到苹果手机,按下home键解锁苹果手机,打开AirPods耳机盒子。

    2、然后将耳机靠近苹果手机,苹果手机屏幕会出现一个设置动画,点击“连接”,然后点击“完成”。

    3、其次用AirPods耳机听歌,一般情况下AirPods耳机会自动播放苹果手机或者iPad的音乐。

    4、接下来为AirPods耳机充电,耳机放回充电盒子,盒子内置有电池,能够为耳机提供24小时续航。

    5、最后,如果要为盒子充电,只需要将Lighting线缆另一端连接到USB端口就行了。

    2fd8dc483022cd1b382705d89bd28c35.png

    以上就是关于苹果蓝牙耳机怎么配对,苹果蓝牙耳机怎么配对安卓手机,苹果蓝牙耳机使用说明的相关内容,希望能对大家有帮助!齐装网,中国知名大型装修平台,装修领导品牌。如果想下一番心思装修设计,建议您申请齐装网的免费设计服务,通过专业设计师的现场量房帮您规划合理的空间布局和精美设计。

    展开全文
  • 蓝牙耳机连接电脑可以干什么呢?我们用蓝牙耳机连接电脑可以听音乐,玩游戏的时候开语音等。但是我们要怎么用蓝牙耳机连接电脑呢?这确实大部分人都在想的问题。那么今天小编就来告诉你们蓝牙耳机怎么连接电脑。现在...

    蓝牙耳机连接电脑可以干什么呢?我们用蓝牙耳机连接电脑可以听音乐,玩游戏的时候开语音等。但是我们要怎么用蓝牙耳机连接电脑呢?这确实大部分人都在想的问题。那么今天小编就来告诉你们蓝牙耳机怎么连接电脑。

    现在走在街上都可以看到有些人的耳朵上带着一个无线的耳机,也叫蓝牙耳机。之前小编的朋友骗我说他是助听器,我还傻傻地相信了好长一段时间。现在小编已经知道了蓝牙耳机不但可以连接手机,还可以连接电脑。所以今天小编就来告诉你们蓝牙耳机要怎么连接电脑。

    首先打开“开始”,然后打开“控制面板”,然后点击“设备和声音”,再找到“添加设备”,然后就宣你要添加的蓝牙耳机

    ee4c80e63fb3d4eb10d9ad191bba7c94.gif

    蓝牙耳机图-1

    ec0f5476342d6b697818a1f0b3e412bf.png

    蓝牙耳机怎么连接电脑图-2

    b3b68bc545c808eff636b55758aa1e4d.png

    连接电脑图-3

    然后就会显示正在配对,配对好了之后就会显示已添加成功

    76c3bb4b486e31994d8478f49e93f51f.png

    连接电脑图-4

    80fe94398d80b23fd2bf52f9df51aede.png

    蓝牙耳机图-5

    然后县级“开始”然后找打到“设备和打印机,你就能够看到你添加的蓝牙耳机了

    14ac3861b08f5e7f70dae0723ed2e4ef.png

    蓝牙耳机怎么连接电脑图-6

    在蓝牙耳机上鼠标右键点击进入“属性”,进去后点击“服务”,“耳机”这一项没有被勾选上就不能用蓝牙听音乐,所以要勾选,够了之后,系统会要你安装一个驱动,安装好之后,在桌面右下角的“喇叭”图标,鼠标右键点击“播放设备”

    8f941755af52408c919197826aa1af6a.png

    蓝牙耳机怎么连接电脑图-7

    c359348c0930e73bd992e025a0b36375.png

    蓝牙耳机连接电脑图-8

    最后,要把蓝牙音频的扬声器设为默认的,这样你就能用蓝牙耳机听音乐了

    4b2e38f00fcdfb831fb966cc4f9b7780.gif

    蓝牙耳机连接电脑图-9

    2c1e944032a115fe9b9b067ad4c55d02.png

    蓝牙耳机怎么连接电脑图-10

    展开全文
  • 近日有笔记本电脑用户想要连接蓝牙耳机来使用,可是却不知道蓝牙耳机能连笔记本吗?现在的很多笔记本电脑都自带蓝牙功能,所以无需额外硬件就可连接蓝牙耳机,如果你电脑中有自带蓝牙模块的话是可以连接的,下面就教...
  • 行业资料-电子功用-手镯式蓝牙耳机以及手镯式蓝牙耳机电路.pdf
  • 蓝牙耳机pcb

    2019-05-02 22:20:30
    蓝牙耳机pcb原理图,可以修改下直接拿来用
  • 行业资料-电子功用-多功能蓝牙耳机底座和具有充电开关的蓝牙耳机底座
  • 行业分类-电子电器-多耳蓝牙耳机的单耳远离检测方法以及蓝牙耳机.zip
  • Android蓝牙无线对讲demo(手机连接蓝牙耳机后可通过蓝牙耳机实时对讲,音量可调)。记得手机要先连接蓝牙耳机,才能通过蓝牙耳机对讲。
  • 行业资料-电子功用-具有蓝牙耳机充电功能的外置设备及蓝牙耳机系统.pdf.zip
  • 蓝牙耳机领域,带有降噪功能的蓝牙耳机正越来越多的推向市场,并且随着蓝牙5.0技术的成熟,不管是音质还是传输,都有了不小提升,越来越多厂商推出带有自家特色的TWS蓝牙耳机。 更为关键的是,随着人们对降噪这项...
  • 耳机如果想要摆脱线的困扰,那么无疑会选择蓝牙耳机,而在Windows10系统中可能会遇到断开蓝牙连接后再次连接时有时连接不上的问题,删除设备之后再连也不一定可以在连接上。那么遇到这个问题我们该如何解决呢?针对...
  • 蓝牙耳机工作原理

    万次阅读 多人点赞 2019-03-26 11:03:50
    蓝牙耳机的工作原理大致可分为如图的四个步骤: 1、手机中的解码芯片对MP3等音乐文件进行解码,产生数字信号并通过蓝牙发送给蓝牙耳机; 2、蓝牙耳机接收数字信号,并通过蓝牙耳机内部的数模转换芯片,把它转换成人...
  • 蓝牙耳机PCB板

    2018-11-23 11:31:36
    画的蓝牙耳机PCB,可直接做蓝牙耳机,PCB中有元器件型号
  • 很多学生党在购买蓝牙耳机的时候比较纠结到底买多少钱的蓝牙耳机合适呢?我认为学生党买一款入门级的蓝牙耳机就足够了,等有了一定的经济能力,再入手更好的蓝牙耳机。因此,身为资深数码粉的我给学生党推荐以下几款...
  • 什么蓝牙耳机好用?口碑不错的平价蓝牙耳机 蓝牙耳机这两年非常火爆,自从手机厂商都取消了3.5mm耳机接口以后,蓝牙耳机销量就直线上涨,这也吸引了无数品牌的加入。平价蓝牙耳机市场也因此变得混乱,市场溢价非常...
  • 例如最近就有小伙伴问小编thinkpad如何连接蓝牙耳机?那么针对这一问题,今天小编就来为大家整理分享关于thinkpad连接蓝牙耳机的步骤,一起往下看吧。具体步骤如下:1、先用鼠标右键点击电脑左下角的“开始”图标,...
  • 代替airpods的蓝牙耳机,苹果蓝牙耳机替代品牌 随着Airpods的问世,现在手机上的3.5mm耳机孔越来越少,各大耳机厂商都纷纷推出了自家的无线蓝牙耳机去争夺这一个“大蛋糕”。虽然无线蓝牙耳机以便携性胜过了有线...
  • 蓝牙耳机怎么连接电脑【图文教程】蓝牙耳机就是将蓝牙技术应用在免持耳机上,让使用者可以免除恼人电线的牵绊,自在地以各种方式轻松通话。也可以使用蓝牙耳机连接电脑来听歌,下面就来分享一下蓝牙耳机连接电脑的...
  • 无法搜索到蓝牙耳机小米蓝牙耳机

    千次阅读 2019-02-24 12:40:17
    例如小米蓝牙耳机配对时,要非常非常非常长的时间,而且你的手机里根本没有小米蓝牙耳机这个选项。 问题来源:之前匹配过太多手机,电脑,导致无法搜到 解决方法:在耳机关机状态下,长按开机,开机声音后继续...
  • 一些用户在用蓝牙耳机连接电脑的时候,可能会碰到电脑搜索不到蓝牙耳机的情况,这就需要仔细地检查下相关原因了。那么电脑搜索不到蓝牙耳机怎么办呢?小编为大家分享了解决电脑搜索不到蓝牙耳机的方法,下面大家跟着...
  • 摘要:蓝牙耳机怎么连接电脑?首先您要买个USB的蓝牙适配器,你电脑不像手机那样内置了蓝牙装置,只能通过蓝牙适配器来连接。有了蓝牙适配器,蓝牙耳机不但可以跟电脑进行连接,您的手机也可以通过它跟电脑连接来交换...
  • 【运动蓝牙耳机选择】运动蓝牙耳机怎么选 哪种无线蓝牙运动耳机适合你  运动蓝牙耳机的种类随着运动热潮的来袭逐渐的多了起来,市场当中出现了诸如入耳式、头戴式、耳挂式等等佩戴方式的运动蓝牙耳机,除了这些...
  • 2021真无线蓝牙耳机推荐,高音质蓝牙耳机推荐 我们都知道真无线蓝牙耳机依靠蓝牙技术实现音频传输。因而大部分蓝牙耳机无法像有线耳机那样,实现真正的无损音质。但随着蓝牙技术的快速发展,部分蓝牙耳机已经越来越...
  • 苹果无线蓝牙耳机包装盒样机适用于苹果无线耳机包装样机设计。

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 17,921
精华内容 7,168
关键字:

蓝牙耳机