الأحد، 12 مايو 2019

No Texting While Driven

تطبيق الرد على الرسائل أثناء القيادة


يسبب استخدام الهاتف أثناء القيادة الكثير من الحوادث التي تسبب الإصابات الخطيرة وربما الوفاة، ويتسبب إرسال الرسائل وقراءتها أثناء القيادة معظم هذه الحوادث، لأنه يشغل السائق تمام عن الطريق، يحاول هذا التطبيق الحد من هذه الحوادث، حيث يتم تشغيل هذا التطبيق قبل القيادة، ويقوم المستخدم بتخصيص رسالة للرد التلقائي على أي رسالة نصية (SMS) ترده أثناء تشغيل التطبيق حيث يتم إرسال الرسالة المخصصة ويرفق معها موقع السائق الجغرافي.



الهدف من التطبيق:

·  استخدام مكون النصوص (Texting) للتحكم في إرسال الرسائل النصية (SMS) واستقبالها.
·       استخدام مكون قاعدة البيانات البسيطة (TinyDB) لحفظ الرسائل المخصصة بعد إغلاق التطبيق.
·       استخدام إجراء تهيئة الشاشة (Screen.Initialize) لتحميل الرسائل المخصصة بعد تشغيل التطبيق.
·       استخدام مكون قراءة النصوص (TextToSpeech) لقراءة النص المحمل.
·       استخدام مستشعر الموقع (LocationSensor) لتحديد وإرسال موقع المستخدم الحالي.

الأدوات المستخدمة في التطبيق:

الأداة
الفئة
الاسم
الوظيفة
Label
User Interface
PromptLabel
تلميح للمستخدم عن كيفية عمل التطبيق
Label
User Interface
ResponseLabel
عنوان رسالة الاستجابة.
TextBox
User Interface
newResponseTextBox
يدخل به المستخدم نص رسالة الاستجابة التي سيرد بها على من يرسل إليه رسائل أثناء القيادة.
TinyDB
Storage
TinyDB1
يخزن رسالة الاستجابة في قاعدة البيانات.
TextToSpeech
Media
TextToSpeech1
يقرأ النصوص المحملة.
LocationSensor
Sensors
LocationSensor1
يستشعر مكان وجود الجهاز وفقا لإحداثيات الموقع الجغرافي.
Button
User Interface
SubmitResponseButton
- يؤدي الضغط عليه لتنفيذ حدث أو وظيفة.
- استخدم في التطبيق لتفعيل استجابة المستخدم.
Texting
Social
Texting1
معالجة النصوص


خطوات التطبيق:

1- قم بإنشاء تطبيق جديد في آب اينفنتور، واعطه الاسم "NoTextingWhileDriving". وغير عنوان الشاشة (Title) في الخصائص إلى الاسم (No Texting While Driving).
2- قم بإضافة مكوني عنوان (Label)، ومربع نص، وزر، بالترتيب على الشاشة، كما بالشكل التالي، وقم بضبط خصائصهم كما يلي:
·       اكتب نص "The text below will be sent in response to all SMS texts received while this app is running." مكون في خاصية النص (Text) لمكون عنوان عنوان (PromptLabel).
·       اضبط خاصية النص (Text) لمكون (ResponseLabel) على “I’m driving right now, I’ll contact you shortly.”.
·       اضبط خاصية النص (Text) لمكون مربع النص (NewResponseTextbox) على "This leaves the text box blank for the user’s input".
·       اضبط خاصية التلميح (Hint) لمكون مربع النص (NewResponseTextbox) على "Enter new response text".
·       اضبط خاصية النص (Text) لمكون الزر (SubmitResponseButton) على " Modify Response".
·       قم بإضافة المكونات الأخرى التي لا تظهر على شاشة التطبيق وفقا للجدول السابق.



إضافة السلوكيات لمكونات التطبيق:

بعد أن قمنا بإضافة وتصميم مكونات التطبيق وترتيبها على الشاشة، سنقوم في هذه الخطوة بضبط سلوكيات المكونات (Behaviors) لتستجيب للأحداث (Events) أثناء تشغيل التطبيق.

اضافة الاستجابة التلقائية للنص:

1- انتقل إلى شاشة الكتل، انقر عنصر (Clock1)، ثم اسحب كتلة (Clock1.Timer) إلى منطقة الكتل.
2- اضغط مكون (Texting1) الموجود أسفل فئات الكتل، ثم اسحب كتلة (Texting1.MessageReceived) إلى منطقة الكتل. ثم اسحب مكون (set Texting1.PhoneNum to) ومكون (set Texting1.Message to)، ومكون (Texting1.SendMessage) داخل مكون (Texting1.MessageReceived).
يتم تحديد مكون العنوان (ResponseLabel) اسفل فئات الكتل، وسحب كتلة (ResponseLabel.Text) إلى داخل كتلة (set Texting1.Message to).
تكون المكونات كما بالشكل التالي:



