2

From what I can tell, my app should be firing accelerometer events while Im using the iPad simulator in XCode, but its not.

I have googled around and it somewhat seems that the accelerometer is not implemented in the simulator, is this correct? If so, why on earth would they have a "Hardware->Shake Gesture" menu option?

My code is as follows:

.h file:

@interface MyViewController : UIViewController <UIPickerViewDataSource, UIPickerViewDelegate, UIAccelerometerDelegate>{
    UIAccelerometer *accelerometer;
    //...other stuff
}
@property (nonatomic, retain) UIAccelerometer *accelerometer;
@end

then the .m file:

@implementation MyViewController
@synthesize accelerometer;
- (void)accelerometer:(UIAccelerometer *)accelerometer didAccelerate:(UIAcceleration *)acceleration {
    NSLog(@"%@", [NSString stringWithFormat:@"%@%f", @"X: ", acceleration.x]);
    NSLog(@"%@", [NSString stringWithFormat:@"%@%f", @"Y: ", acceleration.y]);
    NSLog(@"%@", [NSString stringWithFormat:@"%@%f", @"Z: ", acceleration.z]);
}

- (void)viewDidLoad {
    [super viewDidLoad];
    self.accelerometer = [UIAccelerometer sharedAccelerometer];
    self.accelerometer.updateInterval = .1;
    self.accelerometer.delegate = self;
}
@end

Does this look right?

Mark
  • 14,820
  • 17
  • 99
  • 159
  • The actions and gestures available through the simulator generate events, which are at a higher level than the accelerometer. – outis May 04 '10 at 05:32
  • Why would they have the menu options then? Am i missing something? If it doesnt do anything, why have it at all? – Mark May 04 '10 at 08:55

2 Answers2

5

There's no accelerator in the simulator.

The "Hardware → Shake Gesture" is generated by directly sending a UIEvent to the active application.

Although Shake Gesture is implemented using the accelerator on the device, conceptually they are two different kind of user input — the gesture is an event, the acceleration is continuous variation. Thus the Shake Gesture menu item exists for the apps which only use such gesture (e.g. Shake to Undo) but do not need to know the exact acceleration vector.

kennytm
  • 510,854
  • 105
  • 1,084
  • 1,005
  • ahh, I see, well then thats actually what I want, so is my code wrong for that kind of implementation? – Mark May 04 '10 at 11:07
  • @Mark: Do you just want to handle to shake gestures? If so, see http://stackoverflow.com/questions/150446/how-do-i-detect-when-someone-shakes-an-iphone/1111983#1111983. – kennytm May 04 '10 at 11:21
1

Accelerometer does not work on iPhone/iPod Simulator. Neither "Hardware->Shake Gesture" use accelerometer nor the orientation change of safari on simulator.

Gaurav Verma
  • 536
  • 3
  • 10