يسبب استخدام الهاتف أثناء القيادة الكثير من الحوادث التي تسبب الإصابات الخطيرة وربما الوفاة، ويتسبب إرسال الرسائل وقراءتها أثناء القيادة معظم هذه الحوادث، لأنه يشغل السائق تمام عن الطريق، وهذا ما تدل عليه أحدث الإحصائيات.
يحاول هذا التطبيق no texting while driving app الحد من هذه الحوادث، حيث يتم تشغيل هذا التطبيق قبل القيادة.
ويقوم المستخدم بتخصيص رسالة للرد التلقائي على أي رسالة نصية (SMS) ترده أثناء تشغيل التطبيق حيث يتم إرسال الرسالة المخصصة ويرفق معها موقع السائق الجغرافي.
تطبيق الرد على الرسائل أثناء القيادة
الهدف من التطبيق:
- استخدام مكون النصوص (Texting) للتحكم في إرسال الرسائل النصية (SMS) واستقبالها.
- استخدام مكون قاعدة البيانات البسيطة (TinyDB) لحفظ الرسائل المخصصة بعد إغلاق التطبيق.
- استخدام إجراء تهيئة الشاشة (Screen.Initialize) لتحميل الرسائل المخصصة بعد تشغيل التطبيق.
- استخدام مكون قراءة النصوص (TextToSpeech) لقراءة النص المحمل.
- استخدام مستشعر الموقع (LocationSensor) لتحديد وإرسال موقع المستخدم الحالي.
الأدوات المستخدمة في التطبيق:
خطوات التطبيق:
- قم بإنشاء تطبيق جديد في آب اينفنتور، واعطه الاسم "NoTextingWhileDriving". وغير عنوان الشاشة (Title) في الخصائص إلى الاسم (No Texting While Driving).
- قم بإضافة مكوني عنوان (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) الواردة.
تجريب التطبيق:
- اختر أمر (Al companion) من قائمة (Connect).
- وجه كاميرا الهاتف إلى الكود الذي سيظهر على الشاشة، واضغط زر (Scan QR) code) ليتم تشغيل التطبيق على الهاتف.
- استخدم جوالا آخر لترسل رسالة (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)، ثم يقوم بمسح محتويات مربع النص.
استدعاء الاستجابة المخصصة عند فتح التطبيق:
قمنا في الإجراء السابق بحفظ الاستجابة المخصصة في مكون قاعدة البيانات (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).
تجريب التطبيق:
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 على الهاتف قبل تجريب التطبيق.