iOS 音频播放时听筒及扬声器切换
2015-08-25 10:09
645 查看
- (IBAction)playPause:(UIButton *)sender { //初始化播放器的时候如下设置 UInt32 sessionCategory = kAudioSessionCategory_MediaPlayback; AudioSessionSetProperty(kAudioSessionProperty_AudioCategory, sizeof(sessionCategory), &sessionCategory); UInt32 audioRouteOverride = kAudioSessionOverrideAudioRoute_Speaker; AudioSessionSetProperty (kAudioSessionProperty_OverrideAudioRoute, sizeof (audioRouteOverride), &audioRouteOverride); AVAudioSession *audioSession = [AVAudioSession sharedInstance]; //默认情况下扬声器播放 [audioSession setCategory:AVAudioSessionCategoryPlayback error:nil]; [audioSession setActive:YES error:nil]; NSError *playerError; myPlayer = [[AVAudioPlayer alloc] initWithContentsOfURL:[NSURL URLWithString:[VoiceRecorderBaseVC getPathByFileName:recordedFile ofType:@"aac"]] error:&playerError]; myPlayer.meteringEnabled = YES; myPlayer.delegate = self; if (myPlayer == nil) { NSLog(@"ERror creating player: %@", [playerError description]); } [self handleNotification:YES]; [myPlayer play]; } - (void)audioPlayerDidFinishPlaying:(AVAudioPlayer *)player successfully:(BOOL)flag { NSLog(@"播放结束"); [self handleNotification:NO]; [myPlayer release]; } #pragma mark - 监听听筒or扬声器 - (void) handleNotification:(BOOL)state { [[UIDevice currentDevice] setProximityMonitoringEnabled:state]; //建议在播放之前设置yes,播放结束设置NO,这个功能是开启红外感应 if(state)//添加监听 [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(sensorStateChange:) name:@"UIDeviceProximityStateDidChangeNotification" object:nil]; else//移除监听 [[NSNotificationCenter defaultCenter] removeObserver:self name:@"UIDeviceProximityStateDidChangeNotification" object:nil]; } //处理监听触发事件 -(void)sensorStateChange:(NSNotificationCenter *)notification; { //如果此时手机靠近面部放在耳朵旁,那么声音将通过听筒输出,并将屏幕变暗(省电啊) if ([[UIDevice currentDevice] proximityState] == YES) { NSLog(@"Device is close to user"); [[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryPlayAndRecord error:nil]; } else { NSLog(@"Device is not close to user"); [[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryPlayback error:nil]; } }
相关文章推荐
- ios项目中的常见文件。“工程名-Info.plist”文件、“工程名-Prefix.pch”文件
- Quartz2d从易到难全解析---图片截屏
- iOS页面间传值小结
- iOS设备中WiFi、蓝牙和飞行模式的开启与关闭(私有API)
- ios开发技巧(一)
- IOSAutolayout
- IOS开发—CALayer介绍
- iOS开发必看的博客汇总
- 在iOS平台使用ffmpeg解码h264视频流(转)
- TextField 设置大全
- iOS 万能跳转界面方法 (runtime)
- iOS开发-常用第三方开源框架介绍
- iOS多线程-01-pthread与NSTread
- iOS工程适配64-bit经验分享
- iOS NSURLSession 封装下载类
- iOS当该装置是水平屏,frame和bounds分别
- iOS开发中(null)与<null>的判断
- iOS中Block全面分析
- iOS kvc
- iOS-键盘常见处理,自定义键盘上的工具条、定义键自盘方法等