我具有使用AVFoundation的摄像头视图,并且如果有电话或Skype通话处于 Activity 状态,则无法使用摄像头。

我如何检查AVFoundation是否无法打开,那么我需要在不使用相机的情况下打开其他视图。

如果我会检查这个-

BOOL isPlayingWithOthers = [[AVAudioSession sharedInstance] isOtherAudioPlaying];

那么当任何其他应用播放音频时,它将不会打开。

有什么建议 ?

最佳答案

CTCallCenter对象具有currentCalls属性,该属性是当前调用的NSSet。如果有 call ,则currentCalls属性应为!= nil。

如果您想知道实际上是否有任何 call 连接,则必须遍历当前 call 并检查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;
}

07-24 09:25