इसके माध्यम से साझा किया गया


मोबाइल सेंसर का उपयोग करने वाला ऐप बनाएँ

सेंसर्स से आप अपने फोन की क्षमताओं का लाभ उठाकर अपने ऐप्स में बेहतर कार्यक्षमता जोड़ पाते हैं. इस लेख में, आप Power Apps में अपने मोबाइल डिवाइस पर सेंसर्स का उपयोग करने के बारे में जानेंगे.

ऐसा करने के लिए, आप दो स्क्रीन वाला एक नमूना ऐप बनाएंगे. पहली स्क्रीन वर्तमान कंपास शीर्षक, अक्षांश, देशांतर, ऊंचाई प्रदर्शित करेगी, और टेक्स्ट जानकारी पाने के लिए NFC टैग्स स्कैन कर सकती है. दूसरी स्क्रीन X और Y अक्षों के साथ डिवाइस का कोण बनाने के लिए एक्सेलेरोमीटर डेटा प्रदर्शित करने का तरीका दिखाएगी.

पहली स्क्रीन के पीछे परिदृश्य सेट करने के लिए, कल्पना करें कि आप NFC-आधारित स्कैवेंजर हंट के लिए एक ऐप बना रहे हैं. प्रत्येक प्रतिभागी किसी एक NFC टैग को स्कैन करने के लिए ऐप का उपयोग करेगा जो उन्हें एक कंपास शीर्षक, अक्षांश और देशांतर प्रदान करेगा जो उन्हें उनके अगले गंतव्य की ओर इंगित करेगा. उस गंतव्य पर, प्रतिभागी एक दूसरा टैग स्कैन करेगा और इस प्रक्रिया को तब तक दोहराएगा जब तक वे हंट के अंत तक नहीं पहुंच जाते.

दूसरी स्क्रीन के लिए, कोणों को लमसम मापने के लिए किसी उपकरण की आवश्यकता की कल्पना करें. जब दूसरी स्क्रीन पर, प्रतिभागी अपने डिवाइस को सतह पर रख या पकड़ सकेगा, और डिवाइस के X और Y अक्षों पर कोण पा सकेगा और साथ-साथ उन कोणों का एक दृश्य वर्णन देख सकेगा.

मोबाइल सेंसर उपयोग करने वालाअनुप्रयोग बनाने का तरीका जानने के लिए यह वीडियो देखें:

पूर्वावश्यकताएँ

  • इस ऐप के लिए Power Apps लाइसेंस के किसी भी स्तर का उपयोग किया जा सकता है, क्योंकि किसी भी डेटा कनेक्शन्स का उपयोग नहीं किया जा रहा है.

  • GPS और एक्सेलेरोमीटर क्षमताओं वाले मोबाइल फोन या टैबलेट जैसे मोबाइल डिवाइस की आवश्यकता होगी क्योंकि हो सकता है अधिकतर PCs में आवश्यक सेंसर्स न हों.

  • NFC स्कैनिंग सुविधा के लिए एक NFC सक्षम डिवाइस ज़रूरी होता है. यह भी माना जाता है कि स्कैन किए जाने वाले NFC टैग्स को निम्न उदाहरण स्वरूप में टेक्स्ट मान उत्पन्न करने के लिए पूर्व-कॉन्फ़िगर किया गया है:

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

    यह ऐप के लिए HTML-अनुकूल प्रारूप में टेक्स्ट प्रदान करेगा. NFC टैग्स का सेटअप इस लेख के दायरे से बाहर है, और यदि आवश्यक हो तो NFC अवयवों को अनदेखा किया जा सकता है; प्राथमिक फोकस Power Apps में मोबाइल सेंसर्स का उपयोग करना है.

डिवाइस सेंसर आउटपुट्स के लिए हेडर और HTML टेक्स्ट जोड़ें

हेडर लेबल

