Programos, naudojančios mobiliuosius daviklius, kūrimas

Naudojant jutiklius į programas galima įtraukti gausesnių funkcijų naudojantis telefono galimybėmis. Šiame straipsnyje sužinosite, kaip naudoti jutiklius savo mobiliajame įrenginyje naudojant „Power Apps”.

Kad tai atliktumėte, padarysite programos pavyzdį per du ekranus. Pirmajame ekrane bus rodoma dabartinė kompaso antraštė, platuma, ilguma, aukštuma ir tai, ar galimas NFC žymų nuskaitymas, siekiant gauti tesktinę informaciją. Antrame ekrane bus demonstruoja, kaip rodyti akcelerometro duomenis, kad būtų galima nustatyti įrenginio kampą X ir Y ašimis.

Norėdami nustatyti pirmojo ekrano scenarijų, įsivaizduokite, kad kuriate programą NFC pagrįstai maitėdų medžioklei. Kiekvienas dalyvis naudos programą, kad nuskaitytų NFC žymę, kuri jam pateiks kompaso antraštę, platumą ir ilgumą, nurodančias būsimą jų tikslo vietą. Toje vietoje dalyvis nuskaitys kitą žymę ir pakartos procesą, kol pasieks medžioklės pabaigą.

Antrame ekrane turi būti naudojamas įrankis, skirtas apytiksliam kampų matavimui. Antrajame ekrane dalyvis galės pastatyti arba laikyti įrenginį paviršiuje ir gauti kampus į įrenginio X ir Y ašis, taip pat matyti vaizdinę šių kampų reprezentaciją.

Peržiūrėkite šį vaizdo įrašą ir sužinokite, kaip sukurti programą, kurioje naudojami mobilieji jutikliai:

Būtinosios sąlygos

  • Šiai programai galima naudoti bet kurio lygio „Power Apps” licenciją, nes nenaudojami jokie duomenų ryšiai.

  • Mobilusis įrenginys, pavyzdžiui, mobilusis telefonas arba planšetinis kompiuteris su GPS ir spartintuvo funkcijomis, bus reikalingas, nes dauguma kompiuterių gali neturėti reikiamų jutiklių.

  • NFC turintis įrenginis yra reikalingas NFC nuskaitymo funkcijai. Taip pat laikoma, kad skenuotinos NFC žymės buvo iš anksto sukonfigūruotos taip, kad būtų sukuriamos tekstinės reikšmės toliau pateiktu pavyzdiniu formatu:

    "<b>Heading: </b> 80 degrees <br>
    <b>Latitude: </b> 44.4604788 <br>
    <b>Longitude: </b> -110.82813759"
    

    Bus rodomas tekstas HTML draugišku formatu programoje. NFC žymių sąranka nėra plačiai paaiškinta šiame straipsnyje, o NFC elementai gali būti ignoruojami, jei reikia; pagrindinis dėmesys skiriamas mobiliųjų jutiklių naudojimui„ Power Apps”.

Įtraukite įrenginio jutiklio išvesčiųa antraštę ir HTML tekstą

Antraštės žyma

Su redagavimui atidaryta programa „Power Apps” įtraukite Teksto žymą į ekraną nuvilkdami ir numesdami ją iš Įterpimo srities. Nustatykite jį viršutiniame kairiajame ekrano kampe ir modifikuokite šias ypatybes srityje Ypatybės:

Ypatybė Reikšmė
Tekstinė žinutė „Scavenger Hunt”
Šrifto dydis 24
Šrifto storis „FontWeight.Semibold”
Teksto lygiuotė Lygiavimo.centras
Plotis „Parent.Width”

Tada srityje Išplėstiniai modifikuokite šias ypatybes:

Ypatybė Reikšmė
Spalva RGBA(255, 255, 255, 1)
Užpildyti RGBA(56, 96, 178, 1)

Tai suteiks ekrano antraštę.

Įrenginio jutiklio išvesčių HTML tekstas

Tada įtraukite HTML text valdiklį. Tai bus naudojama, kad visos įrenginio jutiklio išvestys būtų rodomos vienoje vietoje. Naudokite šį kodą HtmlText ypatybėje:

