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.

Meghatározása térbeli helyzetét

• 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) <>

Kapcsolódó cikkek