Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Met sensoren kunt u uitgebreidere functionaliteit aan uw apps toevoegen door gebruik te maken van de mogelijkheden van uw telefoon. In dit artikel leert u meer over het gebruik van sensoren op uw mobiele apparaat in Power Apps.
Hiervoor maakt u een voorbeeld-app met twee schermen. Het eerste scherm toont de huidige kompaskop, breedtegraad, lengtegraad, hoogte en kan NFC-tags scannen om tekstinformatie te verkrijgen. In het tweede scherm ziet u hoe u accelerometergegevens weergeeft om de hoek van het apparaat langs de X- en Y-assen te produceren.
Als u het scenario achter het eerste scherm wilt instellen, stelt u zich voor dat u een app bouwt voor een NFC-gebaseerde speurtocht. Elke deelnemer gebruikt de app om een NFC-tag te scannen die hen een kompasrichting, breedtegraad en lengtegraad aangeeft naar hun volgende bestemming. Op die bestemming scant de deelnemer vervolgens nog een tag en herhaalt het proces totdat deze het einde van de jacht bereikt.
Voor het tweede scherm moet u zich voorstellen dat u een hulpmiddel nodig hebt om ruwweg hoeken te meten. Wanneer de deelnemer zich op het tweede scherm bevindt, kan het apparaat op een oppervlak plaatsen of vasthouden en de hoeken op de X- en Y-as van het apparaat krijgen en een visuele weergave van deze hoeken bekijken.
Bekijk deze video om te leren hoe u een app bouwt die gebruikmaakt van mobiele sensoren:
Vereiste voorwaarden
Elk power apps-licentieniveau kan worden gebruikt voor deze app, omdat er geen gegevensverbindingen worden gebruikt.
Een mobiel apparaat, zoals een mobiele telefoon of tablet met GPS en versnellingsmeters, is nodig, omdat de meeste pc's mogelijk niet over de benodigde sensoren beschikken.
Er is een NFC-geschikt apparaat nodig voor de NFC-scanfunctie. Er wordt ook van uitgegaan dat de NFC-tags die moeten worden gescand, vooraf zijn geconfigureerd voor het produceren van tekstwaarden in de volgende voorbeeldindeling:
"<b>Heading: </b> 80 degrees <br> <b>Latitude: </b> 44.4604788 <br> <b>Longitude: </b> -110.82813759"Hiermee wordt de tekst in een HTML-vriendelijke indeling voor de app geleverd. De installatie van de NFC-tags valt buiten het bereik van dit artikel en de NFC-elementen kunnen indien nodig worden genegeerd; de primaire focus is het gebruik van de mobiele sensoren in Power Apps.
Koptekst en HTML-tekst toevoegen voor de apparaatsensoruitvoer
Koptekst
Wanneer een app is geopend voor bewerken in Power Apps, voegt u een tekstlabel toe aan het scherm door het te slepen en neer te halen uit het deelvenster Invoegen . Plaats deze in de linkerbovenhoek van het scherm en wijzig de volgende eigenschappen in het deelvenster Eigenschappen:
| Vastgoed | Waarde |
|---|---|
| Tekst | "Scavenger Hunt" |
| Tekengrootte | 24 |
| Font weight | FontWeight.Semibold |
| Text alignment | Align.Center |
| Width | Parent.Width |
Wijzig vervolgens in het deelvenster Geavanceerd de volgende eigenschappen:
| Vastgoed | Waarde |
|---|---|
| Kleur | RGBA(255, 255, 255, 1) |
| Opvullen | RGBA(56, 96, 178, 1) |
Hiermee wordt een koptekst voor het scherm weergegeven.
HTML-tekst voor de apparaatsensoruitvoer
Voeg vervolgens een controle voor HTML-tekst toe. Dit wordt gebruikt om alle apparaatsensoruitvoer op één plaats weer te geven. Gebruik deze code in de eigenschap 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"
Wijzig de volgende eigenschappen in het deelvenster Geavanceerd:
| Vastgoed | Waarde |
|---|---|
| Grootte | 21 |
| BorderStyle | BorderStyle.Solid |
| BorderThickness | 2 |
| Width | 560 |
| Hoogte | 576 |
| PaddingTop | 16 |
| PaddingRight | 16 |
| PaddingBottom | 16 |
| PaddingLeft | 16 |
Als u onderzoekt wat er in htmlText is geplaatst, ziet u mogelijk dat er twee sensortypen worden gebruikt.
De eerste is de sensor Kompas, die gebruikmaakt van eigenschap Kop om de kompasrichting van het apparaat te geven.
Ten tweede is de locatiesensor , die de breedtegraad, lengtegraad en hoogte levert. Er zijn twee overwegingen met betrekking tot Locatie. Eerst, als u alleen Locatie gebruikt zonder de puntoperator en eigenschap, krijgt u een record met velden voor Breedtegraad, Lengtegraad en Hoogte. Ten tweede is de eigenschap Altitude standaard in meters. Als u dit wilt converteren naar feet, vervangt u de volgende formule:
Meters gebruiken:
Round(Location.Altitude, 2) & " m"
Gebruik voeten:
Round(Location.Altitude \* 3.2808, 2) & " ft"
Opmerking
Veel sensoreigenschappen werken mogelijk niet correct als u een voorbeeld van de app in Power Apps Studio bekijkt. Als u wilt werken met sensoreigenschappen voor testen, gebruikt u liever een mobiele telefoon.
Plaats nu het BEsturingselement HTML-tekst in de buurt van de onderste helft van het scherm.
Knop toevoegen voor NFC-scan en HTML-tekstcontrole
NFC-scanknop
Voeg een knop toe aan de app, plaats deze onder het besturingselement HTML-tekst dat u in de laatste stap hebt toegevoegd en wijzig de volgende eigenschappen in het deelvenster Geavanceerd:
| Vastgoed | Waarde |
|---|---|
| OnSelect | ClearCollect(colNFCScan, ReadNFC()) |
| Tekst | "NFC-tag scannen" |
De code in de eigenschap OnSelect maakt gebruik van de functie ReadNFC(), waarmee de NFC-lezer wordt geactiveerd. Vervolgens wordt opgeslagen wat wordt gelezen uit de NFC-tag in een verzameling met de naam colNFCScan. Deze verzameling heeft vier velden: RTD, Tekst, TNF en URI. Hoewel een volledige uitleg van deze velden buiten het bereik van dit artikel valt, kan enige uitleg nuttig zijn. TNF staat voor Type Name Format en wordt gebruikt voor het definiëren van de structuur van de recordtypedefinitie of RTD, die op zijn beurt het type record definieert dat is opgenomen in de tekst - en/of URI-velden . URI staat voor Uniform Resource Identifier, wat in feite het adres van een resource is. Voor de NFC-tags die in dit voorbeeld worden gebruikt, naast het veld Tekst met de voorbeeldtekst uit de inleiding van dit onderwerp, bevatten ze een TNF-waarde van 1, een RTD-waarde van T en een lege URI-waarde .
HTML-tekstbesturing toevoegen om de NFC-scangegevens weer te geven
Voeg een tweede HTML-tekstbesturingselement toe en gebruik de volgende formule in de eigenschap HTMLText :
"<b><u>Next Destination</u></b><br>
<br>" &
First(colNFCScan).Text
Wijzig de volgende eigenschappen in het deelvenster Geavanceerd:
| Vastgoed | Waarde |
|---|---|
| Grootte | 21 |
| BorderStyle | BorderStyle.Solid |
| BorderDikte | 2 |
| Width | 560 |
| Hoogte | 248 |
| PaddingTop | 16 |
| PaddingRight | 16 |
| PaddingBottom | 16 |
| PaddingLeft | 16 |
Zonder NFC-gegevens wordt Volgende bestemming op de controle weergegeven. Wanneer een NFC-tag wordt gescand, worden volgende bestemming en vervolgens de gegevens uit het veld Tekst weergegeven in de gegevens die zijn verzameld bij de scan.
Ervan uitgaande dat de gegevens voor de NFC-tags zijn geconfigureerd zoals beschreven in de inleiding, ziet de gebruiker de volgende kompaskop, breedtegraad en lengtegraad voor de volgende zoeklocatie na het scannen van een van deze tags.
De app testen
Sla de app op en publiceer deze. Open de app op een mobiel apparaat met de benodigde sensoren en bekijk de kompaskop, breedtegraad, lengtegraad en hoogtewaarden. Probeer rond te lopen terwijl u verschillende richtingen indraait om wijzigingen in de verschillende sensormetingen te zien.
Druk op de knop NFC-tag scannen om het NFC-lezer-besturingselement te bekijken. Als u een NFC-tag hebt die een tekstwaarde kan produceren, scant u de tag om de tekst in de app te bekijken. Als dat niet het is, selecteert u Annuleren.
Tweede scherm toevoegen en configureren
Voeg een nieuw leeg scherm toe voor het hoekmetingsgedeelte van de app.
Nadat u het scherm hebt toegevoegd, gaat u terug naar het eerste scherm en voegt u een pictogram Volgende pijl toe van +Pictogrammen>invoegen>, kiest u het pictogram Volgende pijl. Plaats deze in de rechterbovenhoek van het scherm en wijzig de volgende eigenschappen in het deelvenster Geavanceerd:
| Vastgoed | Waarde |
|---|---|
| OnSelect | Navigate(Scherm2) |
| Kleur | RGBA(255, 255, 255, 1) |
Als u de naam van het tweede scherm hebt gewijzigd dat zojuist is toegevoegd, vervangt u die naam door Screen2 in de functie Navigate .
Bekijk een voorbeeld van de app en selecteer het pictogram dat zojuist is toegevoegd om te controleren of u naar het lege scherm navigeert dat zojuist is toegevoegd.
Configuratie voor X- en Y-hoeken toevoegen
Voeg een tekstlabel toe aan het scherm door het te slepen en neer te halen uit het deelvenster Invoegen . Plaats deze in de linkerbovenhoek van het scherm en wijzig de volgende eigenschappen in het deelvenster Eigenschappen :
| Vastgoed | Waarde |
|---|---|
| Tekst | "2 Axis Level" |
| Tekengrootte | 24 |
| Font weight | FontWeight.Semibold |
| Text alignment | Align.Center |
| Width | Parent.Width |
Wijzig vervolgens in het deelvenster Geavanceerd de volgende eigenschappen:
| Vastgoed | Waarde |
|---|---|
| Kleur | RGBA(255, 255, 255, 1) |
| Opvullen | RGBA(56, 96, 178, 1) |
Hiermee wordt een koptekst voor het tweede scherm weergegeven.
Voeg vervolgens een pictogram Pijl-terug toe uit + Invoegen>Pictogrammen>, kies het pictogram Pijl-terug. Plaats deze in de linkerbovenhoek van het scherm en wijzig de volgende eigenschappen in het deelvenster Geavanceerd :
| Vastgoed | Waarde |
|---|---|
| OnSelect | Navigate(Screen1) |
| Kleur | RGBA(255, 255, 255, 1) |
Als u de naam van het eerste scherm hebt gewijzigd dat zojuist is toegevoegd, vervangt u die naam voor Screen1 in de functie Navigate .
Voeg ten slotte een BEsturingselement voor HTML-tekst toe. Dit wordt gebruikt om alle apparaatsensoruitvoer op één plaats weer te geven. Gebruik de volgende formule in de eigenschap HTML-tekst:
"<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>"
Wijzig de volgende eigenschappen op het tabblad Geavanceerd:
| Vastgoed | Waarde |
|---|---|
| Grootte | 21 |
| BorderStyle | BorderStyle.Solid |
| BorderThickness | 2 |
| Width | 560 |
| Hoogte | 168 |
| PaddingTop | 16 |
| PaddingRight | 16 |
| PaddingBottom | 16 |
| PaddingLeft | 16 |
Plaats dit besturingselement boven aan het app-scherm.
Als u controleert wat er in de HtmlText is geplaatst, merkt u mogelijk dat de sensor Versnelling wordt gebruikt, met X - en Y-eigenschappen . Er is ook een Z-eigenschap die we in dit scenario niet gebruiken.
Deze sensor detecteert zwaartekrachtskrachten op het apparaat over drie vliegtuigen. Stel je voor dat je een mobiele telefoon als voorbeeld gebruikt, en dat er een lijn uit de zijkanten van de telefoon loopt. Dit zou het X-vliegtuig zijn. Het opheffen van de rechterkant van de telefoon levert een positieve waarde op en het opheffen van de linkerkant zal een negatieve waarde opleveren. Een lijn die zich uit de boven- en onderkant van de telefoon uitbreidt, vertegenwoordigt het Y-vlak . Het tillen van de bovenkant van de telefoon zal een positieve waarde produceren en het opheffen van de onderkant zal een negatieve waarde opleveren. Ten slotte zou een lijn uit het scherm en de achterkant van de telefoon het Z-vliegtuig vertegenwoordigen. Het scherm met de voorkant naar boven leidt tot een positieve waarde, terwijl het naar beneden gericht een negatieve waarde geeft.
De versnellingsmeter meet krachten die op het apparaat werken, zowel in beweging, zoals wanneer u het apparaat laat vallen, als in stilstand, zoals bij het kantelen van het apparaat op een of meer van de eerder beschreven assen. In rust moeten de theoretische waarden tussen 0 en +/- 9,81 m/s2 liggen, waarbij 0 aangeeft dat de relatieve as parallel is aan de aarde, zonder zwaartekracht die op de sensor werkt en een meting van 9,81 die aangeeft dat de relatieve as loodrecht is op de aarde en de volledige zwaartekracht op de sensor werkt.
Bekijk de code in het HTML-tekstbeheer dat u zojuist hebt toegevoegd. Bekijk de volgende sectie:
Abs(Round(Acceleration.X * (90 / 9.81), 0))
In deze formule wordt eerst vanuit binnenuit de versnelling op het X-vlak vermenigvuldigd met (90 / 9,81). Hierbij wordt gebruikgemaakt van de theoretische maximale rustwaarde om de sensorwaarde om te zetten in graden. De waarde van 90 is aanwezig omdat het apparaat bij de maximale theoretische waarde loodrecht op de aarde op dat vlak zou zijn, wat een meting van 90 graden geeft.
Die waarde in graden wordt vervolgens afgerond op nul decimalen om een geheel getal in graden te verkrijgen. Ten slotte wordt de absolute waarde van dat afgeronde getal berekend om een positieve lezing te geven. Dit maakt dus niet uit of de hoek van de ene kant of een andere kant wordt gemeten.
Opmerking
De waarden die hierboven worden gedeeld, zijn geschatte waarden en vertegenwoordigen geen exacte meting.
Niveauvisuals toevoegen
In deze stap gebruiken we enkele besturingselementen op onconventionele manieren om een visueel doel te bereiken.
Visual van een soort ronde waterpas
Als u wilt beginnen, voegt u een besturingselement Knop toe aan het scherm, wijzigt u de naam ervan in btnCircleLevel en wijzigt u de volgende eigenschappen in het deelvenster Geavanceerd :
| Vastgoed | Waarde |
|---|---|
| Tekst | "" |
| BorderColor | RGBA(56, 96, 178, 1) |
| Geconcentreerde Randdikte | 2 |
| Opvullen | Transparent |
| DisabledFill | Zelf.Invullen |
| X | (Parent.Width - Self.Width) / 2 |
| Y | (Parent.Height - Self.Height) / 2 |
| Width | 400 |
| Hoogte | Self.Width |
Het resultaat van deze wijzigingen moet een cirkelvormige knop in het midden van het scherm produceren die niet kan worden ingedrukt omdat deze is uitgeschakeld.
Voeg vervolgens een cirkelshape toe, stel de randstraal in op 400 en wijzig de volgende eigenschappen in het deelvenster Geavanceerd :
| Vastgoed | Waarde |
|---|---|
| GeconcentreerdeRandDikheid | 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) |
| Width | 42 |
| Hoogte | Self.Width |
| Width | 400 |
| Hoogte | Self.Width |
Met de eigenschappen X en Y kan de cirkelvorm om het middelpunt van het app-scherm heen bewegen door relatieve wijzigingen in de waarden van de acceleratiesensor, maar binnen het cirkelgebied van btnCircleLevel blijven.
X- en Y-as ronde waterpas visuals
Voeg een schuifregelaar toe aan de app, wijzig de naam ervan in sldXValue en wijzig de volgende eigenschappen in het deelvenster Geavanceerd :
| Vastgoed | Waarde |
|---|---|
| Min. | -90 |
| Max | 90 |
| Verstek | Round(Acceleration.X * (90 / 9.81), 0) |
| ValueFill | Self.RailFill |
| X | (Parent.Width - Self.Width) / 2 |
| Y | btnCircleLevel.Y + btnCircleLevel.Height + 30 |
| Width | btnCircleLevel.Width |
| Hoogte | 70 |
Dit besturingselement Schuifregelaar geeft de hoek weer die vergelijkbaar is met hoe een waterpas dat doet: de Handle zal naar de verhoogde kant van het apparaat bewegen, vergelijkbaar met de luchtbel in een waterpas.
Kopieer vervolgens btnCircleLevel door deze te selecteren door Ctrl+C en vervolgens Ctrl+V in te drukken. Wijzig de naam van het besturingselement in btnXValueOverlay en verander de volgende eigenschappen in het deelvenster Geavanceerd:
| Vastgoed | Waarde |
|---|---|
| X | sldXValue.X - sldXValue.HandleSize / 2 |
| Y | sldXValue.Y |
| Width | sldXValue.Width + sldXValue.HandleSize |
| Hoogte | sldXValue.Height |
Deze wijzigingen plaatsen deze boven het besturingselement sldXValue , waardoor de gebruiker de waarde ervan niet kan wijzigen en een visuele rand kan opgeven.
Kopieer en plak sldXValue met dezelfde methode als voor het kopiëren van btnCircleLevel. Hernoem het naar sldYValue en wijzig de volgende eigenschappen:
| Vastgoed | Waarde |
|---|---|
| Layout | Layout.Vertical |
| X | btnCircleLevel.X - Self.Width - 30 |
| Y | (Parent.Height - Self.Height) / 2 |
| Width | sldXValue.Height |
| Hoogte | sldXValue.Width |
Kopieer en plak btnXValueOverlay, wijzig de naam ervan in btnYValueOverlay en wijzig de volgende eigenschappen:
| Vastgoed | Waarde |
|---|---|
| X | sldYValue.X |
| Y | sldYValue.Y - sldYValue.HandleSize / 2 |
| Width | sldYValue.Width |
| Hoogte | sldYValue.Height + sldYValue.HandleSize |
Nu zijn de ronde waterpas-achtige visuals klaar.
Niveau-app testen
Sla de app op en publiceer deze. Open de app op een mobiel apparaat met de benodigde sensoren en navigeer naar het scherm met de waterpas-visuals. Tilt het apparaat van links naar rechts, vervolgens omhoog en omlaag en ten slotte in alle richtingen, waarbij u de wijzigingen in hoekeigenschappen en de wijzigingen in de visuals noteert. Zoek een hoekoppervlak om het apparaat op te zetten en noteer de hoeken en visuals opnieuw.