2009-10-07 74 views
6

我的应用程序的某些部分会更好地突出显示给用户,如果他们在电话上。有没有办法判断用户在使用手机时是否正在使用您的应用程序?

是否有打电话来查看我们是否在打电话?不幸的是,出于显而易见的原因,“致电”在API文档中检查是一个可怕的词。

+0

这是场景。 Bob从Jill接到电话。发生呼叫时Bob不使用我的应用程序。 Jill要求从我的应用程序中存储的鲍勃的一些信息。 Bob在电话中按下主页按钮,然后运行我的应用程序。 在这一点上,我想检测到鲍勃正在通过电话交谈,或者如果鲍勃刚刚在不通电话的情况下运行应用程序。 我不在乎应用程序运行时进入的电话 – Michael 2009-10-07 20:33:49

+0

伟大的问题。我也想知道。 – Jordan 2009-10-07 21:48:12

回答

2

CoreTelephony Framework可以告诉你。

的CTCallCenter currentCalls方法返回一组的当前活动的蜂窝呼叫。

0

当iPhone收到呼叫时,应用程序退出。你可以注册一个回调来妥善处理此事件,请参阅:

http://developer.apple.com/iphone/library/documentation/UIKit/Reference/UIApplicationDelegate_Protocol/Reference/Reference.html#//apple_ref/occ/intfm/UIApplicationDelegate/applicationWillTerminate:呼叫已完成

后,您的应用程序将重新启动。

出现在通话过程中保留您的应用程序的状态只是写得好:)


Arggh!我刚刚读了你的实际问题。

我找不到,也不知道任何API访问电话应用程序。我唯一的建议是,Phone是一个像其他应用程序一样的应用程序 - 它可以通过所有应用程序提供的http隧道发布信息。

我想知道如果你能有一个“我的手机”按钮,用户可以按来达到同样的效果?

2

当呼叫进入时,应用程序不会退出,它将转换到非活动状态。下面的方法应该是呼吁UIApplicationDelegate

- (void)applicationWillResignActive:(UIApplication *)application 

这种方法也被称为在其他情况下,当iPhone被锁定,例如,你有没有办法确定,如果它是一个呼入电话引起它。

5

看看[[UIScreen mainScreen] bounds][[UIScreen mainScreen] applicationFrame]之间的尺寸差异。如果diff是20像素,并且您没有隐藏状态栏,则用户可能不在通话中。如果差异为40像素,则用户可能正在通话,因为通话过程中出现的发光绿色状态栏大约是正常状态栏的两倍。

我以前没有这样做过,所以YMMV。祝你好运,让我知道,如果它的工作!

+3

我以为这是答案,但tethering做同样的事情......:O( – Michael 2009-11-03 19:30:09

相关问题