Hjem Sosiale medier Utvikler for Project Tango - dummies

Utvikler for Project Tango - dummies

Video: Opplev fiskelykke med mobilteknologi | Telenor Norge 2024

Video: Opplev fiskelykke med mobilteknologi | Telenor Norge 2024
Anonim

Android driver mange av Googles innovative prosjekter. Ta for eksempel tablettapparatet kjent som Project Tango. Ved første øyekast ser en Project Tango-enhet ut som en vanlig syv-tommers tablett. Når du slår på enheten, ser du det kjente Android-startskjermbildet med ikoner for å starte programmer, og med indikatorer for WiFi-signal og batteristyrke.

Enheten kjører til og med Google Play Play-appen, slik at du kan bruke den til å bla gjennom nettet, redigere dokumenter og gjøre alt det andre vanlige nettbrettetheter gjør.

Men Project Tangos maskinvare er ikke vanlig. På baksiden av tabletten har du en dybdesensor, et fiskeøyekamera og et IR-kamera. Kombinere data fra disse kildene med den interne bevegelsessporingsmaskinen, oppretter Project Tango et 3D-kart over det omkringliggende rommet.

Du kan lage et kart over din egen stue og lagre kartet på en Project Tango-enhet. Når du tar enheten tilbake til stuen, husker enheten plassen og alle gjenstandene i rommet.

Tango kommer med noen få demo apps. Med en app, målretter du enheten på to punkter for å måle avstanden mellom disse punktene. Du kan stå flere meter fra start- og sluttpunktene fordi enheten vet hvor langt du er fra hvert av punktene.

Med en annen app går du gjennom virtuelle verdener. For å endre synspunktet i en verden, vri du ikke en joystick, flytt musen eller dra fingrene langs en skjerm. I stedet ser du enhetens skjerm når du beveger deg rundt i ditt eget virkelige miljø. Enheten viser deg hva du vil se i den virtuelle verden mens du går fremover, snu til å se sideveis, og navigere deg rundt virtuelle 3D-objekter.

For å komme i gang med å utvikle, kommer Project Tango med noen prøveapper. Å åpne den grunnleggende QuickStart-appen i Android Studio viser oversettelses- og rotasjonsverdier når du flytter enheten fra sted til sted. (Se følgende figur.)

QuickStart-appen.

Kjernen i QuickStart-appen er en Android-aktivitet. Noen av appens kode vises nedenfor.

