【问题标题】:Check is phone call or Skype call is active iOS检查是否通话或 Skype 通话处于活动状态 iOS
【发布时间】:2015-11-27 05:31:27
【问题描述】:

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

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

如果我会检查这个-

BOOL isPlayingWithOthers = [[AVAudioSession sharedInstance] isOtherAudioPlaying];

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

有什么建议吗?

【问题讨论】:

    标签: ios objective-c camera avfoundation


    【解决方案1】:

    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;
    }
    

    【讨论】:

    • 据我了解,它只会检测到电话?
    • Yes San - 这只会检测电话呼叫。
    【解决方案2】:

    我在 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
    }
    

    【讨论】:

      【解决方案3】:

      您的应用委托将收到-applicationDidResignActive 消息,并且您的应用可以侦听UIApplicationDidResignActiveNotification。当您的应用被呼叫中断时以及在应用被中断的其他情况下(例如屏幕锁定或用户按下锁定按钮时),将收到这些信息。

      更多详情如何处理Responding to Interruptions中的中断。

      另请参阅How can we detect call interruption in our iphone application? 上的堆栈溢出帖子

      【讨论】:

      • 这将在应用程序处于活动状态然后被中断时起作用,还有其他方法可以检查应用程序启动吗?
      • 在应用启动期间没有确定的方法来实现它,但是通过检查状态栏框架来解决它,它不是100%的解决方案。参考现有堆栈帖子Detecting if user has in call status bar
      猜你喜欢
      • 2012-02-09
      • 1970-01-01
      • 2012-12-08
      • 1970-01-01
      • 1970-01-01
      • 2013-10-29
      • 2011-05-02
      • 1970-01-01
      • 2019-03-21
      相关资源
      最近更新 更多