Power Apps में संपादन करने के लिए खुले एक ऐप के साथ, इसे इन्सर्ट पेन से खींचकर और गिराकर स्क्रीन पर एक टेक्स्ट लेबल जोड़ें. इसे स्क्रीन के ऊपरी-बाएं कोने में रखें, और प्रॉपर्टीज़ पेन में निम्नलिखित गुणों को संशोधित करें:

गुण मान
टेक्स्ट स्कैवेंजर हंट
फ़ॉन्ट का आकार 24
फ़ॉन्ट की मोटाई FontWeight.Semibold
पाठ संरेखण Align.Center
चौड़ाई Parent.Width

फिर उन्नत फलक में, निम्न गुणों को रूपांतरित करें:

गुण मान
रंग RGBA(255, 255, 255, 1)
फ़िल RGBA(56, 96, 178, 1)

यह स्क्रीन के लिए एक हेडर देगा.

डिवाइस सेंसर आउटपुट्स के लिए HTML टेक्स्ट

इसके बाद, एक HTML टेक्स्ट नियंत्रण जोड़ें. इसका उपयोग सभी डिवाइस सेंसर आउटपुट्स को एक ही जगह पर प्रदर्शित करने के लिए किया जाएगा. 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"

उन्नत पेन में निम्न प्रॉपर्टीज़ बदलें:

गुण मान
साइज़ 21
BorderStyle BorderStyle.Solid
BorderThickness 2
चौड़ाई 560
ऊंचाई 576
PaddingTop 16
PaddingRight 16
PaddingBottom 16
PaddingLeft 16

यदि आप जांचते हैं कि HTMLText में क्या डाला गया था, हो सकता है आप देख पाएं कि दो प्रकार के सेंसर्स का उपयोग किया जा रहा है.

पहला है कंपास सेंसर, जो डिवाइस से कंपास हेडिंग प्रदान करने के लिए हेडिंग प्रॉपर्टी का उपयोग कर रहा है.

दूसरा है स्थान सेंसर, जो अक्षांश, देशांतर, और ऊंचाई प्रदान करता है. स्थान के बारे में दो विचार हैं. सबसे पहले, यदि आप डॉट ऑपरेटर और प्रॉपर्टी के बिना केवल स्थान का उपयोग करते हैं, तो आपको एक रिकॉर्ड मिलेगा जिसमें अक्षांश, देशांतर और ऊंचाई के लिए फ़ील्ड्स होंगी. दूसरा, ऊंचाई प्रॉपर्टी डिफ़ॉल्ट रूप से मीटर्स में होती है. यदि आप इसे फ़ुट में बदलना चाहते हैं, तो निम्न फॉर्मूला बदलें:

मीटर्स का प्रयोग करें:

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

फुट का प्रयोग करें:

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

नोट

यदि आप ऐप का प्रिव्यु Power Apps Studio में करते हैं, तो हो सकता है कि कई सेंसर प्रॉपर्टीज़ ठीक से काम न करें. परीक्षण के लिए सेंसर प्रॉपर्टीज़ के साथ काम करने के लिए, इसके बजाय मोबाइल फ़ोन के उपयोग को वरीयता दें.

अब HTML टेक्स्ट नियंत्रण को स्क्रीन के निचले आधे हिस्से के पास रखें.

NFC स्कैन और HTML टेक्स्ट नियंत्रण के लिए बटन जोड़ें

NFC स्कैन बटन

पिछले चरण में आपके द्वारा जोड़े गए HTML टेक्स्ट नियंत्रण के नीचे रखते हुए, ऐप में एक बटन जोड़ें, और उन्नत पेन में निम्नलिखित प्रॉपर्टीज़ को बदलें:

गुण मान
OnSelect ClearCollect(colNFCScan, ReadNFC())
टेक्स्ट "NFC टैग स्कैन करें"

