Мой «ответ» не содержит содержит прямой ответ на вопрос Евгения. Однако я нашел кучу недокументированных функций, которые, вероятно, могут помочь.
Я искал whithin iOS SDK для функций, связанных с акселерометром. Кажется, что все сводится к одной из двух фреймворков (другие основы полагаются на одну из них): SpringBoardServices (Private) и CoreMotion.
SpingBoardServices API, является относительно простым: Смотрите также: SBSAccelerometer description
Цель-C API:
@interface SBSAccelerometer : XXUnknownSuperclass {
id<SBSAccelerometerDelegate> _delegate;
CFRunLoopSourceRef _accelerometerEventsSource;
CFRunLoopRef _accelerometerEventsRunLoop;
double _interval;
NSLock* _lock;
BOOL _orientationEventsEnabled;
int _orientationEventsToken;
NSThread* _orientationEventsThread;
float _xThreshold;
float _yThreshold;
float _zThreshold;
}
@property(assign, nonatomic) id<SBSAccelerometerDelegate> delegate;
@property(assign, nonatomic) BOOL orientationEventsEnabled;
@property(assign, nonatomic) float zThreshold;
@property(assign, nonatomic) float yThreshold;
@property(assign, nonatomic) float xThreshold;
@property(assign, nonatomic) double updateInterval;
@property(assign, nonatomic) BOOL accelerometerEventsEnabled;
-(id)init;
-(void)dealloc;
-(void)_checkIn;
-(void)_checkOut;
-(void)_serverWasRestarted;
-(int)currentDeviceOrientation;
-(id)_orientationEventsThread;
-(void)_orientationDidChange;
@end
С-API (сигнатуры методы неизвестны):
int SBAccelerometer_server(struct unknown *in, struct unknown *out); //returns 1 on success, 0 otherwise
int SBAccelerometer_server_routine(struct unknown *in); // retuns 0 on error;
(?) SBSetAccelerometerClientEventsEnabled(...);
(?) SBSetAccelerometerDeviceOrientationChangedEventsEnabled(...);
(?) SBSetAccelerometerRawEventsInterval(...);
(?) SBXXDeliverAccelerometerEvent(...);
(NSString* or char*) _SBXXSBAccelerometer_subsystem;
CoreMotion интерфейс низкоуровневого API это C++ API. Я не буду публиковать все API (это намного больше, чем SpingBoardServices'), но наиболее перспективны части:
CLSensorFusionAccelerometerOnly::reset(float)
CLSensorNetworkProtocol::isAccelerometerPacket(__CFData const*)
CLSensorNetworkProtocol::serializeAccelerometerPacket(CLAccelerometer::Sample const&)
CLSensorNetworkProtocol::deserializeAccelerometerPacket(__CFData const*)
CLSensorInterface::setAccelerometerCallbackAndInfo(void (*)(void*, CLMotionTypeVector3 const&, double const&), void*)
Для получения дополнительной информации: http://www.iphonedevsdk.com/forum/iphone-sdk- разработка/4822-максимум-акселерометр reading.html. 'Вы не можете изменить режим с какой-либо опубликованной функцией API.« Я думаю, вам понадобится устройство с взломом и способ изменения режима акселерометра перед любым вызовом функций SDK. –
Разве вы не знаете, какой датчик движения используется на Apple Watch? Как я вижу, у них есть предел + -16g –