android - Wrong x value for sensors when using for augmented reality -
i use following (assuming quite standard) code retrieve orientation of tablet device augmented reality purpose (so back-camera should point valid direction).
private sensor maccelerometer; private sensor mmagnetometer; private float[] mlastaccelerometer = new float[3]; private boolean mlastaccelerometerset = false; private float[] mlastmagnetometer = new float[3]; private boolean mlastmagnetometerset = false; private sensor maccelerometer; private sensor mmagnetometer; private float[] mlastaccelerometer = new float[3]; private boolean mlastaccelerometerset = false; private float[] mlastmagnetometer = new float[3]; private boolean mlastmagnetometerset = false; private float[] inr = new float[9]; private float[] mr = new float[9]; private float[] morientation = new float[3]; ... msensormanager = (sensormanager) getsystemservice(context.sensor_service); ... maccelerometer = msensormanager.getdefaultsensor(sensor.type_accelerometer); mmagnetometer = msensormanager.getdefaultsensor(sensor.type_magnetic_field); ... msensormanager.registerlistener(this, maccelerometer, sensormanager.sensor_delay_fastest); msensormanager.registerlistener(this, mmagnetometer, sensormanager.sensor_delay_fastest); ... public void onsensorchanged(sensorevent event) { synchronized (this) { if (event.sensor == maccelerometer) { system.arraycopy(event.values, 0, mlastaccelerometer, 0, event.values.length); mlastaccelerometerset = true; } else if (event.sensor == mmagnetometer) { system.arraycopy(event.values, 0, mlastmagnetometer, 0, event.values.length); mlastmagnetometerset = true; } if (mlastaccelerometerset && mlastmagnetometerset && scene.camera() != null && mplane1 != null) { sensormanager.getrotationmatrix(inr, null, mlastaccelerometer, mlastmagnetometer); sensormanager.remapcoordinatesystem(inr, sensormanager.axis_x, sensormanager.axis_z, mr); sensormanager.getorientation(mr, morientation); /* code handles morientation */ } } } the problem code works flawlessly on samsung galaxy tab 10.1 (p7500, first version). same code running on asus transformer pad infinity (tf700), first value morientation[0] varies between +2.0 , +3.0 when rotating tablet around myself (i expect go between 0 , 3.14).
is there wrong device or there other variables overlooked?
there must have been error hardware of asus tf700. it's either in specific version had or in design of device. other android devices application worked expected.
Comments
Post a Comment