OnSelect प्रॉपर्टी में दिया गया कोड ReadNFC() फ़ंक्शन का उपयोग कर रहा है, जो NFC रीडर को सक्रिय करता है. फिर, यह NFC टैग से पढ़ी गई सामग्री को colNFCScan नामक कलेक्शन में संग्रहीत करता है. इस कलेक्शन में चार फ़ील्ड्स होंगी: RTD, पाठ, TNF, और URI. हालांकि इन क्षेत्रों की पूरी व्याख्या इस लेख के दायरे से बाहर है, लेकिन कुछ स्पष्टीकरण मददगार हो सकते हैं. TNF का अर्थ है टाइप नाम प्रारूप और इसका उपयोग रिकॉर्ड प्रकार परिभाषा, या RTD की संरचना को परिभाषित करने के लिए किया जाता है, जो बदले में पाठ और/या URI फ़ील्ड्स में निहित रिकॉर्ड के प्रकार को परिभाषित करता है. URI का अर्थ यूनिफ़ॉर्म रिसोर्स आइडेंटिफ़ायर है, जो दर असल संसाधन का पता होता है. इस उदाहरण में उपयोग किए जा रहे NFC टैग के लिए, इस विषय के परिचय से उदाहरण टेक्स्ट वाली पाठ फ़ील्ड के अलावा, उनमें 1 मान वाला TNF, T मान वाला RTD और खाली URI मान होगा.

NFC स्कैन जानकारी प्रदर्शित करने के लिए HTML टेक्स्ट नियंत्रण जोड़ें

एक दूसरा HTML पाठ नियंत्रण जोड़ें और HTMLText प्रॉपर्टी में निम्न फॉर्मूले का उपयोग करें:

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

उन्नत पेन में निम्न प्रॉपर्टीज़ बदलें:

गुण मान
साइज़ 21
BorderStyle BorderStyle.Solid
BorderThickness 2
चौड़ाई 560
ऊंचाई 248
PaddingTop 16
PaddingRight 16
PaddingBottom 16
PaddingLeft 16

बिना किसी NFC डेटा के, नियंत्रण अगला गंतव्य प्रदर्शित करेगा. जब कोई NFC टैग स्कैन किया जाता है, तो वह अगला गंतव्य और फिर स्कैन से एकत्र किए गए डेटा में पाठ फ़ील्ड का डेटा प्रदर्शित करेगा.

यह मानते हुए कि NFC टैग के लिए डेटा को परिचय में वर्णित किये गए अनुसार कॉन्फ़िगर किया गया है, उपयोगकर्ता उन टैगों में से एक को स्कैन करने के बाद अगले स्कैवेंजर हंट स्थान के लिए अगला कंपास शीर्षक, अक्षांश और देशांतर मान देखेंगे.

कम्पास शीर्षक अक्षांश और देशांतर मान

ऐप प‍रीक्षण करें

ऐप सहेजें और प्रकाशित करें. आवश्यक सेंसर वाले मोबाइल डिवाइस में अनुप्रयोग खोलें और कंपास शीर्षक, अक्षांश, देशांतर और ऊंचाई मानों का निरीक्षण करें. विभिन्न सेंसर रीडिंग में परिवर्तन देखने के लिए विभिन्न दिशाओं में घूमते हुए घूमने का प्रयास करें.

चलते समय विभिन्न दिशाओं में घूमने का प्रयास करें

NFC रीडर नियंत्रण देखने के लिए NFC टैग स्कैन करें बटन दबाएं. यदि आपके पास NFC टैग है, जो पाठ मान उत्पन्न कर सकता है, तो अनुप्रयोग में पाठ देखने के लिए टैग को स्कैन करें. यदि नहीं, तो रद्द करें चुनें.

NFC टैग स्कैन करें

दूसरी स्क्रीन जोड़ें और कॉन्फ़िगर करें

अनुप्रयोग के कोण माप वाले हिस्से के लिए नई रिक्त स्क्रीन जोड़ें.

