我有使用AVFoundation的摄像头视图,如果电话或Skype呼叫处于活动状态,则我们无法使用摄像头。
如何检查AVFoundation是否无法打开然后我需要打开其他视图而不使用相机。
如果我要检查这个 -
{{1}}
然后当任何其他应用播放音频时它将无法打开。
有什么建议吗?
答案 0 :(得分:2)
CTCallCenter
对象的currentCalls
属性是当前调用的NSSet
。如果有一个调用,那么currentCalls属性应为!= nil。
如果您想知道是否实际连接了任何呼叫,那么您必须遍历当前呼叫并检查callState
以确定它是否为CTCallStateConnected
#import <CoreTelephony/CTCallCenter.h>
#import <CoreTelephony/CTCall.h>
-(bool)isOnPhoneCall {
/*
Returns YES if the user is currently on a phone call
*/
CTCallCenter *callCenter = [[[CTCallCenter alloc] init] autorelease];
for (CTCall *call in callCenter.currentCalls) {
if (call.callState == CTCallStateConnected) {
return YES;
}
}
return NO;
}
答案 1 :(得分:0)
我在Swift中使用这种方法,塔伦(Tarun)的回答帮助了我。
导入CallKit
func isOnPhoneCall() -> Bool {
/*
Returns true if the user is currently on a phone call
*/
for call in CXCallObserver().calls {
if call.hasEnded == false {
return true
}
}
return false
}
答案 2 :(得分:-1)
您的应用代表将收到-applicationDidResignActive
消息,您的应用可以收听UIApplicationDidResignActiveNotification
。当您的应用被呼叫中断时以及应用程序中断的其他情况(例如屏幕锁定或用户按下锁定按钮时)将收到这些内容。
有关如何处理Responding to Interruptions中的中断的更多详细信息。
另请参阅How can we detect call interruption in our iphone application?
上的堆栈溢出帖子