在使用我的应用时,有没有一种方法可以知道用户是否正在通话中?

4

在使用应用程序时,是否有可能识别用户是否正在通话中。

以下是场景:

  1. 我接到一个电话
  2. 我接受了这个电话
  3. 点击主页按钮
  4. 启动一个应用程序

此时,我能告诉这个应用程序,有一个通话正在后台进行吗?

了解屏幕情况并不是一个全面的选项。因为在上网共享时会使生活更加困难。

3个回答

1
您可以检查状态栏的高度。如果它超过20像素,那么您可能正在通话中,或者在使用数据共享(AT&T不支持数据共享,因此如果您在美国,则必须在通话中)。
[UIApplication sharedApplication].statusBarFrame

我希望没有人认为因为AT&T不支持网络共享,就自动意味着他们在打电话。还有很多iPhone不是基于美国的... - Wally Lawless
我也希望如此,而且我仍然对AT&T的网络共享抱有希望! - Ben Gottlieb
每当我在 NSLog 语句中使用 [UIApplication sharedApplication].statusBarFrame 时,它显示的帧是 "0"。这是怎么回事? - Jonah
你是否在使用 NSStringFromCGRect(...) 包装框架? - Ben Gottlieb
在这种情况下,例如用户正在进行Skype通话,我该如何区分正在进行的通话和Skype通话。 - user454083

1

没有任何公共API可以获取手机状态或功能,因此您必须依赖于通话的副作用。

您可以像Ben Gottlieb建议的那样检查状态栏,或者尝试初始化音频录制,如果出现已在使用的错误,则可以相当确定麦克风正在用于通话。


1
更详细地说,你需要从你设置的视图高度中减去[UIApplication sharedApplication].statusBarFrame。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接