Android Sensorer Tutorial

De fleste av Android-enheter har innebygde sensorer som måler bevegelse, orientering, og ulike miljøforhold. Android-plattformen støtter tre hovedkategorier av sensorer.

  • bevegelsessensorer

    Miljø sensorer

    Posisjonssensorer

    Noen av sensorene er maskinvarebasert og noen er programvarebaserte sensorer. Uansett sensoren er, android tillater oss å få rådata fra disse sensorene og bruke det i søknaden vår. For denne android gir oss noen klasser.

    Android gir SensorManager og Sensor klasser for å bruke sensorene i søknaden vår. For å kunne bruke sensorer, er det første du må gjøre på å bruke gjenstand for SensorManager klasse. Det kan oppnås på følgende måte
    SensorManager sMgr;. SMgr = (SensorManager) this.getSystemService (SENSOR_SERVICE);

    Den neste tingen du trenger å gjøre er på å bruke gjenstand for Sensor klasse ved å ringe getDefaultSensor () metoden av SensorManager klassen. Syntaksen er gitt nedenfor −
    Sensor lys, lys = sMgr.getDefaultSensor (Sensor.TYPE_LIGHT);

    Når sensoren er erklært, må du registrere sin lytter og overstyre to metoder som er onAccuracyChanged og onSensorChanged. Syntaksen er som følger −
    sMgr.registerListener (dette, lys, SensorManager.SENSOR_DELAY_NORMAL); public void onAccuracyChanged (Sensor sensor, int nøyaktighet) {} public void onSensorChanged (SensorEvent hendelse) {}
    Får liste over sensorer støttes.

    Du kan få en liste over sensorer som støttes av enheten ved å ringe getSensorList metoden, som vil returnere en liste over sensorer som inneholder deres navn og versjonsnummer og mye mer informasjon. Deretter kan du veksle listen for å få informasjon. Syntaksen er gitt nedenfor:
    sMgr = (SensorManager) this.getSystemService (SENSOR_SERVICE), List < Sensor > list = sMgr.getSensorList (Sensor.TYPE_ALL); for (Sensor sensor: liste) {}

    Bortsett fra disse metodene, det finnes andre metoder som tilbys av SensorManager klasse for håndtering sensorer rammeverk. Disse metodene er listet nedenfor −
    Sr.NoMethod & description1 getDefaultSensor (int type)

    Denne metoden får standard sensor for en gitt type.
    2 getOrientation (flyte [] R, flyte [] verdier)

    Denne metoden returnerer en beskrivelse av dagens primær klipp på utklippstavlen, men ikke en kopi av dataene.
    3 getInclination (float [] I)

    Denne metoden beregner geomagnetiske helningsvinkelen i radianer fra tilbøyelighet matrise.
    4 registerListener (SensorListener lytteren, int sensorer, int rate)

    Denne metoden registrerer en lytter for sensoren
    5 unregisterListener (SensorEventListener lytteren, Sensor sensor) Anmeldelser

    Denne metoden avregistrerer en lytter for sensorene som det er registrert.
    6 getOrientation (flyte [] R, flyte [] verdier)

    Denne metoden beregner enhetens retning basert på rotasjonsmatrisen.
    7 getAltitude (float p0, flyte p)

    Denne metoden beregner Altitude i meter fra det atmosfæriske trykket og trykket ved havnivå.

    Eksempel

    Her er et eksempel som demonstrerer bruk av SensorManager klasse. Det skaper en enkel applikasjon som lar deg se listen over sensorer på enheten.

    For å eksperimentere med dette eksempelet, du kan kjøre dette på en faktisk enhet eller i en emulator.
    StepsDescription1You vil bruke Android studio for å lage en Android-applikasjon under en pakke com.example.sairamkrishna.myapplication. Mens du oppretter dette prosjektet, må du Target SDK og kompilere med på den nyeste versjonen av Android SDK til å bruke høyere nivåer av APIs.2Modify src /MainActivity.java fil for å legge nødvendig code.3Modify res /layout /activity_main å legge respektive XML components.4Run programmet og velge en som kjører Android-enhet, og installere programmet på den og verifisere resultatene.

    Følgende er innholdet i den modifiserte MainActivity.java
    .
    pakken com.example.sairamkrishna.myapplication, import android.app.Activity, import android.hardware.SensorManager, import android.os.Bundle, import android.util.Log, import android.view.Menu; import android. view.MenuItem, import android.view.View, import android.widget.TextView, import java.util.List, import android.hardware.Sensor, import android.hardware.SensorManager; public class MainActivity strekker Aktivitet {TextView TV1 = null; private SensorManager mSensorManager; Override Beskyttet void onCreate (Bundle savedInstanceState) {super.onCreate (savedInstanceState); setContentView (R.layout.activity_main); TV1 = (TextView) findViewById (R.id.textView2); tv1.setVisibility (View.GONE); mSensorManager = (SensorManager) getSystemService (SENSOR_SERVICE); List < Sensor > mList = mSensorManager.getSensorList (Sensor.TYPE_ALL); for (int i = 1; i < mList.size (); i ++) {tv1.setVisibility (View.VISIBLE); tv1.append ("\\ n" + mList.get (i) .getName () + "\\ n" + mList.get (i) .getVendor () + "\\ n" + mList.get (i) .getVersion ( )); }}Override Public boolean onCreateOptionsMenu (Meny menyen) {//Blås menyen; dette legger til elementer i handlingsfeltet hvis det er til stede. . getMenuInflater () blåse (R.menu.menu_main, menyen); return true; }Override Public boolean onOptionsItemSelected (MENUITEM element) {//Håndtak handlingen bar varen klikk her. Handlingsfeltet vil //automatisk håndtere klikker på Hjem /Opp-knappen, så lenge //som du angir en forelder aktivitet i AndroidManifest.xml. int id = item.getItemId (); //noinspection SimplifiableIfStatement if (id == R.id.action_settings) {return true; } Returnere super.onOptionsItemSelected (element); }}

    Følgende er endret innholdet i xml activity_main.xml
    < RelativeLayout xmlns:. android = "http://schemas.android.com/apk/res/android" xmlns: verktøy = "http://schemas.android.com/tools" android: layout_width = "match_parent" android: layout_height = "match_parent" android: paddingLeft = "@ dimen /activity_horizontal_margin" android: paddingRight = "@ dimen /activity_horizontal_margin . "android: paddingTop =" @ dimen /activity_vertical_margin "android: paddingBottom =" @ dimen /activity_vertical_margin "verktøy: kontekst =" MainActivity "android: transitionGroup =" true "> < TextView android: text = "Sensor" android: layout_width = "wrap_content" android: layout_height = "wrap_content" android: id = "+ id /textview" android: Tekststørrelse = "35dp" android: layout_alignParentTop = "true" android : layout_centerHorizontal = "true" /> < TextView android: layout_width = "wrap_content" android: layout_height = "wrap_content" android: text = "Tutorials point" android: id = "+ id /textView" android: layout_below = "+ id /textview" android: layout_centerHorizontal = "true" android: textcolor = "# ff7aff24" android: Tekststørrelse = "35dp" /> < Imageview android: layout_width = "wrap_content" android: layout_height = "wrap_content" android: id = "+ id /bildeVis" android: src = "@ teikne /abc" android: layout_below = "+ id /textView" android : layout_centerHorizontal = "true" android: tema = "@ stil /Base.TextAppearance.AppCompat" /> < TextView android: layout_width = "wrap_content" android: layout_height = "wrap_content" android: text = "Ny tekst" android: id = "+ id /textView2" android: layout_below = "+ id /bildeVis" android: layout_alignParentBottom = "true" android: layout_alignParentRight = "true" android: layout_alignParentEnd = "true" android: layout_alignParentLeft = "true" android: layout_alignParentStart = "true" /> < /RelativeLayout >

    Følgende er innholdet i < b> res /verdier /string.xml
    . < resources > < string name = "APP_NAME" > My Application < /string > < string name = "hello_world" > Hei, verden <! /string > < string name = "action_settings" > Innstillinger < /string > < /ressurser >

    Følgende er innholdet av AndroidManifest.xml
    fil
    . <? xml version = "1.0 "encoding =" utf-8 "> < manifest xmlns:? android =" http://schemas.android.com/apk/res/android "pakken =" com.example.sairamkrishna.myapplication "> < søknad android: allowBackup = "true" android: icon = "@ Mipmap /ic_launcher" android: label = "@ streng /APP_NAME" android: tema = "@ stil /AppTheme" > < aktivitet android: ". MainActivity" name = android: label = "@ streng /APP_NAME" > < intent-filter > < handling android: name = "android.intent.action.MAIN" /> < kategori android: name = "android.intent.category.LAUNCHER" /> < /intent-filter > < /aktivitets > < /søknad > < /manifest >

    La oss prøve å kjøre vår søknad vi bare endret. Jeg antar at du hadde laget ditt AVD
    mens du gjør oppsett miljø. For å kjøre programmet fra Android studio, åpne en av prosjektets aktivitets filer, og klikk Kjør ikonet fra verktøylinjen. Android studio installerer programmet på AVD og starter den, og hvis alt er bra med oppsettet og søknad, vil det vise følgende Emulator vindu −

    Nå, hvis du vil se på skjermen på enheten, vil du se liste over sensorer som støttes av enheten sammen med deres navn og versjon og annen informasjon.

    Hvis du vil kjøre dette programmet på forskjellige enheter, ville resultatet bli annerledes fordi produksjonen avhenger av antall sensorer støttes av enhet.