Tag: avaudiosession

通过代码访问麦克风进行录制,iOS

在我的应用程序中使用AVAudioRecorder进行录制。 录音没有问题。 当我第一次玩我的应用程序,问题是一个alertviewpopup窗口,关于允许/不允许使用麦克风。 我希望有 1)控制这个默认的alertview,使我的录音和定时器(一个标签,用来显示秒,audiologging),只有当我点击允许麦克风, 要么 2)需要为应用程序设置麦克风,以便它不会提示alertview询问是否允许麦克风。 我search互联网,stackoverflow,但没有得到任何与此职位相关的事情。 阅读一些post,但他们是关于显示状态,该麦克风是可用的应用程序与否,这是没有那么多用于我。

在iOS中暂停/静音背景音乐

我有一个使用文本到语音的应用程序偶尔会向用户提供口头提示。 目前我已经设置了它,所以TTS会混合在另一个应用程序中播放的任何音乐。 有什么方法可以暂时暂停/静音在另一个应用程序中播放的音乐,而口头提示播放?

AVAudioRecorder / AVAudioSession与苹果Airpods

我看到这里已经提出的问题: AirPods不能作为录音机应用程序的input源 我检查了这个线程,但没有回应。 但是,有谁知道是否/为什么AVAudioRecorder可能无法使用AirPods作为input设备在应用程序中录制audio? 我有内置麦克风以及其他BT设备(Beats,便携式BT扬声器电话等)的录音工作,但使用AirPods时,我无法捕获audio。 此外,当要logging时,我正循环使用可用的input,并强制input为BT设备(请参阅下面的代码),在这种情况下为AirPods。 再次,适用于除AirPods以外的所有其他BT设备。 思考? 任何关于我们在这里做错的指导都是很好的。 这一直是疯狂的。 NSError *error; AVAudioSession *audioSession = [AVAudioSession sharedInstance]; [audioSession setCategory:AVAudioSessionCategoryRecord withOptions:audioSession.categoryOptions|AVAudioSessionCategoryOptionAllowBluetooth error:&error]; [audioSession setActive:YES error:nil]; NSLog(@"Data sources: %@", [audioSession availableInputs]); // Data sources: ("<AVAudioSessionPortDescription: 0x1706071b0, type = MicrophoneBuiltIn; name = iPhone Microphone; UID = Built-In Microphone; selectedDataSource = Bottom>", "<AVAudioSessionPortDescription: 0x170611bd0, type = BluetoothHFP; name = […]

iOS:Siri不可用不会返回AVAudioSessionInterruptionOptionShouldResume

我有iOS应用程序处理audio中断与: [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(AudioInterrupt:) name:AVAudioSessionInterruptionNotification object: NULL]; 并在AudioInterrupt: – (void)AudioInterrupt:(NSNotification*)notification { NSDictionary *interuptionDict = notification.userInfo; // get the AVAudioSessionInterruptionTypeKey enum from the dictionary NSInteger interuptionType = [[interuptionDict valueForKey:AVAudioSessionInterruptionTypeKey] integerValue]; NSNumber* seccondReason = [[notification userInfo] objectForKey:@"AVAudioSessionInterruptionOptionKey"] ; // decide what to do based on interruption type here… switch (interuptionType) { case AVAudioSessionInterruptionTypeBegan: [[[self pureAudioHandler] audioController] […]

iOS无video会话播放video

我正尝试在我的应用程序中使用MPMoviePlayerController或AVPlayer播放短片。 问题是(因为我的video没有任何声音),我不想干扰其他应用程序在后台播放的声音。 我试图玩AVAudioSession : AVAudioSession *audioSession = [AVAudioSession sharedInstance]; [audioSession setCategory:AVAudioSessionCategoryAmbient withOptions:AVAudioSessionCategoryOptionMixWithOthers error:nil]; [audioSession setActive:YES error:nil]; 但我没有运气。 只要video开始播放,背景音乐就会停止。 我什至试图设置audio会话不活动: [[AVAudioSession sharedInstance] setActive:NO withOptions: AVAudioSessionSetActiveOptionNotifyOthersOnDeactivation error:nil]; 但在这种情况下,声音停止半秒钟,然后恢复,video播放器停止播放。 有什么办法可以实现我想要做的? 谢谢。

AVAudioSession类别不起作用的文件指示

我有一个iOS应用程序,在某些地方有一些audio反馈,但我希望任何其他用户在后台播放的音乐可以播放。 另外,我想让我的应用程序中的audio尊重静音开关。 根据开发者文档,这个function应该全部由AVAudioSession环境类别启用。 这是我正在使用的代码: if (!hasInitialisedAudioSession) { AVAudioSession *session = [AVAudioSession sharedInstance]; [session setCategory:AVAudioSessionCategoryAmbient error:NULL]; [session setActive:YES error:NULL]; hasInitialisedAudioSession = YES; } 该代码执行得很好,它确实让应用程序听起来播放iPod音乐。 但是,它没有做的是尊重静音开关。 我已经尝试将这个代码换成类似的Caudio调用(像AudioSessionSetProperty这样的东西),而不是Objective-C的调用,但我得到了相同的结果 – 环境会话类别根本不希望尊重静音开关,尽pipe是什么该文件说,它应该做的。 有任何想法吗? 谢谢您的帮助 :)

