Apple 的 AurioTouch2 示例代码中的“静音”按钮有啥作用?

Posted

技术标签:

【中文标题】Apple 的 AurioTouch2 示例代码中的“静音”按钮有啥作用?【英文标题】:What does the "Mute" Button Do in Apple's AurioTouch2 sample code?Apple 的 AurioTouch2 示例代码中的“静音”按钮有什么作用? 【发布时间】:2012-12-04 18:56:09 【问题描述】:

我正在修改 Apple 开发人员网站上 AurioTouch2 示例中的代码。目前我正在尝试完全了解该应用程序的功能。我看到应用程序在静音打开时使用静音数据方法将 0 写入缓冲区。但是,在我看来,数据已经被处理过了,在使用应用程序时,我发现静音打开或关闭没有区别。我错过了什么 - 静音的目的是什么?

从 performThu 方法结束(输入回调)

if (THIS->mute == YES)  SilenceData(ioData); 

来自 aurioHelper.ccp

void SilenceData(AudioBufferList *inData)

    for (UInt32 i=0; i < inData->mNumberBuffers; i++)
        memset(inData->mBuffers[i].mData, 0, inData->mBuffers[i].mDataByteSize);

AurioTouch2 Sample Code

【问题讨论】:

【参考方案1】:

你是对的,所做的只是将缓冲区归零。它之所以重要,是因为 mData 成员可能未初始化(即随机),如果不理会它会导致可怕的嗡嗡声。可能不会有什么不同,但你不应该把它留给机会。

如果您遇到过想要产生静音的情况,请确保将缓冲区设为 0(而不是直接离开)。

【讨论】:

【参考方案2】:

首先,我发现静音按钮确实有效。当我将手机举到耳边时,我可以听到麦克风的声音正在通过接收器播放。关闭静音没有声音。以前,我期待扬声器(而不是接收器)发出声音。这部分问题解决了。

其次,远程 io 单元将麦克风输入数据放入 ioData 缓冲区。在我期待扬声器的输出会有另一个回调之前,但我认为因为没有一个远程 io 单元只是使用相同的 ioData 并将其播放到接收器(扬声器)。因此,将 ioData 清零(在处理麦克风输入数据以供应用程序使用之后)会导致接收器静音(即静音功能)。任何确认或澄清表示赞赏。

【讨论】:

嗨...我也有一些关于 muite 功能的 auriotouch 问题。请通过这个问题,***.com/questions/16331327/…

以上是关于Apple 的 AurioTouch2 示例代码中的“静音”按钮有啥作用?的主要内容,如果未能解决你的问题,请参考以下文章

AurioTouch2声音频率

Apple 的 iAd 示例代码抛出错误

用于 VB.NET (apple) 的示例 PushSharp 代码

Apple Page Control 示例代码给出黑屏

Apple WatchKit 扩展后台刷新示例代码

iOS App集成Apple Pay教程(附示例代码)