Hjem Social Media Udvikler til Project Tango - dummies

Udvikler til Project Tango - dummies

Video: Car Quist-Møller i Den 3. Tango 2024

Video: Car Quist-Møller i Den 3. Tango 2024
Anonim

Android driver mange af Googles innovative projekter. Tag for eksempel tablet-enheden kendt som Project Tango. Ved første øjekast ser en Project Tango-enhed ud som en almindelig syv-tommers tablet. Når du tænder for enheden, kan du se den velkendte Android-startskærm med ikoner til lancering af apps og med indikatorer for WiFi-signal og batteristyrke.

Enheden kører selv Googles Play Butik-app, så du kan bruge den til at surfe på internettet, redigere dokumenter og gøre alle de andre ting, som almindelige tablet-enheder gør.

Men Project Tangos hardware er ikke almindelig. På bagsiden af ​​tabletten er der en dybdesensor, et fiskekamera og et IR-kamera. Ved at kombinere data fra disse kilder med sin interne bevægelsessporingshardware, skaber Project Tango et 3D-kort over det omgivende rum.

Du kan lave et kort over din egen stue og gemme kortet på en Project Tango enhed. Når du bringer enheden tilbage til din stue, husker enheden pladsen og alle genstande inde i rummet.

Tango kommer med et par demo apps. Med en app målter du enheden på to punkter for at måle afstanden mellem disse punkter. Du kan stå flere meter fra start- og slutpunktet, fordi enheden ved, hvor langt du er fra hvert af punkterne.

Med en anden app går du gennem virtuelle verdener. For at ændre dit synspunkt i en verden, drejer du ikke et joystick, flytter en mus eller træk fingrene langs en skærm. I stedet ser du enhedens skærm, når du bevæger dig rundt i dit eget virkelige miljø. Enheden viser dig, hvad du vil se i den virtuelle verden, mens du går fremad, vend for at se sidelæns og navigere dig rundt virtuelle 3D-objekter.

For at komme i gang med at udvikle, kommer Project Tango med nogle prøveapps. Åbning af den meget grundlæggende QuickStart-app i Android Studio viser oversættelses- og rotationsværdier, når du flytter enheden fra sted til sted. (Se nedenstående figur.)

QuickStart-appen.

Kernen i QuickStart-appen er en Android-aktivitet. Nogle af appens kode vises nedenfor.

/ * * Copyright 2014 Google Inc. Alle rettigheder forbeholdes. * * Licenseret under Apache License, Version 2. 0 ("License"); * Du må ikke bruge denne fil undtagen i overensstemmelse med Licensen. * Du kan få en kopi af licensen på * * // www. apache. org / licenser / LICENS-2. 0 * * Medmindre det kræves i henhold til gældende lovgivning eller aftalt skriftligt, distribueres software * distribueret under Licensen på en "AS IS" BASIS, * UDEN GARANTIER ELLER BETINGELSER AF ENHVER ART, enten udtrykkeligt eller underforstået.* Se Licensen for det specifikke sprog, der styrer tilladelser og * begrænsninger under Licensen. * / import com. google. ATryk. tangoservice. Tango; import com. google. ATryk. tangoservice. Tango. OnTangoUpdateListener; import com. google. ATryk. tangoservice. TangoConfig; import com. google. ATryk. tangoservice. TangoCoordinateFramePair; import com. google. ATryk. tangoservice. TangoPoseData; // Der er flere importdeklarationer her offentlig klasse MainActivity udvider 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); // Sæt Tango-konfiguration til bevægelsessporing 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);} catch (TangoOutOfDateException e) {} fange (TangoErrorException e) {}} private void setTangoListeners () {// Vælg koordinatrammerpar ArrayList framePairs = new ArrayList (); framePairs. tilføj (ny TangoCoordinateFramePair (TangoPoseData. COORDINATE_FRAME_START_OF_SERVICE, TangoPoseData. COORDINATE_FRAME_DEVICE)); // Tilføj en lytter til Tango pose data mTango. connectListener (framePairs, ny OnTangoUpdateListener () { @Override offentligt tomrum påPoseAvailable (TangoPoseData pose) { // Format Translation og Rotation data final String translationMsg = String. format (sTranslationFormat, pos. oversættelse [0], posere. oversættelse [1], sætte oversættelse [2]), slutstreng rotationMsg = Stringformat (sRotationFormat, posere rotation [0], [rotation] [3]); // Vis data i TextViews runOnUiThread (Ny Runnable () { @Override offentlig tomgang () { mTranslationTextView. setText (translationMsg); mRotationTextView.} } } } );}} Hvad du ser her, er ikke hele 210-linien MainActivity klasse, men nogle af klassens vigtige højdepunkter er opsummeret. Se på MainActivity-klassen. Hjertet af aktivitetens kode er inde i den anonyme OnTangoUpdateListener klasse med sin onPoseAvailable metode.