/ * * Copyright 2014 Google Inc. Alle rettigheter reservert. * * Lisensiert under Apache-lisensen, versjon 2. 0 ("lisensen"); * Du kan ikke bruke denne filen unntatt i samsvar med lisensen. * Du kan få en kopi av lisensen på * * // www. apache. org / lisenser / lisens-2. 0 * * Med mindre det er påkrevd av gjeldende lov eller avtalt skriftlig, distribueres programvare * distribuert under lisensen på en "AS IS" BASIS, * UTEN GARANTIER ELLER BETINGELSER AV NOEN SIN, enten uttrykkelig eller underforstått.* Se lisensen for det bestemte språket som styrer tillatelser og * begrensninger under lisensen. * / import com. Google. en kran. tangoservice. Tango; importere com. Google. en kran. tangoservice. Tango. OnTangoUpdateListener; importere com. Google. en kran. tangoservice. TangoConfig; importere com. Google. en kran. tangoservice. TangoCoordinateFramePair; importere com. Google. en kran. tangoservice. TangoPoseData; // Det er flere importdeklarasjoner her offentlig klasse MainActivity utvider Aktivitet {@Override protected void onCreate (Bundle savedInstanceState) {super. onCreate (savedInstanceState); setContentView (R. layout. activity_main); mTranslationTextView = (TextView) findViewById (R. id. translation_text_view); mRotationTextView = (TextView) findViewById (R. id. rotation_text_view); // Instantiate Tango klient mTango = ny Tango (dette); // Sett opp Tango-konfigurasjon for bevegelsessporing mConfig = mTango. getConfig (TangoConfig. CONFIG_TYPE_CURRENT); mConfig. putBoolean (TangoConfig. KEY_BOOLEAN_MOTIONTRACKING, true); @Override protected void onActivityResult (int requestCode, int resultCode, Intent data) {prøv {setTangoListeners ();} catch (TangoErrorException e) {} prøv {mTango. connect (mConfig);} fangst (TangoOutOfDateException e) {} fangst (TangoErrorException e) {}} private void setTangoListeners () {// Velg koordinatrammepar ArrayList framePairs = new ArrayList (); framePairs. legg til (ny TangoCoordinateFramePair (TangoPoseData. COORDINATE_FRAME_START_OF_SERVICE, TangoPoseData. COORDINATE_FRAME_DEVICE)); // Legg til en lytter for Tango pose data mTango. connectListener (framePairs, ny OnTangoUpdateListener () { @Override offentlig tomgang påPoseAvailable (TangoPoseData pose) { // Formatoversettelse og rotasjonsdata endelig String translationMsg = String. format (sTranslationFormat, pose. oversettelse [0], posere. oversettelse [1], utgjøre oversettelse [2]); siste strengrotasjonMsg = Stringformat (sRotationFormat, posere rotasjon [0], utgjør rotasjon [3]); // Vis data i TextViews runOnUiThread (Ny Runnable () { @Override offentlig tomgangsløp () { mTranslationTextView. setText (translationMsg); mRotationTextView } } } );}} Det du ser her, er ikke hele 210-linjen MainActivity klassen, men noen av klassens viktige høydepunkter er oppsummert. Se på MainActivity-klassen. Kjernen til aktivitetens kode er inne i den anonyme OnTangoUpdateListener-klassen med sin onPoseAvailable-metode.

I hverdagen er en

pose

slik du orienterer hodet ditt i forhold til omgivelsene dine. Og i Project Tango-terminologi er en pose den måten du orienterer enheten på i forhold til omgivelsene. En pose er beskrevet av syv tall, som oversettelsen og rotasjonsnummeret som du ser i foregående figur. Når enhetens maskinvare registrerer en ny posisjon, kaller programvaren onPoseAvailable-metoden. OnPoseAvailable-metoden må vise meldinger som Oversettelse: -2.6622, 3. 214773, 2. 824979 i aktivitetens tekstfelt. Men det er et problem. Android's threading-regler dikterer at ingen annen tråd enn hovedtråden kan oppdatere et programs brukergrensesnitt. I MainActivity-klassen kjører OnTangoUpdateListener-forekomsten i en tråd helt. Så kan instansens onPoseAvailable-metode ikke vise meldinger i aktivitetens tekstfelter ved å ringe direkte til mTranslationTextView. setText og mRotationTextView. setText metoder.

Men som professor Farnsworth i

Futurama

alltid sier, er det "Gode nyheter, alle! "Android har en runOnUiThread-metode for bare slike anledninger. RunOnUiThread-metoden er en klasse som implementerer Java's Runnable-grensesnitt. I QuickStart-appens kode viser denne klassens kjøremetode tekst på vegne av OnTangoUpdateListener-forekomsten. Til slutt ser enhetens bruker oversettelses- og rotasjonsdataene, og alt er bra.

Utvikler for Project Tango - dummies

Redaktørens valg

Toppen Fordeler med enhetlig melding - dummies

Toppen Fordeler med enhetlig melding - dummies

Enhetlig meldingstjeneste gir en rekke fordeler for brukerne å administrere sine virksomheter med tilgjengelig, interfaced elektroniske kommunikasjonssystemer, for eksempel e-post, tale, messenger-tjenester. En enkelt innboks. Unified Messaging kan levere alle typer meldinger og kommunikasjon til en enkelt innboks. Den enkle innboksen er enklere for administratorer å opprettholde og gir fleksibilitet for ...

Topp Fem sikkerhetsbeskyttelser for mobilenheter - dummies

Topp Fem sikkerhetsbeskyttelser for mobilenheter - dummies

