Tag: 免提

如何让我的应用程序audio很好地中断说话时的iPhoneaudio

我的iOS 7应用程序在必要时发声文本。 我想要做的是让用户在我的运行过程中收听他的音乐或播客(或任何其他使用audio的应用程序)。 预期的行为是,当我的应用程序说话时,其他audio混音或鸭子,然后其他audio恢复在初始阶段的音量。 我已经尝试了很多方法来实现这个目标,但是没有什么是不够的,因为我在代码之后列出了我面对的问题。 我目前的实施是基于在播放或文本到语音之前创build会话如下: + (void)setAudioActive { [[self class] setSessionActiveWithMixing:YES]; } 演讲/演讲结束后,我把我设置为闲置状态如下: + (void)setAudioIdle { [[self class] setSessionActiveWithMixing:NO]; } 处理会话设置的核心function对应于激活的参数,如下所示: + (void)setSessionActiveWithMixing:(BOOL)active { NSError *error = NULL; BOOL success; AVAudioSession *session = [AVAudioSession sharedInstance]; static NSInteger counter = 0; success = [session setActive:NO error:&error]; if (error) { DDLogError(@"startAudioMixAndBackground: session setActive:NO, %@", error.description); } […]

AudioSessioninput从蓝牙输出线或扬声器

一旦build立了audio会话,以下代码允许蓝牙input。 UInt32 allowBluetoothInput = 1; AudioSessionSetProperty (kAudioSessionProperty_OverrideCategoryEnableBluetoothInput, sizeof (allowBluetoothInput), &allowBluetoothInput); 此代码看起来像只允许蓝牙input,但是这个代码也将audio输出路由到蓝牙设备(在蓝牙耳机的情况下)。 当input来自蓝牙设备时,我想将audio输出路由出或扬声器。 我只是想从蓝牙设备获得audioinput,我不想通过蓝牙输出audio。 这种行为是可能的吗?

在iOS中通过蓝牙播放时从内置麦克风录制

是否有可能从iPhone的内置麦克风接收audioinput,并通过蓝牙耳机同时播放该audio? 我的目标是始终使用内置麦克风作为input设备,即使输出设备是耳机,因为内置麦克风在我的使用情况中更方便。 当输出设备是有线耳机时,我知道如何实现我的目标,就像iPhone捆绑在一起一样。 我只需插入有线耳机,然后调用以下方法: – (void)selectBuiltInMicrophone { AVAudioSession *session = [AVAudioSession sharedInstance]; for (AVAudioSessionPortDescription *port in session.availableInputs) if ([port.portType isEqualToString:AVAudioSessionPortBuiltInMic]) { NSError *error; [session setPreferredInput:port error:&error]; break; } } 通过调用上述方法,input设备将从有线耳机的麦克风切换到iPhone的内置麦克风,而输出设备不受影响,所以iPhone将从内置麦克风录音,并通过有线耳机播放。 这是我所期望的。 问题是,当耳机是蓝牙耳机时,此方法不起作用。 如果我将蓝牙耳机连接到iPhone,然后调用上述方法,内置的麦克风将成为input设备,这是伟大的,但输出设备也将更改为iPhone的接收器,这是不好的。 蓝牙耳机的input和输出似乎是locking在一起的:您既可以使用它们,也可以不使用它们。 我的目标真的不可能吗? 或者有办法克服明显的局限性?

初始化AVAudioSession时保持蓝牙的声音

我即将发疯。 我有一个录音应用程序。 我遇到了一个问题,当我打开我的应用程序,如果我在蓝牙设备上听音乐,它会自动路由回到手机内部扬声器。 我希望一切都保持不变。 即使当我开始录音,如果用户正在听蓝牙扬声器上的东西,继续这样做。 用户有耳机? 保持音乐在那里。 只是保持原样。 这是我目前正在初始化我的会议: [[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryPlayAndRecord withOptions:AVAudioSessionCategoryOptionMixWithOthers | AudioSessionCategoryOptionAllowBluetooth error: nil]; 我允许它播放,录制,与其他人混合,并允许蓝牙,那么为什么它重新路由audio输出回到内部扬声器? 谢谢 5月30日编辑 我设法得到更好的东西,但仍然失去了一些东西。 如果我添加这一行: [[AVAudioSession sharedInstance] overrideOutputAudioPort:AVAudioSessionPortOverrideNone error:nil]; 音乐停留在蓝牙设备,但听起来很可怕。 根据这个答案: https : //stackoverflow.com/a/18541874/517688这是因为 EnableBluetoothInput根据这个影响input和输出。 另外请记住,由于蓝牙input设备的限制,audio将以8000Hz播放 那么在使用蓝牙设备时,没有办法让所有的东西都保持不变而不会扭曲声音?