"<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"

Pakeiskite šias ypatybes Išplėstinėje srityje:

Ypatybė Reikšmė
Dydis 21
„BorderStyle” „BorderStyle.Solid”
„BorderThickness” 2
Plotis 560
Aukštis 576
„PaddingTop” 16
„PaddingRight” 16
„PaddingBottom” 16
„PaddingLeft” 16

Jei išnagrinėsite, kas buvo įdėta į HtmlText, galite pastebėti, kad naudojami du jutiklių tipai.

Pirmasis yra Kompaso jutiklis, naudojantis Antraštės ypatybę, kad pateiktų kompaso antraštę iš įrenginio.

Antrasis yra Vietos jutiklis, pateikiantis Platumą, Ilgumą ir Aukštumą. Yra du vietos aspektai. Pirmiausia, jei naudojate tik vietą be taškų operatoriaus ir ypatybės, gausite įrašą, kuriame bus platumos, ilgumos ir aukštumos laukai. Antra, pagal numatytuosius nustatymus aukštumos ypatybė pateikiama metrais. Jei norite konvertuoti ją į pėdas ir colius, pakeiskite šią formulę:

Jei naudojate metrinę matavimo sistemą:

Round(Location.Altitude, 2) & " m"

Jei naudojate colių matavimo sistemą:

Round(Location.Altitude \* 3.2808, 2) & " ft"

Pastaba

Dauguma jutiklio ypatybių gali veikti netinkamai, jei peržiūrite programą „Power Apps Studio” viduje. Norėdami dirbti su jutiklio ypatybėmis testavimo tikslais, vietoj to naudokite mobilųjį telefoną.

Dabar nustatykite HTML tekstas valdiklio padėtį šalia apatinės ekrano pusės.

Įtraukite mygtuką NFC nuskaitymui ir HTML teskto valdikliui

NFC nuskaitymo mygtukas

Įtraukite mygtuką į programą ir nustatykite jo padėtį po Html tekstas valdikliu, kurį įtraukėte paskutiniu veiksmu, ir pakeiskite šias ypatybes Išplėstinėje srityje:

Ypatybė Reikšmė
„OnSelect“ (pasirinkti) „ClearCollect(colNFCScan, ReadNFC())”
Tekstinė žinutė „Nuskaityti NFC žymę”

Ypatybės „OnSelect” kodas naudoja „ReadNFC”() funkciją, kuri suaktyvina NFC skaitytuvą. Tada joje saugoma tai, kas perskaityta iš NFC žymos rinkinyje, vadinamame „colNFCScan”. Šiame rinkinyje bus keturi laukai: „RTD”, Tekstas, „TNF” ir „URI”. Nors platus šių laukų išaiškinimas nėra šio staripsnio tikslas, trumpas paaiškinimas gali būti naudingas. „TNF” reiškia Tipo pavadinimo formatą ir yra naudojamas apibrėžti Įrašo tipo apibrėžimo arba „RTD” struktūrai, kuri apibūdina įrašo, esančio Teksto ir (ar) „URI” laukuose, tipą. „URI” reiškia Vieningąjį identifikatorių, kuris iš esmės yra ištekliaus adresas. Šiame pavyzdyje naudojamos žymės turi ne tik Teksto lauką, kuriame yra šios temos įvade pateiktas tekstas, bet ir „TNF” vertę, kuri lygi 1, „RTD” reikšmę „T” ir tuščią „URI” reikšmę.

Įtraukite HTML teksto valdiklį, kad būtų rodoma NFC nuskaitymo informacija

Įtraukite antrą HTML teksto valdiklį ir naudokite šią formulę HTMLText ypatybėje:

"<b><u>Next Destination</u></b><br>
<br>" &
First(colNFCScan).Text

Pakeiskite šias ypatybes Išplėstinėje srityje:

Ypatybė Reikšmė
Dydis 21
„BorderStyle” „BorderStyle.Solid”
„BorderThickness” 2
Plotis 560
Aukštis 248
„PaddingTop” 16
„PaddingRight” 16
„PaddingBottom” 16
„PaddingLeft” 16

