[[UIDevice currentDevice] setProximityMonitoringEnabled:NO];   //建议在播放之前设置yes,播放结束设置NO,这个功能是

//添加监听

self

@selector(sensorStateChange:)

@"UIDeviceProximityStateDidChangeNotification"

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;

sizeof(sessionCategory),

&sessionCategory);

UInt32 audioRouteOverride = kAudioSessionOverrideAudioRoute_Speaker;

sizeof (audioRouteOverride),

&audioRouteOverride);

//默认情况下扬声器播放

/**
 *  创建播放器
 *
 *  @return 播放器
 */
-(AVAudioPlayer *)audioPlayer{
//    _audioPlayer=nil;
    if (!_audioPlayer) {
        NSURL *url=[self getSaveAudioPath];
        NSError *error=nil;
        _audioPlayer=[[AVAudioPlayer alloc]initWithContentsOfURL:url error:&error];
        _audioPlayer.numberOfLoops=0;
        _audioPlayer.delegate=self;
        [_audioPlayer prepareToPlay];
        
        //初始化播放器的时候如下设置
        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];
        if (error) {
            NSLog(@"创建播放器过程中发生错误,错误信息:%@",error.localizedDescription);
            return nil;
        }
    }
    return _audioPlayer;
}

转载于:https://www.cnblogs.com/frounk/p/5448953.html

iOS 类微信语音播放之切换听筒和扬声器的方法解决方案相关推荐

  1. iOS语音播放之切换听筒和扬声器的方法解决方案

    iOS下微信语音播放之切换听筒和扬声器的方法解决方案 [[UIDevice currentDevice] setProximityMonitoringEnabled:YES]; //建议在播放之前设置 ...

  2. iOS-OC-语音播放之切换听筒和扬声器的方法解决方案(红外感应)

    1.设置监听,设置红外线开启状态(先关闭) //监听是否靠近耳朵     [[NSNotificationCenter defaultCenter] addObserver:self selector ...

  3. 微信语音能保存多久服务器,微信语音播放失败?可能是这几个原因导致的,看完你就懂了...

    很多朋友在使用手机播放其他好友发送给自己的语音消息时,会出现"语音播放失败"的提示,不知道是什么原因导致的,本期文章就说说导致微信语音播放失败的几个原因,以及可行的解决办法. 一. ...

  4. 短视频平台源码,iOS 仿微信语音输入动画

    短视频平台源码,iOS 仿微信语音输入动画实现的相关代码 // // PBSpeechRecognizer.h // ParkBest // // Created by summerxx27 on 2 ...

  5. php仿微信语音条,html5的audio实现高仿微信语音播放效果

    前言 之前做过一个微信的项目,专家回复可以录音,然后储存成mp3格式,前台可以获取mp3,客户可以在线试听mp3录音效果,今天就简单分享一下这个效果如何实现,及实现思路和方法! 效果图 前台大体呈现效 ...

  6. js模仿微信语音播放的小功能

    自己写的一个模仿微信语音播放的小功能,实现的主要功能是:点击播放,点击暂停,播放切换,,,  代码如下: <!DOCTYPE html> <html lang="en&qu ...

  7. html5的audio实现高仿微信语音播放效果

    效果图 前台大体呈现效果图如下: 点击就可以播放mp3格式的录音.点击另外一个录音,当前录音停止! 思路 关于播放动画,这个很简单,我们可以用css3的逐帧动画来实现.关于逐帧动画,我之前的文章也写过 ...

  8. Windows如何 cmd 查找文件路径 开机启动 CMD语音播放 CMD切换到管理员!

    1,语音播放: CreateObject("SAPI.SpVoice").Speak"崭新的开始,你好!" 单词别拼写错误啦! 把这个拖到开机启动项里就可以开后 ...

  9. [模拟拖拽] 模拟将一个文件拖拽到一个软件窗口上,实现拖拽操作(微信语音播放器)...

    "金蛇语音播放器" 是我随便写的一个假名.要实现的功能是: 我在网上下载了一个播放器,在自己公司的软件中使用,用来播放微信的语音. 因为版权问题,我不想让别人知道我用的是金蛇播放器 ...

最新文章

  1. RAC 安装patch 后启动实例 报错 ORA-00439 feature not enabled- Real Application Clusters 解决方法...
  2. 软件黑盒测试的意思,请问黑盒测试是什么意思?
  3. Oracle入门(三B)之11G新特性 SYSASM 角色用来管理ASM
  4. [Node.js] 模块化 -- 中间件和跨域
  5. SAP License:ERP系统中供应商管理怎么做?
  6. 二分查找法最大最小比较次数
  7. /NOENTRY在VS里面的设置位置
  8. Android 广告图片 全屏图片适配方案的思路
  9. 工程项目进度控制的重点内容是什么?
  10. 目标定位算法(三)之基于角度的定位算法
  11. 关于python的文献综述_关于毕业论文文献综述,史上最全总结.doc
  12. 为什么建议将成员属性设置为私有
  13. linux 脚本编写 -eq,关于shell脚本基础编程第四篇
  14. 杜邦分析法拆解三种商业模式
  15. RTL8723BU最新驱动代码
  16. YUV Player Deluxe 注册
  17. android11息屏显示,Android 11系统锁屏做出改善:不再显示专辑封面
  18. TensorFlow 智能机器人原理与实现
  19. python蓝桥杯 既约分数
  20. 阿里云OSS图床搭建方法

热门文章

  1. 怎么提升社群转化率?
  2. Python中f-string用法
  3. Linux音频驱动之一:音频驱动注册流程
  4. 共享该计算机的所有用户什么意思,电脑上共享是什么意思
  5. 数据库有数据但查询出来的值为Null
  6. 灵遁者油画作品《最美丽的女孩》
  7. 【目标检测】G-GhostNet
  8. Redis概述与安装
  9. Spring initializr生成springboot项目产生的mvnw文件与mvnw.cmd文件的作用
  10. 海坨山露营_从在教室里露营到真正的游戏开发工作室