स्क्रीन जोड़ने के बाद, पहली स्क्रीन पर वापस जाएं और + सम्मिलित करें > आइकन से अगला एरो आइकन जोड़ें > अगला एरो आइकन चुनें. इसे स्क्रीन के ऊपरी-दाएँ कोने में रखें और उन्नत फलक में निचे दिऐ गऐ गुणों को बदलें:

गुण मान
OnSelect (स्क्रीन 2) नेविगेट करें
रंग RGBA(255, 255, 255, 1)

यदि आपने अभी-अभी जोड़ी गई दूसरी स्क्रीन का नाम बदला है, तो उस नाम को विकल्प Screen2 के लिए नेवीगेट फ़ंक्शन में बदलें.

अनुप्रयोग को देखे ,उस आइकन को चुने जिसे अभी जोड़ा गया था यह जांच करने के लिए कि यह आपको रिक्त स्क्रीन पर नेविगेट करता है जिसे अभी जोड़ा गया था.

X और Y कोणों के लिए कॉन्फ़िगरेशन जोड़ें

ड्रैग करते हुए स्क्रीन पर पाठ लेबल जोड़ें और उसे सम्मिलित करें फलक से ड्रापड्राउन करें. इसे स्क्रीन के ऊपरी-बाएं कोने में रखें, और प्रॉपर्टीज़ पेन में निम्नलिखित गुणों को संशोधित करें:

गुण मान
टेक्स्ट "2 अक्ष स्तर"
फ़ॉन्ट का आकार 24
फ़ॉन्ट की मोटाई FontWeight.Semibold
पाठ संरेखण Align.Center
चौड़ाई Parent.Width

फिर उन्नत फलक में, निम्न गुणों को रूपांतरित करें:

गुण मान
रंग RGBA(255, 255, 255, 1)
फ़िल RGBA(56, 96, 178, 1)

यह दूसरी स्क्रीन के लिए हेडर प्रदान करेगा.

इसके बाद, + सम्मिलित करें > आइकन से बैक एरो आइकन जोड़ें > बैक एरो आइकन चुनें. इसे स्क्रीन के ऊपरी-बाएँ कोने में रखें और उन्नत फलक में दिऐ गऐ गुणों को बदलें:

गुण मान
OnSelect (स्क्रीन1) नेविगेट करें
रंग RGBA(255, 255, 255, 1)

यदि आपने अभी-अभी जोड़ी गई पहली स्क्रीन का नाम बदला है, तो उस नाम को Screen1 के लिए नेवीगेट फ़ंक्शन में बदलें.

अंत में एक HTML पाठ नियंत्रण जोड़ें. इसका उपयोग सभी डिवाइस सेंसर आउटपुट्स को एक ही जगह पर प्रदर्शित करने के लिए किया जाएगा. 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>"

उन्नत टैब में दिऐ गऐ गुण बदलें:

गुण मान
साइज़ 21
BorderStyle BorderStyle.Solid
BorderThickness 2
चौड़ाई 560
ऊंचाई 168
PaddingTop 16
PaddingRight 16
PaddingBottom 16
PaddingLeft 16

इस नियंत्रण को अनुप्रयोग स्क्रीन के उपर की ओर रखें.

यदि आप जांच करते हैं कि HTMLText में क्या डाला गया था, तो आप देख सकते हैं कि यह एक्सीलरेशन सेंसर का उपयोग कर रहा है, जिसमें X और Y गुण हैं. Z गुन भी है जिसका हम इस परिदृश्य उपयोग नहीं कर रहे हैं.

