SBSAccelerometer is a class in the SpringBoardServices.framework which can be used to create an own SBAccelerometerInterface, even from within SpringBoard.app. It's advantage above hooking "accelerometer"-methods in SpringBoard is that a delegate can be chosen.
Creating an instance of SBSAccelerometer and the delegate
Once an instance of SBSAccelerometer has been created you can use _checkIn to activate it; to deactivate it you send _checkOut. Example:
SBSAccelerometer *theAcc = [[SBSAccelerometer alloc] init];
theAcc.accelerometerEventsEnabled = YES;
theAcc.updateInterval = 0.1;
theAcc.xThreshold = 0.2;
theAcc.yThreshold = 0.2;
theAcc.zThreshold = 0.2;
theAcc._orientationEventsEnabled = NO;
theAcc.delegate = myAccDelegateInstance;
[theAcc _checkIn];
The delegate has to implement:
-(void)accelerometer:(SBSAccelerometer*)accelerometer didAccelerateWithTimeStamp:(NSTimeInterval)timestamp
x:(float)x y:(float)y z:(float)z eventType:(unsigned)type
For orientation Events you need to enable _orientationEventsEnabled and implement the following method in your delegate:
-(void)accelerometer:(SBSAccelerometer*)accelerometer didChangeDeviceOrientation:(UIDeviceOrientation)newOrientation
References
|