Be jokių NFC duomenų, valdiklis rodys Kita paskirties vieta. Nuskenavus NFC žymę, bus rodoma Kita paskirties vieta, o tada duomenys iš Teksto lauko – duomenyse, surinktuose iš nuskaitymo.

Jeigu NFC žymių duomenys buvo sukonfigūruoti taip, kaip aprašyta įvade, nuskenavęs vieną iš šių žymių, vartotojas pamatys kitos medžioklės vietos kompaso antraštės, platumos ir ilgumos reikšmes.

Kompaso antraštės platumos ir ilgumos reikšmės

Patikrinti programą

Įrašykite ir publikuokite programą. Mobiliajame įrenginyje su reikiamais jutikliais atidarykite programą ir stebėkite kompaso antraštės, platumos, ilgumos ir aukštumos reikšmes. Išmėginkite pasivaikščiojimą pasisukdami įvairiomis kryptimis, kad pamatytumėte įvairių jutiklių rodmenų pakeitimus.

Išmėginkite pasivaikščiojimą pasisukdami įvairiomis kryptimis

Paspauskite Nuskaityti NFC žymę, kad stebėtumėte NFC skaitytuvo valdiklį. Jei turite NFC žymę, kuri gali sukurti Teksto reikšmę, nuskenuokite žymę ir stebėkite tekstą programoje. Jei ne, pažymėkite Atšaukti.

Nuskaityti NFC žymę

Antro ekrano įtraukimas ir konfigūravimas

Įtraukite naują Tuščią ekraną programos kampų matavimo daliai.

Įtraukę ekraną, grįžkite į pirmąjį ekraną ir įtraukite Rodyklės Toliau piktogramą iš + Įterpti > Piktogramos > pasirinkite Rodyklės toliau piktogramą. Nustatykite ją viršutiniame dešiniajame ekrano kampe ir pakeiskite šias ypatybes Išplėstinėje srityje:

Ypatybė Reikšmė
„OnSelect“ (pasirinkti) Pereiti (2 ekranas)
Spalva RGBA(255, 255, 255, 1)

Jei pervardijote antrą ką tik pridėtą ekraną, pakeiskite 2 ekrano pavadinimą Naršymo funkcijoje.

Peržiūrėkite programą pasirinkdami ką tik pridėtą piktogramą ir patikrinkite, ar ji pereina į tuščią ką tik pridėtą ekraną.

Įtraukite X ir Y kampų konfigūraciją

Įtraukite Teksto žymą į ekraną nuvilkdami ir numesdami ją iš Įterpimo srities. Nustatykite ją viršutiniame kairiajame ekrano kampe ir modifikuokite šias ypatybes srityje Ypatybės:

Ypatybė Reikšmė
Tekstinė žinutė „2 ašies lygis”
Šrifto dydis 24
Šrifto storis „FontWeight.Semibold”
Teksto lygiuotė Lygiavimo.centras
Plotis „Parent.Width”

Tada srityje Išplėstiniai modifikuokite šias ypatybes:

Ypatybė Reikšmė
Spalva RGBA(255, 255, 255, 1)
Užpildyti RGBA(56, 96, 178, 1)

Tai suteiks antro ekrano antraštę.

Tada įtraukite Rodyklės atgal piktogramą iš + Įterpti > Piktogramos > pasirinkite Rodyklės atgal piktogramą. Nustatykite ją viršutiniame kairiajame ekrano kampe ir pakeiskite šias ypatybes Išplėstinėje srityje:

Ypatybė Reikšmė
„OnSelect“ (pasirinkti) Pereiti (1 ekranas)
Spalva RGBA(255, 255, 255, 1)

Jei pervardijote pirmą ką tik pridėtą ekraną, pakeiskite 1 ekrano pavadinimą Naršymo funkcijoje.

Galiausiai įtraukite HTML text valdiklį. Tai bus naudojama, kad visos įrenginio jutiklio išvestys būtų rodomos vienoje vietoje. HTML teksto ypatybėje naudokite šią formulę:

