Meghatározása térbeli helyzetét
tájolásérzékelő - kombinációja a mágneses mező érzékelő teljesülnek a szerepe az elektronikus iránytű, és egy gyorsulásmérő, amely méri a hajlam és a forgatást.
Ha ismeri a trigonometrikus, így a szükséges készségeket, hogy a pozíció meghatározása, a berendezés mind a három tengely alapján a vallomása vyvayas gyorsulásmérő és mágneses térerősség-érzékelők. Azonban, ha adsz egy trigonometria ugyanolyan érzéseket, mint én, akkor örömmel hallja, hogy az Android mindent megtesz a számításokat magam.
Tény, hogy az Android rendszerben kétféle módon meghatározza a helyzetét a készülék. Tudod, hogy egy kérelmet a tájékozódás a szenzor vagy megszerezni a szükséges adatokat a gyorsulásmérő és mágneses térerősség-érzékelők. A második lehetőség a lassabb, de van előnye a - nagyobb pontosság és a képesség, hogy módosítsa a referenciakeret helyzetének meghatározására az űrben. A következő szakaszok által leírt mindkét megközelítés.
Amikor egy standard referencia rendszer A berendezés helyzetének három dimenzióban kell kiszámítani, ábrán látható módon. 14.2. Mivel abban az esetben, egy gyorsulásmérő, a készülék a nyugalmi, fekvő képernyő felfelé egy sík felületre.
• A X tengelyen (irány). Eszköz vo irányban, amikor vezetés körül az X tengely; 0 ° / 360 ° - észak, 90 ° - keleti, 180 ° - South, 270 ° - nyugati.
• Y-tengely (dönthető). Eszköz hajlásszöge tengelyhez képest a forgás során Y. Ő egyenlő 0 °, ha a készülék fekszik a hátsó fedél,
-90 ° -, ha függőlegesen elhelyezett (a felső része a készülék felfelé), 90 ° -, ha fordított 180 ° / -180 ° - ha ekra- prefektúra le.
• A Z tengely (forgatás). Rátérve a proaktív lengőkeret tengelyirányban eszközt
Z között -90 ° és 90 °. A 0 ° a készülék fekszik a hátsó fedél,
-90 ° képernyő balra fordult, 90 ° - a jobb oldalon.
a helyzetérzékelő
A legegyszerűbb módja annak, hogy nyomon követheti a helyzet a berendezés térbeli - használata külön tájolásérzékelő. Létrehozása és ruyte regisztrált SensorEventListener segítségével SensorManager objektumot az alapértelmezett pozícióérzékel, amint azt a listában 14.3.
Listing 14.3. a helyzetérzékelő
SensorManager sm = (SensorManager) getSystemService (Context.SENSOR_ SERVICE);
int sensorType = Sensor.TYPE_ORIENTATION;
sm.registerListener (myOrientationListener, sm.getDefaultSensor (sensorType), SensorManager.SENSOR_DELAY_NORMAL);
Amikor a helyzet az eszköz megváltozik, a végrehajtás SensorEventListener felület kezelő kiváltott onSensorChanged. SensorEvent paraméter magában egy sor lebegőpontértékeket helyzetét leíró eszköz három tengely mentén. Az első elem a tömb - az irányt, a második - a lejtőn, a harmadik - a forgatás.
végső SensorEventListener myOrientationListener = new
public void onSensorChanged (SensorEvent sensorEvent)
if (sensorEvent.sensor.getType () == Sensor.TYPE_ORIENTATION)
float headingAngle = sensorEvent.values [0]; float pitchAngle = sensorEvent.values [1]; float rollAngle = sensorEvent.values [2];
// TODO használja a változás a pozíció a programban.
public void onAccuracyChanged (érzékelő szenzor, int pontosság) <>