检查是电话呼叫还是Skype呼叫处于活动状态iOS

时间:2015-11-27 05:31:27

标签: ios objective-c camera avfoundation

我有使用AVFoundation的摄像头视图,如果电话或Skype呼叫处于活动状态,则我们无法使用摄像头。

如何检查AVFoundation是否无法打开然后我需要打开其他视图而不使用相机。

如果我要检查这个 -

{{1}}

然后当任何其他应用播放音频时它将无法打开。

有什么建议吗?

3 个答案:

答案 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?

上的堆栈溢出帖子