"<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>"

Pakeiskite šias ypatybes Išplėstiniame skirtuke:

Ypatybė Reikšmė
Dydis 21
„BorderStyle” „BorderStyle.Solid”
„BorderThickness” 2
Plotis 560
Aukštis 168
„PaddingTop” 16
„PaddingRight” 16
„PaddingBottom” 16
„PaddingLeft” 16

Šio valdiklio vietą nustatykite programos ekrano viršuje.

Jeigu panagrinėsite, kas buvo įrašyta į „HtmlText”, galbūt pastebėsite, kad jis naudoja Spartos jutiklį su „X” ir „Y” ypatybėmis. Taip pat yra „Z” ypatybė, kurios šiame scenarijuje nenaudojame.

Šis jutiklis aptinka gravitacines jėgas įrenginyje per tris plokštumas. Paimant mobilųjį telefoną kaip pavyzdį, įsivaizduokite liniją, išeinančią už telefono kraštų. Tai būtų „X” ašis. Pakėlus dešinę telefono pusę pus pateikta teigiama reikšmė, o pakėlus kairiąją pusę – neigiama. Linija, išeinanti už telefono viršaus ir apačios, atitinka „Y” ašį. Pakėlus telefono viršų pus pateikta teigiama reikšmė, o pakėlus apačią – neigiama. Galiausiai, linija, išeinanti iš ekrano ir telefono apačios, atitinka „Z” ašį. Jei telefono ekranas bus viršuje, bus pateikta teigiama reikšmė, o jei jis bus apačioje – neigiama.

Akcelerometras matuos jėgas, veikiančias tiek įrenginio judėjimą, pavyzdžiui, jei numesite įrenginį, tiek poilsį, pavyzdžiui sukant įrenginį viena ar daugiau ašių, aprašytų anksčiau. Poilsio teorinės reikšmės turi būti tarp 0 ir +/- 9.81 m/s2, kai 0 reiškia, jog sąlyginė ašis yra lygiagreti Žemei, kai jutiklio neveikia gravitacinė jėga, o 9.81 nuskaitymas reiškia, kad sąlyginė ašis yra lygiagreti Žemei ir jutiklį veikia pilna gravitacinė jėga.

Žiūrėdami į ką tik pridėto HTML tekstas valdiklio kodą, pastebėsite šį skyrių:

Abs(Round(Acceleration.X * (90 / 9.81), 0))

Šioje formulėje pirmiausia Sparta ašyje „X” yra padauginama iš (90 / 9.81). Tam, kad jutiklio rodmenys būtų konvertuoti į laipsnius, naudojama didžiausia teorinė vertė. Pateikiama reikšmė, lygi 90, nes esant didžiausiai teorinei reikšmei poilsyje, įrenginys būtų statmenas Žemei toje ašyje, o tai reiškia 90 laipsnių matavimą.

Tada ši reikšmė laipsniais suapvalinama iki nulinės dešimtainės skilties, kad būtų pateikiama sveikojo skaičiaus laipsnių reikšmė. Galiausiai, absoliuti to suapvalinto skaičiaus reikšmė apskaičiuojama norint pateikti teigiamą skaitymo rezultatą. Todėl nesvarbu, iš kurios pusės matuojamas kampas.

Pastaba

Aukščiau pateiktos reikšmės yra apytikslės ir jos neatspindi tikslių matavimų.

Įtraukite lygio vaizdinius elementus

Atlikdami šį veiksmą kai kuriuos valdiklius naudosime nestandartiniais būdais, kad pasiektumėme vaizdinį tikslą.

Žiedinis į burbulą panašus vaizdinis elementas

Iš pradžių į ekraną įtraukite Mygtuko valdiklį, pervadinkite jį į „btnCircleLevel” bei pakeiskite šias ypatybes Išplėstinėje srityje:

Ypatybė Reikšmė
Tekstinė žinutė ""
„BorderColor” RGBA(56, 96, 178, 1)
„FocusedBorderThickness” 2
Užpildyti Permatomas
„DisabledFill” Pats.užsipildantis
X („Parent.Width” - „Self.Width”) / 2
Y („Parent.Height” - „Self.Height”) / 2
Plotis 400
Aukštis „Self.Width”

