2017-08-05 123 views
0

我目前正在研究一個小指南針應用程序。到目前爲止,我得到了指南針的工作。我正在使用TYPE_ROTATION_VECTOR,因爲結果比使用TYPE_ACCELEROMETERTYPE_MAGNETIC_FIELD結合要穩定得多。這是我的代碼來計算方位角:Android傳感器:指南針

SensorManager.getRotationMatrixFromVector(rotationMatrix, sensorEvent.values); 
// original values are within [-180,180] 
azimuth = (float) (Math.toDegrees(SensorManager.getOrientation(rotationMatrix, orientation)[0]) + 360) % 360; 

如果設備平放在桌子上,結果是正確的。如果我擡起手機,站立(屏幕正對着我),我得到的結果不正確。我想這是因爲我的座標軸改變了。我如何正確檢測並處理這個問題?

回答

0

所以儘可能多的代碼片段和線程在這裏提出,我們需要軸的一些重映射..

SensorManager.remapCoordinateSystem(rotationMatrix, SensorManager.AXIS_X, SensorManager.AXIS_Z, remapped); 

如果我這樣做,傾斜不會影響方位了。但是,音高(提升手機的左側或右側)會改變方位角,我無法弄清楚原因。