Om du danner en sikkerhetsplan for mobilenheten før eller etter din organisasjon distribuerer enhetene, du må vite de viktigste sikkerhetsbeskyttelsene som skal implementeres: En veldefinert sikkerhetspolicy for mobilenhet En MDM-løsning (Mobile Device Management) som lar deg kontrollere konfigurasjonen av medarbeidsenheter for å sikre at de er i Overholdelse ...

Sporing av informasjon om nøkkel Internett-tilkobling - dummies

Sporing av informasjon om nøkkel Internett-tilkobling - dummies

Bruk disse mellomrom for å holde oversikt over nøkkelinformasjon om Internett-tilkoblingen din, inkludert Internett-leverandør, din TCP / IP-konfigurasjon og informasjon om ruteren din. Leverandør Firmanavn ____________________________________ Teknisk støtte kontakt ____________________________________ Teknisk support telefonnummer ____________________________________ E-postadresse ____________________________________ E-postadresse ____________________________________ TCP / IP-informasjon IP-omr

Redaktørens valg

Ras og etniske forandringer i ateisme - dummier

Ras og etniske forandringer i ateisme - dummier

Kjønnsbalansen er ikke det eneste som skifter i ateisten landskap; i løpet av de siste årene har bevegelsen også fått en mye større tilstedeværelse av ikke-hvite ikke-troende. Religion har aldri bare vært om tro. Det handler også om fellesskap og identitet og mye mer. Dette gjelder særlig i rasemessig eller kulturelt minoritet ...

Percy Shelleys nødvendighet av ateisme - dummies

Percy Shelleys nødvendighet av ateisme - dummies

Bare å uttrykke en ateistisk mening høyt nok var nok til å sette britene av britisk rettferdighet i bevegelse i det 19. århundre. Men Shelley gikk utover det og hevdet at ateismen var en nødvendig posisjon - den eneste som kunne være rimelig holdt. Allikevel så sent som på 1800-tallet var blasfemi fortsatt en faktisk, ...

Sør park og ateisme - dummies

Sør park og ateisme - dummies

Den edgy og risikable animerte serien South Park sprang fra nontheistic hoder - i dette tilfellet ateister Trey Parker og Matt Stone. For mange mennesker, viser troende og ikke-troende, at South Park spiller en verdifull rolle i å slå de store spørsmålene ned til en overkommelig størrelse. South Park går etter at målene er ubarmhjertige, sparsomme no ...

Redaktørens valg

Utvikler for Project Tango - dummies

Utvikler for Project Tango - dummies

Android driver mange av Googles innovative prosjekter. Ta for eksempel tablettapparatet kjent som Project Tango. Ved første øyekast ser en Project Tango-enhet ut som en vanlig syv-tommers tablett. Når du slår på enheten, ser du det kjente Android-startskjermbildet med ikoner for å starte apper, og med indikatorer for WiFi-signal og ...

Grunnleggende sikkerhetsproblemer for mobilenheter med iOS-apper - dummies

Grunnleggende sikkerhetsproblemer for mobilenheter med iOS-apper - dummies

Mobile enheter med iOS-apper opplever større sikkerhetsrisiko enn stasjonære datamaskiner på grunn av dels mobilitet og delvis til størrelse. Overraskende, det er ikke deres mangel på datakraft som gir dem større risiko for angrep. Her er noen andre grunner at mobile enheter er mer sårbare enn skrivebordet.

Grunnleggende om Event-Driven Programmering for IOS Apps - Dummies

Grunnleggende om Event-Driven Programmering for IOS Apps - Dummies

I IOS-utvikling de fleste applikasjoner med svært interaktive (eller rike) brukergrensesnitt implementere en programmeringsmodell kjent som hendelsesdrevet programmering. Programmer som primært utfører beregninger og beregninger for å oppnå en oppgave, har en hovedfunksjon som orkestrerer disse beregningene og beregningene. Event-driven programmer er forskjellige. Deres formål er ikke å oppnå et beregningsmål ...