iOS下微信语音播放之切换听筒和扬声器的方法解决方案
来源:互联网 发布:qq空间pid淘宝客 编辑:程序博客网 时间:2024/05/17 02:31
iOS下微信语音播放之切换听筒和扬声器的方法解决方案
[[UIDevice currentDevice] setProximityMonitoringEnabled:YES]; //建议在播放之前设置yes,播放结束设置NO,这个功能是开启红外感应
//添加监听
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(sensorStateChange:)
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];
}
}
//初始化播放器的时候如下设置
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];
在 iOS 中,并非所有 iOS 设备都拥有近距离传感器。这里介绍如何调用 iPhone 的距离传感器。
使用近距离传感器
UIDevice 中有两个近距离传感器的属性:proximityMonitoringEnabled 和 proximityState。这两个属性都是 iOS 3.0 及以上才支持的。
proximityMonitoringEnabled 属性
To determine if proximity monitoring is available, attempt to enable it. If the value of the proximityState property remains NO, proximity monitoring is not available.
要确定近距离传感器是否可用,可以尝试启用它,即 proximityMonitoringEnabled = YES,如果设置的属性值仍然为NO,说明传感器不可用。
proximityState 属性
传感器已启动前提条件下,如果用户接近 近距离传感器,此时属性值为YES,并且屏幕已关闭(非休眠)。And vice versa。
Notification
UIDeviceProximityStateDidChangeNotification,当近距离传感器状态改变时发生。
//添加近距离事件监听,添加前先设置为YES,如果设置完后还是NO的读话,说明当前设备没有近距离传感器
[[UIDevice currentDevice] setProximityMonitoringEnabled:YES];
if ([UIDevice currentDevice].proximityMonitoringEnabled == YES) {
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(sensorStateChange:)name:UIDeviceProximityStateDidChangeNotification object:nil];
}
[[UIDevice currentDevice] setProximityMonitoringEnabled:NO];
[[UIDevice currentDevice] setProximityMonitoringEnabled:YES];
if ([UIDevice currentDevice].proximityMonitoringEnabled == YES) {
[[NSNotificationCenter defaultCenter] removeObserver:self name:UIDeviceProximityStateDidChangeNotification object:nil];
}
[[UIDevice currentDevice] setProximityMonitoringEnabled:NO];
#pragma mark - 处理近距离监听触发事件
-(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];
if (![MTool isPlayRecodering]) {//没有播放了,也没有在黑屏状态下,就可以把距离传感器关了
[[UIDevice currentDevice] setProximityMonitoringEnabled:NO];
}
}
}
- iOS下微信语音播放之切换听筒和扬声器的方法解决方案
- iOS下微信语音播放之切换听筒和扬声器的方法解决方案
- iOS下微信语音播放之切换听筒和扬声器的方法解决方案
- iOS下微信语音播放之切换听筒和扬声器的方法解决方案
- iOS下微信语音播放之切换听筒和扬声器的方法解决方案
- iOS下微信语音播放之切换听筒和扬声器的方法解决方案
- iOS下微信语音播放之切换听筒和扬声器的方法解决方案
- iOS下微信语音播放之切换听筒和扬声器的方法解决方案
- iOS下微信语音播放之切换听筒和扬声器的方法解决方案
- iOS下微信语音播放之切换听筒和扬声器的方法解决方案
- iOS下微信语音播放之切换听筒和扬声器的方法解决方案
- iOS下微信语音播放之切换听筒和扬声器的方法解决方案
- iOS下微信语音播放之切换听筒和扬声器的方法解决方案
- iOS下微信语音播放之切换听筒和扬声器的方法解决方案
- iOS下微信语音播放之切换听筒和扬声器的方法解决方案
- iOS下微信语音播放之切换听筒和扬声器的方法解决方案
- iOS下微信语音播放之切换听筒和扬声器的方法解决方案
- iOS语音播放之切换听筒和扬声器的方法解决方案
- 【项目经验】DataTable与JSON之间的转换
- Ember.js--入门
- 字符串匹配算法
- Python的getattr(),setattr(),delattr(),hasattr()
- 在Fragment中如何使用Toolbar
- iOS下微信语音播放之切换听筒和扬声器的方法解决方案
- 对于Button的圆角显示,利用layer实现
- Android app强更解决方案。
- 如何用winscp连接suse
- 什么是扇入和扇出?
- MFC中ListControl控件的使用
- LeetCode_237. Delete Node in a Linked List
- 个人记录一些常用的知识点
- 第一篇博客