iOS - 设备扬声器听筒切换,静音模式播放音频
2017-02-08 18:25
387 查看
做社交产品时 , 语音聊天是必不可少的 , 如果公司不用三方框架比如环信或者融云什么的 , IM这块就得纯手动撸了.. 正如我们项目 … 做到后面细节部分 , 听筒和扬声器切换播放语音 , 静音模式下依然可以播放语音 , 此需要必不可少 . 网上查了很多 , 也没找到合适的 , 可能是自己写IM的公司还是比较少吧 ..后面想明白后 , 其实非常简单 , 就几句代码 … 距离传感器 + 声筒切换
一 : 注册距离传感通知
二 : 初始化音频播放器
三 : 点击播放音频
四 : 移除通知,移除红外传感节省电
这样语音播放基本上和微信就差不多了.. 还是挺简单的..
一 : 注册距离传感通知
//1.一旦有物品靠近手机,离开手机时,都会发出通知。 [[NSNotificationCenter defaultCenter]addObserver:self selector:@selector(sensorStateChange:) name:UIDeviceProximityStateDidChangeNotification object:nil]; //2.设置静音模式依然播放 AVAudioSession *audioSession = [AVAudioSession sharedInstance]; [audioSession setCategory:AVAudioSessionCategoryPlayback error:nil]; [audioSession setActive:YES error:nil];
二 : 初始化音频播放器
//初始化音频播放器 - (void)initPlayerWithPath:(NSString *)path { //创建音乐播放器 , 注意此处player需要强引用一下 self.player = [[AVAudioPlayer alloc]initWithContentsOfURL:[NSURL fileURLWithPath:path] error:nil]; self.player.delegate = self; //设置代理,监听音频播放结束 [self.player prepareToPlay]; }
三 : 点击播放音频
- (void)play { [UIDevice currentDevice].proximityMonitoringEnabled = YES; //播放前开启距离传感器 [self.player play]; //播放 }
四 : 移除通知,移除红外传感节省电
- (void)audioPlayerDidFinishPlaying:(AVAudioPlayer *)player successfully:(BOOL)flag { [[NSNotificationCenter defaultCenter]removeObserver:self name:UIDeviceProximityStateDidChangeNotification object:nil]; //移除通知 [UIDevice currentDevice].proximityMonitoringEnabled = NO; //关闭距离传感器,节省电 }
这样语音播放基本上和微信就差不多了.. 还是挺简单的..
相关文章推荐
- iOS 音频播放时听筒及扬声器切换
- iOS 音频播放时听筒及扬声器切换
- iOS下微信语音播放之切换听筒和扬声器的方法解决方案
- iOS下微信语音播放之切换听筒和扬声器的方法解决方案
- iOS下微信语音播放之切换听筒和扬声器的方法解决方案
- iOS下微信语音播放之切换听筒和扬声器的方法解决方案
- iOS下微信语音播放之切换听筒和扬声器的方法解决方案
- iOS下微信语音播放之切换听筒和扬声器的方法解决方案
- iOS语音播放之切换听筒和扬声器的方法解决方案
- iOS下微信语音播放之切换听筒和扬声器的方法解决方案
- iOS下语音播放之切换听筒和扬声器的方法解决方案
- iOS下微信语音播放之切换听筒和扬声器的方法解决方案
- iOS下微信语音播放之切换听筒和扬声器的方法解决方案
- iOS下微信语音播放之切换听筒和扬声器的方法解决方案
- iOS下微信语音播放之切换听筒和扬声器的方法解决方案
- iOS语音播放之切换听筒和扬声器的方法解决方案
- iOS下微信语音播放之切换听筒和扬声器的方法解决方案
- iOS语音播放之切换听筒和扬声器的方法解决方案
- iOS下微信语音播放之切换听筒和扬声器的方法解决方案
- iOS下微信语音播放之切换听筒和扬声器的方法解决方案