我想为越狱的 iphone(ios 4.0 或更高版本)创建一个应用程序。我希望我的应用程序继续运行,并且每当我的手机开始响铃(来电)时,我的应用程序应该能够捕获该“来电”事件,并且基于此我可以执行一些功能,例如降低扬声器音量。
谁能引导我走向正确的方向,我如何捕捉这样的事件,或者它是否在私人核心电话框架中可用?
我想为越狱的 iphone(ios 4.0 或更高版本)创建一个应用程序。我希望我的应用程序继续运行,并且每当我的手机开始响铃(来电)时,我的应用程序应该能够捕获该“来电”事件,并且基于此我可以执行一些功能,例如降低扬声器音量。
谁能引导我走向正确的方向,我如何捕捉这样的事件,或者它是否在私人核心电话框架中可用?
您确定要监控通话而不是使用
- (void)applicationWillResignActive:(UIApplication *)application
{
/*
Sent when the application is about to move from active to inactive state. This can occur for certain types of temporary interruptions (such as an incoming phone call or SMS message) or when the user quits the application and it begins the transition to the background state.
Use this method to pause ongoing tasks, disable timers, and throttle down OpenGL ES frame rates. Games should use this method to pause the game.
*/
}
甚至在默认的 XCode4 模板中?
如果您仍然想要通话监控 - 它在 iOS 4+ 的 Core Telephony 的公共部分中可用
#import <CoreTelephony/CTCall.h>
#import <CoreTelephony/CTCallCenter.h>
....
CTCallCenter *callCenter;//make it ivar if you are using ARC or handler will be auto-released
..
callCenter = [[CTCallCenter alloc] init];
callCenter.callEventHandler=^(CTCall* call)
{
NSLog(@"Call id:%@", call.callID);
[self callStateChange:call.callState andId:call.callID];
if (call.callState==CTCallStateDialing)
{
NSLog(@"Call state:dialing");
}
if (call.callState==CTCallStateIncoming)
{
NSLog(@"Call state:incoming");
//here you lower your speaking volume if you want
}
if (call.callState==CTCallStateConnected)
{
NSLog(@"Call state:connected");
}
if (call.callState==CTCallStateDisconnected)
{
NSLog(@"Call state:disconnected");
}
};