تعمل هذه الكتل عندما يتلقى الجهاز رسالة (SMS)، فيتم تسجيل رقم الهاتف الذى ارسل الرسالة في المتغير (get number)، ويتم تحديد نص الرسالة التي يتم إرسالها من عنصر العنوان (ResponseLabel)، وبذلك تكون مكونات رسالة الاستجابة جاهزة للإرسال التلقائي لمن أرسال الرسالة (SMS) الواردة.

تجريب التطبيق:

1- اختر أمر (Al companion) من قائمة (Connect).
2- وجه كاميرا الهاتف إلى الكود الذي سيظهر على الشاشة، واضغط زر  (Scan QR) code)  ليتم تشغيل التطبيق على الهاتف.
3- استخدم جوالا آخر لترسل رسالة (SMS) للهاتف ال>ي يشغل التطبيق، ليرد عليك التطبيق تلقائيا برسالة الاستجابة المخزنة به.

إدخال استجابة مخصصة:

سنقوم في هذه المرحلة من التطبيق بتمكين المستخدم من إضافة رسالته الخاصة ليقوم التطبيق بإرسالها للمستخدم بشكل تلقائي.
يقوم المستخدم بإدخال رسالة الاستجابة المخصصة في مربع النص، ثم يضغط الزر لتصبح الرسالة المدخلة هي رسالته المخصصة.
لعمل ذلك نتبع الخطوات التالية:
1- انتقل إلى شاشة الكتل، انقر عنصر (SubmitResponseButton)، ثم اسحب كتلة (SubmitResponseButton.clic) إلى منطقة الكتل.
2- انقر عنصر العنوان (ResponseLabel.) أسفل منطقة الكتل، ثم اسحب كتلة (ResponseLabel.Text) داخل كتلة (SubmitResponseButton.clic)، ثم انقر عنصر (NewResponseTextbox) واسحب كتلة (NewResponseTextbox.Text) داخل كتلة (ResponseLabel.Text).
3- انقر عنصر (NewResponseTextbox) واسحب كتلة (NewResponseTextbox.Text) في نهاية كتلة (SubmitResponseButton.clic). ثم انقر فئة كتل النص (Text)، واسحب كتلة نص فارغة إلى نهاية الكتلة السابقة.
يصبح شكل الكتلة كما بالشكل التالي:




تفعل هذه الكتل حدث النقر على الزر الموجود بالتطبيق، ليقوم بنسخ النص المدخل في مربع النص إلى مربع عنوان الاستجابة (ResponseLabel.Text)، ثم يقوم بمسح محتويات مربع النص.

تجريب التطبيق:

1- اختر أمر (Al companion) من قائمة (Connect).
2- وجه كاميرا الهاتف إلى الكود الذي سيظهر على الشاشة، واضغط زر  (Scan QR) code)  ليتم تشغيل التطبيق على الهاتف.
3- امسح النص الافتراضي الموجود في مربع النص بالتطبيق، ثم اضغط الزر ليظهر النص المدخل في عنوان الاستجابة، ويكون هو نص الاستجابة ال>ي سيتم إرساله تلقائيا لمن يرسل لك رسالة نصية (SMS).

تسجيل الاستجابة المخصصة باستمرار:

سنقوم باستخدام مكون قاعدة البيانات (TinyDB1) لتخزين الرسالة المخصصة، حتي يتم الاحتفاظ بها لو تم إغلاق التطبيق.
لعمل ذلك نتبع الخطوات التالية:
1- انتقل إلى شاشة الكتل، انقر عنصر (TinyDB1)، ثم اسحب كتلة (TinyDB1.StoreValue) إلى منطقة الكتل داخل كتلة حدث النقر على الزر (SubmitResponseButton.clic).
2- اسحب كتلة نص فارغة من كتل النص (Text) وضعها عند خانة (tag)، وادخل بها النص (responseMessage)، ثم حدد العنصر (ResponseLabel) من أسفل منطقة الكتب، ثم اسحب كتلة (ResponseLabel.Text) إلى خانة (valueToStore).


استدعاء الاستجابة المخصصة عند فتح التطبيق:

قمنا في الإجراء السابق بحفظ الاستجابة المخصصة في مكون قاعدة البيانات (TinyDB1) وهناك إجراء آخر يتوجب علينا القيام به، وهو استدعاء هذه الاستجابة عندما نقوم بفتح التطبيق.
لعمل ذلك نتبع الخطوات التالية:
1- انتقل إلى شاشة الكتل، انقر عنصر الشاشة (Screen1)، ثم اسحب كتلة (Screen1.Initialize) إلى منطقة الكتل.
2- انقر مكون (ResponseLabel) أسفل فئات الكتل، ثم اسحب كتلة (ResponseLabel.Text) داخل إجراء تهيئة الشاشة (Screen1.Initialize).
3- انقر مكون (TinyDB1) أسفل فئات الكتل، ثم اسحب كتلة (TinyDB1.GetValue) إلأى نهاية الكتلة السابقة. ثم اسحب كتلة نص فارغة من فئة كتل النصوص (Text) وضعها في خانة ()، وادخل بها النص (responseMessage)، وقم بإدخال النص (I’m driving right now, I’ll contact you shortly,) في المتغير الآخر (valueifTagNotThere).