I hverdagen er en

pose

den måde du orienterer dit hoved i forhold til dine omgivelser. Og i Project Tango-terminologi er en pose den måde du orienterer enheden på i forhold til omgivelserne. Et pose er beskrevet af syv tal, ligesom de oversættelses- og rotationsnumre, som du ser i det foregående billede. Når enhedens hardware registrerer en ny pose, kalder softwaren onPoseAvailable-metoden. OnPoseAvailable-metoden skal vise meddelelser som Oversættelse: -2.6622, 3. 214773, 2. 824979 i aktivitetens tekstfelter. Men der er et problem. Android's trådløbsregler dikterer, at ingen andre tråd end hovedtråden kan opdatere en applikations brugergrænseflade. I MainActivity-klassen løber OnTangoUpdateListener-forekomsten i en tråd helt. Så kan instansens onPoseAvailable-metode ikke vise meddelelser i aktivitetens tekstfelter ved direkte at ringe til mTranslationTextView. setText og mRotationTextView. setText metoder.

Men som professor Farnsworth i

Futurama

siger altid, er der "Gode nyheder, alle! "Android har en runOnUiThread metode til bare sådanne lejligheder. RunOnUiThread-metoden er en klasse, der implementerer Java's Runnable-grænseflade. I QuickStart-appens kode viser denne kørselsmetode tekst på vegne af OnTangoUpdateListener-forekomsten. Til sidst ser enhedens bruger oversættelses- og rotationsdataene, og alt er godt.

Udvikler til Project Tango - dummies

Valg af editor

Hvem er St. John Evangelist? - dummies

Hvem er St. John Evangelist? - dummies

Ifølge den katolske kirke, St. John Evangelist, den elskede discipel, var den yngste af apostlene og den tredje til at blive optaget til Jesu privilegerede indre cirkel sammen med St. James den store og st Peter. Han skrev det fjerde evangelium og er også kendt som John den guddommelige for hans høje teologi. Galilea ...

Hvem er St. Matthias? - dummies

Hvem er St. Matthias? - dummies

Ifølge den katolske kirke, St. Matthias, hvis navn på hebraisk betyder Herrens gave, blev udnævnt til en apostel efter forræderi og selvmord fra Judas Iscariot, en af ​​de oprindelige 12 apostle. Matthias var en af ​​Herrens oprindelige 72 disciple fra Jesu dåb i Jordanfloden. ...

Valg af editor

Forbedre ernæringen til børn af enhver alder med Paleo Lifestyle - dummies

Forbedre ernæringen til børn af enhver alder med Paleo Lifestyle - dummies

Paleo Livsstil er sund for både voksne og børn. Den bedste tid til at introducere din kiddos til de næringsrige fødevarer på Paleo diæt er uden tvivl så ung som muligt. Faktisk, når børnene er unge, har de en stor interesse for at opdage sunde spisepraksis. De er fascineret af menneskekroppen og hvordan ...

At vide, hvilke fedtstoffer og olier der er mest stabile til Paleo Cooking - dummies

At vide, hvilke fedtstoffer og olier der er mest stabile til Paleo Cooking - dummies

Fedtstoffer og olier er kun stabile op til en bestemt madlavningstemperatur; Derefter bliver de beskadigede og kan resultere i betændelse - en bestemt Paleo madlavning nej-nej. Din Paleo Fat / Olies stabilitet før madlavning er afgørende. Hvis du tilbereder en olie med høj varme, skal du sørge for at din olie er stabil nok til at klare det ...

Valg af editor

Tilføj JavaScript-sammenligningsoperatører til betingelseserklæringer - dummies

Tilføj JavaScript-sammenligningsoperatører til betingelseserklæringer - dummies

JavaScript bruger sammenligningsoperatører indenfor betingelser for at gøre numeriske eller alfabetiske sammenligninger af variabler med andre variabler eller værdier. Ved hjælp af disse operatører kan du bestemme, om en variabel er større end, mindre end eller lig med en anden variabel eller værdi. Du kan også bruge kombinationer af disse sammenligningsoperatører. Navn Operator Eksempel Bemærkninger Ligestilling == ...

Hvad skal jeg gøre, når den normale behandling af min iOS-applikation afbrydes? - dummies

Hvad skal jeg gøre, når den normale behandling af min iOS-applikation afbrydes? - dummies

På en iOS-enhed, kan forskellige begivenheder udover opsigelse afbryde din app for at tillade brugeren at reagere, og din app flytter til inaktiv tilstand. Hvis brugeren vælger at ignorere en afbrydelse, flytter din app tilbage til den aktive tilstand og fortsætter med at køre som før. Hvis brugeren beslutter at trykke på advarslen, ...