android - Apportable & CoreMotion -
i'm trying game working on android. i've ported free version of apportable , works quite well, haven't been able implement gyroscope feature.
cmmotionmanager gets initialized motion updates never start (or @ least handledevicemotion: never gets called). motion manager's isaccelerometeractive property no, isaccelerometeravailable yes.
using [nsoperationqueue mainqueue] doesn't either.
this how initialize motion manager:
self.motionmanager = [[cmmotionmanager alloc] init]; self.motionmanager.gyroupdateinterval = .2; [self.motionmanager startdevicemotionupdatestoqueue:[[nsoperationqueue alloc] init] withhandler:^(cmdevicemotion *motion, nserror *error) { dispatch_async(dispatch_get_main_queue(), ^{ [self handledevicemotion:motion]; }); }]; it produces following message logcat:
e/sensors ( 507): hal:err open file /sys/bus/iio/devices/iio:device0/dmp_event_int_on write error 2 e/sensors ( 507): hal:err can't disable dmp event interrupt i have no idea means... i'm testing app on asus nexus 7.
is there special need use coremotion apportable?
edit: here's simple test project created demonstrate issue.
coremotion should work apportable. here simplified initialization , usage paradigm i've tested on nexus 7 (2012).
self.motionmanager = [[cmmotionmanager alloc] init]; [self.motionmanager startdevicemotionupdates]; self.motiontimer = [nstimer scheduledtimerwithtimeinterval:0.2 target:self selector:@selector(handledevicemotion) userinfo:nil repeats:yes]; instead of using startdevicemotionupdatestoqueue: withhandler: process motion events, try explicitly accessing devicemotion property in handledevicemotion method called repeating timer.
-(void) handledevicemotion { cmdevicemotion *motion = [self.motionmanager devicemotion]; // use motion data accordingly } and don't forget stop updates when you're done!
[self.motionmanager stopdevicemotionupdates];
Comments
Post a Comment