iOS 9检测静默模式

我一直在寻找很长一段时间,我很确定我现在不能达到我想要做的。 放弃之前,我在这里张贴作为最后的尝试。 我试图实现的是检测我目前是否处于静音模式或不在我的应用程序。 事情是,我find了一个解决方法(玩假声和检查完成),工作正常,但不是当我在AVAudioSessionCategoryPlayAndRecord模式。 这正是我可以录制audio和video的屏幕,我想要知道我是否应该播放UI声音。 综上所述,我试图在AVAudioSessionCategoryPlayAndRecord模式下find一种检测静音模式的方法。 感谢您的时间! 萨科

当另一个应用程序开始/停止播放audio时,可以通知我的应用程序?

我的iOS游戏有音乐和音效。 我想让用户听取他们自己的音乐来代替游戏的背景音乐。 一个简单的解决scheme是添加一个新的菜单项,禁用游戏的背景音乐。 但是,我想避免创build一个新的菜单项,除非我确信这种方法对用户来说更糟。 我目前的做法: 将audio会话类别设置为AVAudioSessionCategoryAmbient以允许游戏audio与iPod(或其他音乐应用程序)的混音播放。 在applicationDidBecomeActive ,检查[[AVAudioSession sharedInstance] isOtherAudioPlaying]并closures游戏的音乐,如果另一个应用程序在后台播放。 这似乎在大多数情况下工作。 游戏启动时,会中断后台播放的音乐应用程序。 如果您想播放自己的音乐,则必须故意返回并在第三方音乐应用程序中按播放,或使用iOS 7的向上滑动控制面板。 否则,游戏自己的音乐将接pipe。 这带来了一些缺陷: 它不会检测第三方音乐应用程序何时通过iPhone / iPod耳塞内置的点击式遥控器启动/停止播放。 虽然它适用于iPod应用程序,但不适用于SoundCloud应用程序。 我没有testing任何其他人。 问题是: 当第三方音乐应用程序(例如iPod应用程序)开始/停止播放时,是否有办法接收通知? 或者,有没有办法通知@property BOOL otherAudioPlaying的值更改? 这种方法能适得其反吗? 不简单地使用菜单项是愚蠢的吗?

AVAssetReader读取audio,然后失败

我的应用程序读取audio并在生产者/消费者设置中播放。 消费者线程请求新的样本呈现给硬件。 生产者线程使用AVAssetReader从磁盘读取audio数据到其缓冲区。 生产者线程循环运行,检查是否需要读取更多的样本。 制作者的缓冲区大小等于4秒的audio。 当我指示我的应用程序缓冲audio,样品读取成功没有错误。 当我触发我的制作者线程开始渲染audio时,4秒缓冲区完美播放,然后静音。 进一步调查显示,我的资产阅读器在播放开始时失败,因此在初始缓冲之后没有读取其他样本: CMSampleBufferRef ref = [readaudiofile copyNextSampleBuffer]; if (ref == NULL && filereader.status == AVAssetReaderStatusFailed) { NSLog(@"reader failed: %@", filereader.error); } // this produces: // {NSLocalizedFailureReason=An unknown error occurred (-12785), // NSUnderlyingError=0x161f60 "The operation couldn't be completed. // (OSStatus error -12785.)", NSLocalizedDescription=The operation // could not be completed} 我的生产者线程代码与function代码示例MusicLibraryRemoteIODemo完全相同 […]

如何在iPhone设备上使用AVAudioSessionCategoryMultiRoute?

我想使用AVAudioSessionCategoryMultiRoute,但不幸的是在苹果开发中心和Google上都没有例子。 如何使用/实现AVAudioSessionCategoryMultiRoute为了定义iPhone上的2个不同的路线ios7.0.4? 我的目标是通过扬声器和耳机路由audio。 (我知道这是不可能的,但我想尝试与ios7) 感谢您的帮助,