यह सेंसर का तीन समतल पर डिवाइस पर गुरुत्वाकर्षण बल का पता लगाता है. उदाहरण के तौर पर मोबाइल फोन का उपयोग करना फोन के किनारों से फैली एक रेखा की कल्पना करें. यह X समतल होगा. फोन के दायीं ओर उठाने से सकारात्मक मूल्य उत्पन्न होगा और बायीं ओर उठाने से नकारात्मक मान उत्पन्न होगा. फोन के ऊपर और नीचे से बाहर निकलने वाली रेखा Y समतल का प्रतिनिधित्व करेगी. फोन के ऊपरी हिस्से को उठाने से सकारात्मक मूल्य उत्पन्न होगा और नीचे को ऊपर उठाने से नकारात्मक मूल्य उत्पन्न होगा. अंत में, स्क्रीन और फोन के पीछे से निकलने वाली रेखा Z समतल का प्रतिनिधित्व करेगी. स्क्रीन को ऊपर की ओर करने से सकारात्मक मान उत्पन्न होगा और इसे नीचे की ओर करने से नाक्रात्मक मान उत्पन्न होगा.

एक्सेलेरोमीटर गति में दोनों यंत्र पर कार्य करने वाले बलों को मापेगा जैसे कि यदि आपने यंत्र को गिरा दिया और आराम से छोड़ दिया जैसे कि यंत्र को पहले वर्णित किए गए अक्षों पर एक या एक से अधिक बार झुकाना. स्थिर अवस्था के समय सैद्धांतिक मान 0 और +/- 9.81 m/s2 के बीच होना चाहिए, जिसमें 0 यह दर्शाता है कि सापेक्ष अक्ष पृथ्वी के समानांतर है और सेंसर पर कोई गुरुत्वाकर्षण कार्य नहीं कर रहा है और 9.81 की मान यह दर्शाता है कि सापेक्ष अक्ष पृथ्वी के लंबवत है और गुरुत्वाकर्षण का पूरा बल सेंसर पर कार्य कर रहा है.

आपके द्वारा अभी जोड़े गए HTML पाठ नियंत्रण में कोड को देखते हुए, नीचे दिऐ अनुभाग पर ध्यान दें:

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

इस फॉर्मूले में, अंदर-बाहर से, सबसे पहले, X समतल पर Acceleration को (90 / 9.81) से गुणा किया जा रहा है. यह सेंसर रीडिंग को डिग्री में बदलने के लिए सैद्धांतिक अधिकतम आराम मूल्य का उपयोग कर रहा है. 90 का मान मौजूद है क्योंकि अधिकतम लिखित मान पर, डिवाइस उस तल पर पृथ्वी के लंबवत होगा, जो 90 डिग्री का माप देगा.

डिग्री में उस मान को फिर पूर्ण डिग्री मान प्रदान करने के लिए शून्य दशमलव स्थानों पर गोल किया जाता है. अंत में, उस गोल संख्या के निरपेक्ष मान की गणना सकारात्मक रीडिंग देने के लिए की जाती है. ऐसा इसलिए है इससे कोई फर्क नहीं पड़ेगा कि कोण एक तरफ या दूसरी तरफ से मापा जाता है.

नोट

ऊपर साझा किए गए मान अनुमानित हैं, और सटीक माप का प्रतिनिधित्व नहीं करते हैं.

स्तर के दृश्य जोड़ें

इस चरण में, हम एक दृश्य लक्ष्य को प्राप्त करने के लिए अपरंपरागत तरीकों से कुछ नियंत्रणों का उपयोग करने जा रहे हैं.

वृत्ताकार बुलबुला स्तर जैसा दृश्य

शुरू करने के लिए, स्क्रीन पर Button नियंत्रण जोड़ें, इसका नाम बदलकर btnCircleLevel करें और Advanced पेन में नीचे दिऐ गऐ गुणों को बदलें:

गुण मान
टेक्स्ट ""
BorderColor RGBA(56, 96, 178, 1)
FocusedBorderThickness 2
फ़िल पारदर्शी
DisabledFill Self.Fill
X (Parent.Width - Self.Width) / 2
Y (Parent.Height - Self.Height) / 2
चौड़ाई 400
ऊंचाई Self.Width

इन परिवर्तनों के परिणाम को स्क्रीन के केंद्र में गोलाकार बटन का उत्पादन करना चाहिए जिसे अक्षम होने के कारण दबाया नहीं जा सकता है.