Dėl šių pakeitimų ekrano centre turėtų atsirasti apvalus mygtukas, kurio negalima paspausti dėl to, kad jis nėra suaktyvintas.

Tada įtraukite apvalią formą, nustatykite jos kraštinės kailį į 400 ir išplėstinėje srityje pakeiskite šias ypatybes:

Ypatybė Reikšmė
„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)
Plotis 42
Aukštis „Self.Width”
Plotis 400
Aukštis „Self.Width”

Ypatybės „X” ir „Y” leidžia Žiedinei formai judėti programos ekrano centre, sąlyginai pakeisti Spartintuvo jutiklio reikšmes, tačiau jos turi išlikti žiedinėje „btnCircleLevel” srityje.

Į X ir Y ašį panašios burbulo tipo vaizdinės priemonės

Įtraukite Slankiklio valdiklį į programą, pervadinkite jį į „sldXValue” bei pakeiskite šias ypatybes Išplėstinėje srityje:

Ypatybė Reikšmė
Min. „-90”
Didžiausia 90
Numatytoji reikšmė Suapvalinti („Acceleration.X” * (90 / 9.81), 0)
„ValueFill” „Self.RailFill”
X („Parent.Width” - „Self.Width”) / 2
Y „btnCircleLevel.Y” + „btnCircleLevel.Height” + 30
Plotis „btnCircleLevel.Width”
Aukštis 70

Šis Slankiklio valdiklis rodys kampą, panašų į tai, kaip veikia burbulo lygis: Rankena pasislinks į pakeltą įrenginio pusę, panašiai kaip oro burbulas burbulo lygiu.

Tada nukopijuokite „btnCircleLevel” pasirinkdami jį ir paspaudę „Ctrl + C” bei „Ctrl + V”. Pervadinkite valdiklį į „btnXValueOverlay” ir pakeiskite šias ypatybes Išplėstinėje srityje:

Ypatybė Reikšmė
X „sldXValue.X” - „sldXValue.HandleSize” / 2
Y „sldXValue.Y”
Plotis „sldXValue.Width” + „sldXValue.HandleSize”
Aukštis „sldXValue.Height”

Šie pakeitimai nustatys jį virš „sldXValue” valdiklio, taip neleidžiant vartotojui keisti jo vertės ir suteikiant vaizdinę sieną.

Nukopijuokite ir įklijuokite „sldXValue” naudodami tą patį metodą, kai kopijavote „btnCircleLevel”. Pervardykite ją į „sldYValue” ir pakeiskite šias ypatybes:

Ypatybė Reikšmė
Išdėstymas „Išdėstymas.Vertikaliai”
X „btnCircleLevel.X” - „Self.Width ”- 30
Y („Parent.Height” - „Self.Height”) / 2
Plotis „sldXValue.Height”
Aukštis „sldXValue.Width”

Kopijuokite ir įklijuokite „btnXValueOverlay”, pervardinę ją į „btnYValueOverlay”, keisdami šias ypatybes:

Ypatybė Reikšmė
X „sldYValue.X”
Y „sldYValue.Y” - „sldYValue.HandleSize” / 2
Plotis „sldYValue.Width”
Aukštis „sldYValue.Height” + „sldYValue.HandleSize”

Taip užbaigiate į burbulą panašias lygio vaizdines priemones.

Programos lygio tikrinimas

Patikrinti programą

Įrašykite ir publikuokite programą. Mobiliajame įrenginyje su reikiamais jutikliais atidarykite programą ir pereikite į ekraną naudodami burbulo lygio vaizdinius elementus. Judinkite šį įrenginį iš kairės į dešinę, tada aukštyn ir žemyn, o galiausiai – visomis kryptimis, paisant kampų ypatybių pokyčių, taip pat ir vaizdinių pokyčių. Suraskite kampuotą paviršių įrenginiui pastatyti ir dar sykį įsidėmėkite kampus ir vaizdinius elementus.

Taip pat žr.