Notă
Accesul la această pagină necesită autorizare. Puteți încerca să vă conectați sau să modificați directoarele.
Accesul la această pagină necesită autorizare. Puteți încerca să modificați directoarele.
Senzorii vă permit să adăugați funcționalități mai bogate în aplicațiile dvs., valorificând capacitățile telefonului. În acest articol, veți afla despre utilizarea senzorilor pe dispozitivul dvs. mobil în cadrul Power Apps.
Pentru a face acest lucru, veți crea un exemplu de aplicație cu două ecrane. Primul ecran va afișa direcția actuală a busolei, latitudinea, longitudinea, altitudinea și poate scana etichete NFC pentru a obține informații de text. Al doilea ecran va arăta cum să afișați datele accelerometrului pentru a produce unghiul dispozitivului de-a lungul axelor X și Y.
Pentru a configura scenariul din spatele primului ecran, imaginați-vă că construiți o aplicație pentru o vânătoare de comori bazată pe NFC. Fiecare participant va folosi aplicația pentru a scana o etichetă NFC care le va oferi o direcție a busolei, latitudinea și longitudinea care îi vor îndrepta către următoarea lor destinație. La această destinație, participantul va scana apoi o altă etichetă și va repeta procesul până când vor ajunge la sfârșitul vânătorii.
Pentru al doilea ecran, imaginați-vă că aveți nevoie de un instrument pentru a măsura aproximativ unghiurile. Când se află pe al doilea ecran, participantul va putea să își plaseze sau să țină dispozitivul pe o suprafață și să obțină unghiurile de pe axele X și Y ale dispozitivului, precum și să vizualizeze o reprezentare vizuală a acelor unghiuri.
Urmăriți acest videoclip pentru a afla cum să creați o aplicație care folosește senzori mobili:
Cerințe preliminare
Pentru această aplicație poate fi utilizat orice nivel de licență Power Apps deoarece nu sunt utilizate conexiuni de date.
Va fi necesar un dispozitiv mobil, cum ar fi un telefon mobil sau o tabletă cu capacități GPS și accelerometru deoarece este posibil ca majoritatea computerelor să nu aibă senzorii necesari.
Un dispozitiv compatibil cu NFC este necesar pentru funcția de scanare NFC. Se presupune, de asemenea, că etichetele NFC care trebuie scanate au fost preconfigurate pentru a produce valori de text în următorul format de exemplu:
"<b>Heading: </b> 80 degrees <br> <b>Latitude: </b> 44.4604788 <br> <b>Longitude: </b> -110.82813759"
Acesta va furniza textul într-un format compatibil cu HTML pentru aplicație. Configurarea etichetelor NFC depășește domeniul de aplicare al acestui articol, iar elementele NFC pot fi ignorate, dacă este necesar; accentul principal este utilizarea senzorilor mobili din Power Apps.
Adăugați antet și text HTML pentru ieșirile senzorului dispozitivului
Etichetă antet
Cu o aplicație deschisă pentru editare în Power Apps, adăugați o Etichetă text pe ecran prin glisarea și fixarea acesteia din panoul Inserare. Poziționați-o în colțul din stânga sus al ecranului și modificați următoarele proprietăți în panoul Proprietăți:
Proprietate | Valoare |
---|---|
Text | „Vânătoare de comori” |
Dimensiune font | 24 |
Grosime font | FontWeight.Semibold |
Aliniere text | Align.Center |
Lățime | Parent.Width |
Apoi, în panoul Avansat, modificați următoarele proprietăți:
Proprietate | Valoare |
---|---|
Culoare | RGBA(255, 255, 255, 1) |
Umplere | RGBA(56, 96, 178, 1) |
Aceasta va oferi un antet pentru ecran.
Text HTML pentru ieșirile senzorului dispozitivului
Apoi, adăugați un control Text HTML. Acesta va fi utilizat pentru a afișa toate ieșirile senzorului dispozitivului într-un singur loc. Folosiți acest cod în proprietatea HtmlText:
"<b><u>Current Location</u></b><br>
<br>
<b>Compass Heading: </b>" & Round(Compass.Heading, 2) & Char(0176) &
"<br>
<br>
<b>Lat: </b>" & Location.Latitude & "<br>
<b>Long: </b>" & Location.Longitude & "<br>
<b>Alt: </b>" & Round(Location.Altitude, 2) & " m"
Modificați următoarele proprietăți în panoul Avansat:
Proprietate | Valoare |
---|---|
Dimensiune | 21 |
BorderStyle | BorderStyle.Solid |
BorderThickness | 2 |
Lățime | 560 |
Înălțime | 576 |
PaddingTop | 16 |
PaddingRight | 16 |
PaddingBottom | 16 |
PaddingLeft | 16 |
Dacă examinați ceea ce a fost introdus în HtmlText, puteți observa că sunt utilizate două tipuri de senzori.
Primul este senzorul Busolă, care utilizează proprietatea Titlu pentru a furniza direcția busolei de pe dispozitiv.
Al doilea este senzorul Locație, care furnizează Latitudinea, Longitudinea și Altitudinea. Există două considerații despre locație. În primul rând, dacă utilizați doar Locație fără operatorul punct și proprietate, veți obține o înregistrare care conține câmpuri pentru Latitudine, Longitudine și Altitudine. În al doilea rând, proprietatea Altitude este în mod implicit în metri. Dacă doriți să o convertiți în picioare, înlocuiți următoarea formulă:
Utilizați metri:
Round(Location.Altitude, 2) & " m"
Utilizați picioare:
Round(Location.Altitude \* 3.2808, 2) & " ft"
Notă
Este posibil ca multe proprietăți ale senzorului să nu funcționeze corect dacă previzualizați aplicația din interiorul Power Apps Studio. Pentru a lucra cu proprietățile senzorului pentru testare, este preferabil să utilizați în schimb un telefon mobil.
Acum poziționați comanda Text HTML în apropierea jumătății inferioare a ecranului.
Buton Adăugare pentru scanarea NFC și controlul textului HTML
Buton de scanare NFC
Adăugați un buton în aplicație, poziționându-l sub comanda Text HTML pe care ați adăugat-o în ultimul pas și modificați următoarele proprietăți în panoul Avansat:
Proprietate | Valoare |
---|---|
OnSelect | ClearCollect(colNFCScan, ReadNFC()) |
Text | „Scanați eticheta NFC” |
Codul din proprietatea OnSelect utilizează funcția ReadNFC(), care activează cititorul NFC. Apoi stochează ceea ce este citit din eticheta NFC într-o colecție numită colNFCScan. Această colecție va avea patru câmpuri: RTD, Text, TNF și URI. Deși o explicație completă a acestor câmpuri depășește domeniul de aplicare al acestui articol, unele explicații pot fi utile. TNF este acronimul pentru Tastați formatul de nume și este folosit pentru a defini structura Definiție tip de înregistrare sau RTD, care la rândul său definește tipul de înregistrare conținut în câmpurile Text și/sau URI . URI este acronimul pentru Identificator uniform de resurse, care este în esență adresa unei resurse. Pentru etichetele NFC utilizate în acest exemplu, în plus față de câmpul Text care conține exemplul de text de la introducerea acestui subiect, acestea ar conține o valoare TNF de 1, o valoare RTD T și o valoare URI necompletată.
Adăugați comanda text HTML pentru a afișa informațiile de scanare NFC
Adăugați o a doua comandă Text HTML și utilizați următoarea formulă în proprietatea HTMLText:
"<b><u>Next Destination</u></b><br>
<br>" &
First(colNFCScan).Text
Modificați următoarele proprietăți în panoul Avansat:
Proprietate | Valoare |
---|---|
Dimensiune | 21 |
BorderStyle | BorderStyle.Solid |
BorderThickness | 2 |
Lățime | 560 |
Înălțime | 248 |
PaddingTop | 16 |
PaddingRight | 16 |
PaddingBottom | 16 |
PaddingLeft | 16 |
Fără date NFC prezente, controlul va afișa Următoarea destinație. Când este scanată o etichetă NFC, aceasta va afișa Următoarea destinație și apoi datele din câmpul Text din datele colectate din scanare.
Presupunând că datele pentru etichetele NFC au fost configurate așa cum este descris în introducere, utilizatorul va vedea valorile următoare ale direcției busolei, latitudinii și longitudinii pentru următoarea locație de vânătoare de comori după scanarea uneia dintre aceste etichete.
Testați aplicația
Salvați și publicați aplicația. Pe un dispozitiv mobil cu senzorii necesari, deschideți aplicația și observați valorile pentru poziția busolei, latitudine, longitudine și altitudine. Încercați să vă plimbați în timp ce vă rotiți în diferite direcții pentru a vedea modificările diverselor citiri ale senzorilor.
Apăsați pe butonul Scanați eticheta NFC pentru a observa controlul cititorului NFC. Dacă aveți o etichetă NFC care poate produce o valoare Text, scanați eticheta pentru a observa textul din aplicație. Dacă nu, selectați Anulare.
Adăugarea și configurarea celui de al doilea ecran
Adăugați un nou Ecran gol pentru porțiunea de măsurare a unghiului a aplicației.
După adăugarea ecranului, reveniți la primul ecran și adăugați o pictogramă Săgeata următoare din + Inserați > Pictograme > alegeți pictograma Săgeata următoare. Poziționați-o în colțul din dreapta sus al ecranului și modificați următoarele proprietăți în panoul Avansat:
Proprietate | Valoare |
---|---|
OnSelect | Navigate(Screen2) |
Culoare | RGBA(255, 255, 255, 1) |
Dacă ați redenumit al doilea ecran care tocmai a fost adăugat, înlocuiți numele respectiv pentru funcția Screen2 în Navigați.
Previzualizați aplicația, selectând pictograma care tocmai a fost adăugată pentru a verifica dacă navighează către ecranul gol care tocmai a fost adăugat.
Adăugați configurația pentru unghiurile X și Y
Adăugați o Etichetă text pe ecran prin glisarea și fixarea acesteia din panoul Inserare. Poziționați-o în colțul din stânga sus al ecranului și modificați următoarele proprietăți în panoul Proprietăți:
Proprietate | Valoare |
---|---|
Text | „Nivel 2 axe” |
Dimensiune font | 24 |
Grosime font | FontWeight.Semibold |
Aliniere text | Align.Center |
Lățime | Parent.Width |
Apoi, în panoul Avansat, modificați următoarele proprietăți:
Proprietate | Valoare |
---|---|
Culoare | RGBA(255, 255, 255, 1) |
Umplere | RGBA(56, 96, 178, 1) |
Aceasta va oferi un antet pentru al doilea ecran.
Apoi, adăugați o pictogramă Săgeată înapoi din + Inserare > Pictograme > selectați pictograma Săgeată înapoi. Poziționați-o în colțul din stânga sus al ecranului și modificați următoarele proprietăți în panoul Avansat:
Proprietate | Valoare |
---|---|
OnSelect | Navigate(Screen1) |
Culoare | RGBA(255, 255, 255, 1) |
Dacă ați redenumit primul ecran care tocmai a fost adăugat, înlocuiți numele respectiv pentru funcția Screen1 în Navigați.
La final, adăugați un control Text HTML. Acesta va fi utilizat pentru a afișa toate ieșirile senzorului dispozitivului într-un singur loc. Utilizați următoarea formulă în proprietatea Text HTML:
"<b><u>Angles:</u></b><br>
<br>
<table width='100%'>
<tr>
<td width='50%'><b>X: </b>" & Abs(Round(Acceleration.X * (90 / 9.81),
0)) & Char(0176) & "</td>
<td width='50%'><b>Y: </b>" & Abs(Round(Acceleration.Y * (90 / 9.81),
0)) & Char(0176) & "</td>
</tr>
</table>"
Modificați următoarele proprietăți în fila Avansat:
Proprietate | Valoare |
---|---|
Dimensiune | 21 |
BorderStyle | BorderStyle.Solid |
BorderThickness | 2 |
Lățime | 560 |
Înălțime | 168 |
PaddingTop | 16 |
PaddingRight | 16 |
PaddingBottom | 16 |
PaddingLeft | 16 |
Poziționați acest control lângă partea de sus a ecranului aplicației.
Dacă examinați ce a fost introdus în HtmlText, s-ar putea să observați că folosește senzorul Accelerare, cu proprietățile X și Y . Există, de asemenea, o proprietate Z pe care nu o folosim în acest scenariu.
Acest senzor detectează forțele gravitaționale de pe dispozitiv pe trei planuri. Folosind un telefon mobil ca exemplu, imaginați-vă o linie care se extinde din părțile laterale ale telefonului. Acesta ar fi planul X. Ridicarea părții drepte a telefonului va produce o valoare pozitivă, iar ridicarea părții stângi va produce o valoare negativă. O linie care se extinde din partea de sus și de jos a telefonului ar reprezenta planul Y. Ridicarea părții de sus a telefonului va produce o valoare pozitivă, iar ridicarea părții de jos va produce o valoare negativă. O linie care se extinde din ecran și din partea din spate a telefonului ar reprezenta planul Z. Dacă ecranul este orientat în sus, se va produce o valoare pozitivă, iar dacă este orientat în jos, va rezulta o valoare negativă.
Accelerometrul va măsura forțele care acționează asupra dispozitivului atât în mișcare, cum ar fi dacă ați scăpat dispozitivul, cât și în repaus, cum ar fi înclinarea dispozitivului pe una sau mai multe dintre axele descrise anterior. În repaus, valorile teoretice ar trebui să fie cuprinse între 0 și +/- 9,81 m/s2, cu 0 indicând că axa relativă este paralelă cu Pământul, fără gravitație care să acționeze asupra senzorului și o citire de 9,81 care indică faptul că axa relativă este perpendiculară cu Pământul și toată forța gravitațională acționează asupra senzorului.
Privind codul din comanda Text HTML pe care tocmai ați adăugat-o, observați următoarea secțiune:
Abs(Round(Acceleration.X * (90 / 9.81), 0))
În această formulă, din interior spre exterior, mai întâi Accelerare pe planul X este înmulțit cu (90/9,81). Aceasta folosește valoarea teoretică maximă în repaus pentru a converti citirea senzorului în grade. Valoarea de 90 este prezentă pentru că la valoarea teoretică maximă, dispozitivul ar fi perpendicular pe Pământ pe acel plan, dând o măsură de 90 de grade.
Această valoare în grade este apoi rotunjită la zero zecimale pentru a furniza o valoare de număr întreg. În cele din urmă, valoarea absolută a acelui număr rotunjit este calculată pentru a da o lectură pozitivă. Acest lucru nu este important dacă unghiul este măsurat dintr-o parte sau alta.
Notă
Valorile partajate mai sus sunt aproximative și nu reprezintă măsurători exacte.
Adăugați elementele vizuale de nivel
În acest pas, vom folosi unele controale în moduri neconvenționale pentru a atinge un obiectiv vizual.
Element vizual circular similar nivelei cu bulă de aer
Pentru început, adăugați un control Buton pe ecran, redenumindu-l btnCircleLevel și modificați următoarele proprietăți în panoul Avansat:
Proprietate | Valoare |
---|---|
Text | „” |
BorderColor | RGBA(56, 96, 178, 1) |
FocusedBorderThickness | 2 |
Umplere | Transparent |
DisabledFill | Self.Fill |
X | (Parent.Width - Self.Width) / 2 |
Y | (Parent.Height - Self.Height) / 2 |
Lățime | 400 |
Înălțime | Self.Width |
Rezultatul acestor modificări ar trebui să producă un buton circular în centrul ecranului care nu poate fi apăsat din cauza dezactivării.
Apoi, adăugați o formă Cerc, setați-i raza de bordură la 400 și modificați următoarele proprietăți în panoul Avansat:
Proprietate | Valoare |
---|---|
FocusedBorderThickness | 0 |
X | (Parent.Width - Self.Width) / 2 + (Round(Acceleration.X / 9.81 * 90, 0) / 90 * btnCircleLevel.Width / 2) |
Y | (Parent.Height - Self.Height) / 2 - (Round(Acceleration.Y / 9.81 * 90, 0) / 90 * btnCircleLevel.Width / 2) |
Lățime | 42 |
Înălțime | Self.Width |
Lățime | 400 |
Înălțime | Self.Width |
Proprietățile X și Y permit formei de Cerc să se deplaseze în centrul ecranului aplicației, se modifică relativ în valorile senzorului Accelerare, dar sunt conținute în zona circulară a btnCircleLevel.
Elemente vizuale similare nivelei cu bulă de aer axa X și Y
Adăugați un control Glisor în aplicație, redenumiți-l sldXValue și modificați următoarele proprietăți în panoul Avansat:
Proprietate | Valoare |
---|---|
Min | -90 |
Max | 90 |
Valoare implicită | Round(Acceleration.X * (90 / 9.81), 0) |
ValueFill | Self.RailFill |
X | (Parent.Width - Self.Width) / 2 |
Y | btnCircleLevel.Y + btnCircleLevel.Height + 30 |
Lățime | btnCircleLevel.Width |
Înălțime | 70 |
Acest control Glisor va afișa unghiul similar cu modul în care o face o nivelă cu bulă de aer: Mânerul se va deplasa spre partea ridicată a dispozitivului, similar cu bula de aer într-o nivelă cu bulă de aer.
Apoi, copiați btnCircleLevel selectându-l, apăsând Ctrl + C și apoi Ctrl + V. Redenumiți controlul btnXValueOverlay și modificați următoarele proprietăți în panoul Avansat:
Proprietate | Valoare |
---|---|
X | sldXValue.X - sldXValue.HandleSize / 2 |
Y | sldXValue.Y |
Lățime | sldXValue.Width + sldXValue.HandleSize |
Înălțime | sldXValue.Height |
Aceste modificări îl vor poziționa peste controlul sldXValue, împiedicând utilizatorul să modifice valoarea și să ofere o bordură vizuală.
Copiați și lipiți sldXValue, folosind aceeași metodă folosită pentru copierea btnCircleLevel. Redenumiți-l în sldYValue și modificați următoarele proprietăți:
Proprietate | Valoare |
---|---|
Aspect | Layout.Vertical |
X | btnCircleLevel.X - Self.Width - 30 |
Y | (Parent.Height - Self.Height) / 2 |
Lățime | sldXValue.Height |
Înălțime | sldXValue.Width |
Copiați și lipiți btnXValueOverlay, redenumindu-l în btnYValueOverlay, modificând următoarele proprietăți:
Proprietate | Valoare |
---|---|
X | sldYValue.X |
Y | sldYValue.Y - sldYValue.HandleSize / 2 |
Lățime | sldYValue.Width |
Înălțime | sldYValue.Height + sldYValue.HandleSize |
Aceasta completează elementele vizuale similare nivelei cu bulă de aer.
Testați aplicația de nivel
Salvați și publicați aplicația. Pe un dispozitiv mobil dotat cu senzorii necesari, deschideți aplicația și navigați la ecranul cu elementele vizuale ale nivelei cu bule de aer. Înclinați dispozitivul de la stânga la dreapta, apoi în sus și în jos și, în cele din urmă, în toate direcțiile, observând modificările proprietăților unghiului, precum și modificările elementelor vizuale. Găsiți o suprafață unghiulară pentru a plasa dispozitivul și notați din nou unghiurile și elementele vizuale.