بذلك يتم استدعاء الاستجابة المخصصة من قاعدة الباينات عند تشغيل التطبيق، وإن لم يكن هناك استجابة مخصصة، سيظهر النص المدخل في خانة (valueifTagNotThere) كنص للاستجابة.

تجريب التطبيق:

1- اختر أمر (Al companion) من قائمة (Connect).
2- وجه كاميرا الهاتف إلى الكود الذي سيظهر على الشاشة، واضغط زر  (Scan QR) code)  ليتم تشغيل التطبيق على الهاتف.
3- امسح النص الافتراضي الموجود في مربع النص بالتطبيق، ثم اضغط الزر ليظهر النص المدخل في عنوان الاستجابة، ويكون هو نص الاستجابة ال>ي سيتم إرساله تلقائيا لمن يرسل لك رسالة نصية (SMS).
4- قم بإغلاق التطبيق، ثم قم بفتحه مرة أخرى لتجد رسالة الاستجابة المخصصة ظاهرة عليه.

قراءة الرسالة الواردة:

لكي نمكن التطبيق من قراءة الرسائل الواردة كي لا ينشغل السائق بالاطلاع عليها، سنستخدم مكون قراءة النص (TextToSpeech1) لقراء محتوى الرسالة الوارة، وسنستخدم دالة الربط (Join) لجمع أكثر من حقل ليقوم المكون بقرائتها، فنجعله يقدم رسالة بورود رسالة قادمة، من رقم تتم قرائته، ثم تتم قراءة الرسالة.
لعمل ذلك نتبع الخطوات التالية:
1- انتقل إلى شاشة الكتل، انقر عنصر الشاشة (TextToSpeech1)، ثم اسحب كتلة (call TextToSpeech.speak) إلى منطقة الكتل داخل مكون تسلم الرسالة (Texting1.MessageReceived).
2- انقر مكونات فئة النصوص، ثم اسحب كتلة (join) وضعها في نهاية مكون قراءة النص، ثم اضغط الزر الأزرق واسحب المتغير (String) أكثر من مرة، وضعه أسفل متغير (join) لتكون خانات جديدة بكتلة الضم.
3- ادخل النصوص واضبط متغيرات الكتلة كما بالشكل التالي:




تجريب التطبيق:

1- اختر أمر (Al companion) من قائمة (Connect).
2- وجه كاميرا الهاتف إلى الكود الذي سيظهر على الشاشة، واضغط زر  (Scan QR) code)  ليتم تشغيل التطبيق على الهاتف.
3- استخدم جوالا آخر لترسل رسالة (SMS) للهاتف الذي يشغل التطبيق، لتتم قراءة الرسالة، ويتم في نفس الوقت الرد عليها تلقائيا برسالة الاستجابة المخزنة.

إرسال الموقع الجغرافي كجزء من رسالة الاستجابة:

يمكن أن نرسل إحداثيات الموقع الجغرافي مع رسالة الاستجابة، يكون ذلك مفيدا في قطاعات الأعمال التي تهتم بمتابعة أمكان الموظفين، ولعمل ذلك سنستعين بمكون مستشعر الموقع (LocationSensor1).
لعمل ذلك نتبع الخطوات التالية:
1- انتقل إلى شاشة الكتل، انقر فئة كتلة المتغيرات (Variables)، واسحب كتلة التهيئة العامة (initialize global) إلى منطقة الكتل. ثم ادخل الكلمة (lastKnownLocation) في خانة الاسم للمتغير العام، واسحب كتلة نص فارغة إلى داخلها وادخل بها النص "Unknown".
2- انقر مكون مستشعر الموقع (LocationSensor1) أسفل فئات الكتل، ثم اسحب كتلة حدث تغير الموقع (LocationSensor1.Location Changed) إلى منطقة الكتل.
3- اسحب المتغير (set global lastKnownLoca tion to) وضعه داخل حدث تغير الموقع، ثم اضغط على مكون المستشعر مرة أخرى واسحب كتلة (LocationSensor1.CurrentAd dress) وضعها بداخله الكتلة السابقة.


4- ننتقل بعد ذلك إلى كتلة استقبال الرسائل (Texting1.MessageReceived) ونضيف بها كتلة ربط (join) في حدث إرسال الرسائل، ونخصصها كما بالشكل التالي:


وبذلك يكتمل التطبيق.

تجريب التطبيق:

1- اختر أمر (Al companion) من قائمة (Connect).
2- وجه كاميرا الهاتف إلى الكود الذي سيظهر على الشاشة، واضغط زر  (Scan QR) code)  ليتم تشغيل التطبيق على الهاتف.
3- استخدم جوالا آخر لترسل رسالة (SMS) للهاتف الذي يشغل التطبيق، لتتم قراءة الرسالة، ويتم في نفس الوقت الرد عليها تلقائيا برسالة الاستجابة المخزنة ومضمن بها الموقع الجغرافي للمستخدم.
ملاحظة:
لا تنسى تشغيل خاصية GBS على الهاتف قبل تجريب التطبيق.

الشكل الكامل لكتل التطبيق

هذا هو الشكل العامل لكتل التطبيق.





تجريب التطبيق:


ليست هناك تعليقات:

إرسال تعليق