jim*_*yti 10 microphone core-audio ios
我正在开发一个iOS应用程序(目前专门针对iPhone),要求应用程序仅从iPhone内置麦克风录制音频(即使插入耳机/耳机),并在耳机播放(假设耳机已插入目前).
我想知道目前是否可以使用可用的API?如果是这样,有人可以说明我该如何做到这一点?
谢谢!
我相信这个问题的答案是'不'.我使用iPhone 4和新到iOS 4 AVFoundation进行实验,重点关注AVCaptureDevice类.
我在应用程序中添加了以下内容:
NSLog(@"%@", [AVCaptureDevice devices]);
Run Code Online (Sandbox Code Playgroud)
因此要求列出可用于捕获音频和/或视频的所有设备.没有插入耳机,我得到:
(
"Back Camera",
"Front Camera",
"iPhone Microphone"
)
Run Code Online (Sandbox Code Playgroud)
插入耳机后,我得到:
(
"Back Camera",
"Front Camera",
Headphones
)
Run Code Online (Sandbox Code Playgroud)
因此,一旦耳机可用,iPhone麦克风就会从可用的AVCaptureDevices列表中删除.为了进一步探讨这一点,我添加了一些代码来获取可用音频设备的AVCaptureDevice实例并打印其唯一ID.对于将自己标识为"iPhone麦克风"的设备和将自己标识为"耳机"的设备,我得到:
com.apple.avfoundation.avcapturedevice.built-in_audio:0
Run Code Online (Sandbox Code Playgroud)
在我看来,显而易见的是,两个设备不能具有相同的唯一ID,因此显然它是改变其状态的相同设备.虽然AVCaptureDevices有许多用于设置状态的东西,但它仅限于视觉效果,如对焦,曝光,闪光和白平衡.
我非常有信心通过您的应用程序的音频会话可以实现这一点:
\n\n\n\n\n音频会话是应用程序和 iOS 之间的中介。每个 iPhone 应用程序都有一个音频会话。您将其配置为表达您的应用程序\xe2\x80\x99s 音频\n 意图。首先,您需要回答一些有关您希望应用程序如何运行的问题:
\n\n\n
\n\n- 您希望您的应用程序如何响应中断,例如电话呼叫?
\n- 您是否打算将您的应用程序 xe2x80x99 的声音与其他正在运行的应用程序的声音混合,或者您打算将它们静音?
\n- 您的应用程序应如何响应音频路由更改,例如当用户插入或拔出耳机时?
\n有了答案,您就可以使用音频会话接口(在 AudioToolbox/AudioServices.h 中声明)来配置音频会话和应用程序。
\n
深入研究这些文档:
\n\n\n\n让我知道进展如何!
\n| 归档时间: |
|
| 查看次数: |
12561 次 |
| 最近记录: |