正规品牌网站设计品牌,网站信息备案变更 哪里做,网站内容作弊的形式,嘉兴网络项目建站公司问题 最近在做一个有录音功能的App#xff0c;要求当用户接到来电时#xff0c;要停止录音。该如何实现这个功能呢#xff1f; 解决方案 我首先想到了AppDelegate里的applicationWillResignActive:方法#xff0c;在该方法的注释中就写到到收到来电或短信时#xff0c;系统… 问题 最近在做一个有录音功能的App要求当用户接到来电时要停止录音。该如何实现这个功能呢 解决方案 我首先想到了AppDelegate里的applicationWillResignActive:方法在该方法的注释中就写到到收到来电或短信时系统会自动调用该方法如下 // Sent when the application is about to move from active to inactive state. This can occur for certain types of temporary interruptions (such as an incoming phone call or SMS message) or when the user quits the application and it begins the transition to the background state. // Use this method to pause ongoing tasks, disable timers, and throttle down OpenGL ES frame rates. Games should use this method to pause the game. 但是有个问题当程序进入后台时也会调用这个方法而我的App要求即使进入后台也可以继续录音而在applicationWillResignActive:方法里无法判断是什么原因引起的该方法的调用可能有方法但我没搜到哪位朋友知道的话分享一下因此这个解决方案行不通。 继续查找资料最终找到CoreTelephony框架这个框架包含了电话相关的API可以实现监测来电查看运营商信息等功能。见上一篇CoreTelephony框架的博文下面就是具体的实现监测来电的代码
code classhljs objectivec has-numbering styledisplay: block; padding: 0px; color: inherit; box-sizing: border-box; font-family: Source Code Pro, monospace;font-size:undefined; white-space: pre; border-radius: 0px; word-wrap: normal; background: transparent;span classhljs-preprocessor stylecolor: rgb(68, 68, 68); box-sizing: border-box;#import span classhljs-title stylebox-sizing: border-box;ViewController.h/span/spanspan classhljs-comment stylecolor: rgb(136, 0, 0); box-sizing: border-box;//引入框架/span
import CoreTelephony;span classhljs-class stylebox-sizing: border-box;span classhljs-keyword stylecolor: rgb(0, 0, 136); box-sizing: border-box;interface/span span classhljs-title stylebox-sizing: border-box; color: rgb(102, 0, 102);ViewController/span ()/span
span classhljs-keyword stylecolor: rgb(0, 0, 136); box-sizing: border-box;property/span (span classhljs-keyword stylecolor: rgb(0, 0, 136); box-sizing: border-box;nonatomic/span, span classhljs-keyword stylecolor: rgb(0, 0, 136); box-sizing: border-box;strong/span) CTCallCenter * center;
span classhljs-keyword stylecolor: rgb(0, 0, 136); box-sizing: border-box;end/spanspan classhljs-class stylebox-sizing: border-box;span classhljs-keyword stylecolor: rgb(0, 0, 136); box-sizing: border-box;implementation/span span classhljs-title stylebox-sizing: border-box; color: rgb(102, 0, 102);ViewController/span/span- (span classhljs-keyword stylecolor: rgb(0, 0, 136); box-sizing: border-box;void/span)viewDidLoad {[span classhljs-keyword stylecolor: rgb(0, 0, 136); box-sizing: border-box;super/span viewDidLoad];span classhljs-keyword stylecolor: rgb(0, 0, 136); box-sizing: border-box;self/spanspan classhljs-variable stylecolor: rgb(102, 0, 102); box-sizing: border-box;.center/span [[CTCallCenter alloc] init];span classhljs-keyword stylecolor: rgb(0, 0, 136); box-sizing: border-box;self/spanspan classhljs-variable stylecolor: rgb(102, 0, 102); box-sizing: border-box;.center/spanspan classhljs-variable stylecolor: rgb(102, 0, 102); box-sizing: border-box;.callEventHandler/span ^(CTCall * call){span classhljs-comment stylecolor: rgb(136, 0, 0); box-sizing: border-box;//TODO:检测到来电后的处理/span};}
span classhljs-keyword stylecolor: rgb(0, 0, 136); box-sizing: border-box;end/span/codeul classpre-numbering stylebox-sizing: border-box; position: absolute; width: 50px; top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right: 1px solid rgb(221, 221, 221); list-style: none; text-align: right; background-color: rgb(238, 238, 238);li stylebox-sizing: border-box; padding: 0px 5px;1/lili stylebox-sizing: border-box; padding: 0px 5px;2/lili stylebox-sizing: border-box; padding: 0px 5px;3/lili stylebox-sizing: border-box; padding: 0px 5px;4/lili stylebox-sizing: border-box; padding: 0px 5px;5/lili stylebox-sizing: border-box; padding: 0px 5px;6/lili stylebox-sizing: border-box; padding: 0px 5px;7/lili stylebox-sizing: border-box; padding: 0px 5px;8/lili stylebox-sizing: border-box; padding: 0px 5px;9/lili stylebox-sizing: border-box; padding: 0px 5px;10/lili stylebox-sizing: border-box; padding: 0px 5px;11/lili stylebox-sizing: border-box; padding: 0px 5px;12/lili stylebox-sizing: border-box; padding: 0px 5px;13/lili stylebox-sizing: border-box; padding: 0px 5px;14/lili stylebox-sizing: border-box; padding: 0px 5px;15/lili stylebox-sizing: border-box; padding: 0px 5px;16/lili stylebox-sizing: border-box; padding: 0px 5px;17/lili stylebox-sizing: border-box; padding: 0px 5px;18/lili stylebox-sizing: border-box; padding: 0px 5px;19/lili stylebox-sizing: border-box; padding: 0px 5px;20/lili stylebox-sizing: border-box; padding: 0px 5px;21/lili stylebox-sizing: border-box; padding: 0px 5px;22/li/ulul classpre-numbering stylebox-sizing: border-box; position: absolute; width: 50px; top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right: 1px solid rgb(221, 221, 221); list-style: none; text-align: right; background-color: rgb(238, 238, 238);li stylebox-sizing: border-box; padding: 0px 5px;1/lili stylebox-sizing: border-box; padding: 0px 5px;2/lili stylebox-sizing: border-box; padding: 0px 5px;3/lili stylebox-sizing: border-box; padding: 0px 5px;4/lili stylebox-sizing: border-box; padding: 0px 5px;5/lili stylebox-sizing: border-box; padding: 0px 5px;6/lili stylebox-sizing: border-box; padding: 0px 5px;7/lili stylebox-sizing: border-box; padding: 0px 5px;8/lili stylebox-sizing: border-box; padding: 0px 5px;9/lili stylebox-sizing: border-box; padding: 0px 5px;10/lili stylebox-sizing: border-box; padding: 0px 5px;11/lili stylebox-sizing: border-box; padding: 0px 5px;12/lili stylebox-sizing: border-box; padding: 0px 5px;13/lili stylebox-sizing: border-box; padding: 0px 5px;14/lili stylebox-sizing: border-box; padding: 0px 5px;15/lili stylebox-sizing: border-box; padding: 0px 5px;16/lili stylebox-sizing: border-box; padding: 0px 5px;17/lili stylebox-sizing: border-box; padding: 0px 5px;18/lili stylebox-sizing: border-box; padding: 0px 5px;19/lili stylebox-sizing: border-box; padding: 0px 5px;20/lili stylebox-sizing: border-box; padding: 0px 5px;21/lili stylebox-sizing: border-box; padding: 0px 5px;22/li/ul 这里注意一定要把center写成一个单独的属性并且是强引用(strong)否则如果在viewDidLoad方法里创建centerviewDidLoad方法调用完后center就销毁了就无法检测到来电了千万不要犯这种低级错误。 还有一种方案。使用通知的方式监听AVAudioSessionInterruptionNotification。来电后语音播放会被停止触发中断。通过通知做后续操作。比较简单就不多说了。