इसके बाद, वृत्त आकार जोड़ें, इसकी सीमा की त्रिज्या को 400 पर सेट करें और उन्नत फलक में निम्नलिखित गुण बदलें:

गुण मान
FocusedBorderThickness 12
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)
चौड़ाई 42
ऊंचाई Self.Width
चौड़ाई 400
ऊंचाई Self.Width

X और Y गुण वृत को ऐक्सेलरेशन सेंसर के मान में ऐप स्क्रीन के सापेक्ष परिवर्तन के केंद्र में स्थानांतरित करने की अनुमति देते हैं लेकिन btnCircleLevel के वृत्ताकार क्षेत्र में उपस्थित होते है.

X और y अक्ष बबल स्तर जैसे दृश्य

ऐप में एक स्लाइडर नियंत्रण जोड़ें, इसका नाम बदलकर sldXValue करें, और उन्नत पेन में निचे दिऐ गऐ गुणों को बदलें:

गुण मान
निम्नतम -90
अधिकतम 90
डिफ़ॉल्ट Round(Acceleration.X * (90 / 9.81), 0)
ValueFill Self.RailFill
X (Parent.Width - Self.Width) / 2
Y btnCircleLevel.Y + btnCircleLevel.Height + 30
चौड़ाई btnCircleLevel.Width
ऊंचाई 70

यह स्लाइडर नियंत्रण बबल स्तर के समान कोण प्रदर्शित करेगा: हैंडल बबल स्तर में हवा के बुलबुले के समान, डिवाइस के ऊपर की ओर जाएगा.

इसके बाद, btnCircleLevel को Ctrl + C दबाकर और फिर Ctrl + V दबाकर कॉपी करें.नियंत्रण का नाम बदलकर btnXValueOverlay करें और उन्नत फलक में निम्न गुणों को बदलें:

गुण मान
X sldXValue.X - sldXValue.HandleSize / 2
Y sldXValue.Y
चौड़ाई sldXValue.Width + sldXValue.HandleSize
ऊंचाई sldXValue.Height

ये परिवर्तन इसे sldXValue नियंत्रण पर रखेंगे, जो उपयोगकर्ता को इसके मान को बदलने से रोकेगा और एक दृश्य सीमा प्रदान करेगा.

sldXValue को कॉपी और पेस्ट करें , उसी विधि का उपयोग करके जो btnCircleLevel को कॉपी करने के लिए उपयोग की जाती है. इसका नाम बदलकर sldYValue करें और नीचे दिए गए गुण बदलें:

गुण मान
लेआउट Layout.Vertical
X btnCircleLevel.X - Self.Width - 30
Y (Parent.Height - Self.Height) / 2
चौड़ाई sldXValue.Height
ऊंचाई sldXValue.Width

btnXValueOverlay कॉपी और पेस्ट करें , नीचे दिऐ गए गुणों को बदलते हुए इसका नाम बदलकर btnYValueOverlay करें :

गुण मान
X sldYValue.X
Y sldYValue.Y - sldYValue.HandleSize / 2
चौड़ाई sldYValue.Width
ऊंचाई sldYValue.Height + sldYValue.HandleSize

यह बबल जैसे दृश्यों को पूरा करता है.

ऐप केस्तर की जांच करें

ऐप प‍रीक्षण करें

ऐप सहेजें और प्रकाशित करें. आवश्यक सेंसर वाले मोबाइल डिवाइस पर, अनुप्रयोग खोलें और बबल स्तर के दृश्यों के साथ स्क्रीन पर नेविगेट करें. यंत्र को बाएं से दाएं, फिर ऊपर और नीचे झुकाएँ और अंत में कोण गुणों में परिवर्तन के साथ-साथ दृश्यों में परिवर्तन को ध्यान में रखते हुए सभी दिशाओं में झुकाएं. डिवाइस को चालू रखने के लिए कोण वाली सतह ढूंढें और कोणों और दृश्यों को फिर से नोट करें.

इसे भी देखें