دليلك لأفضل مكتبات الأندرويد - الجزء الأول - QRScanner
بسم الله الرحمن الرحيم
كثيراً ما يقدم مطورو الأندرويد بعض المكتبات التي تساعد المبرمجين على إنشاء تطبيقاتهم الخاصة وتضيف بعض الميزات التي قد لا تجدها في بيئة البرمجة الأساسية. هذه المكتبات قد تقدم إضافة جمالية لتطبيقك أو ميزة قد تحتاجها.
سنحاول في هذه السلسلة بإذن الله تسليط الضوء على بعض المكتبات الممتازة والتي بإمكانك إضافتها لتطبيقك الخاص بكل سهولة.
مكتبة اليوم هي مكتبة ستمكنك من إضافة خاصية الـ QR Scanning لتطبيقك الخاص وتعتبر من أبسط المكتبات من حيث سهولة الدمج مع تطبيقك الخاص.
أغلب التطبيقات الحالية باتت تستخدم الـ QR Scanner في تطبيقاتها ومن أشهرها تطبيق الـ WhatssApp والـ SnapChat وغيرها
ولكن كيف من الممكن دمج مثل هذه الميزة في تطبيقك ؟
هناك الكثير من الـ Libraries المنتشرة لنظام الأندرويد والتي تسمح بإضافة هذه الخاصية إلى تطبيقك ولكن سنختار اليوم واحدة من أسهل هذه المكاتب وأقلها تعقيداً وهي مكتبة ZXingScanner.
لنبدأ في فهم طريقة عمل هذه المكتبة.
أولاً : يجب عليك إضافة الـ Dependency داخل ملف الـ Build.gradle داخل Block الـ Dependencies ومن ثم عمل Sync للتطبيق من الأعلى كيف تتم إضافة هذه المكتبة.
compile 'me.dm7.barcodescanner:zxing:1.9'
لتشغيل هذه المكتبة نحتاج إلى Activity خاصة نقوم بالانتقال إليها في كل مرة أراد المستخدم عمل مسح لـ QR Code . طبعاً بالإمكان عمل Activity ومن ثم تشغيل الـ QR Scanner كـ Fragment داخل هذه الـ Activity مثل برنامج الـ Whatsapp ولكن سنستخدم Activity كاملة في هذا الشرح كونها أقل تعقيداً.
نلاحظ من الصورة أدناه شكل الـ QR Scanner داخل Fragment من تطبيق الـ Whatsapp. أما في حالة الـ Activity فسيغطي القارئ كل الشاشة.
نقوم الآن بإنشاء Activity جديدة داخل التطبيق الذي تريد إضافة هذه الخاصية له ونختار Empty Activity وتختار الإسم الذي يناسبك
بالنسبة للـ Layout الخاصة بالـ Activity الجديدة فـ ليس هناك أي داعي لتغيير أي شيء فيها وبإمكانك طبعاً تغيير الـ Parent Layout سواء Linear أو Relative فلا يوجد أي فرق
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent">
</RelativeLayout>
ننتقل بعد ذلك إلى الجزء الأهم وهو كلاس الـ Java الخاص بهذه الـ Activity ونبدأ العمل عليه.
في البداية يجب علينا عمل Implementation لـ Interface خاص بالمكتبة التي تم إستيرادها مسبقاً
public class <Your Class Name> extends AppCompatActivity implements ZXingScannerView.ResultHandler
سنقوم بعد ذلك بعمل Override لـ Method خاصة ستقوم بعمل Handle للنتيجة المقروءة من قبل الـ Scanner. هذه الـ Method موجودة داخل الـ Interface السابق.
public void handleResult(Result result){}
ومن ثم سنحتاج إلى إضافة View خاص كمتغير من نوع ZXingScannerView لتشغيل الـ Scanner من خلاله داخل الـ Activity وإلى متغير من نوع String كي نستطيع التحقق من الـ Read Value أو النص المقروء من الـ QR Code.
private ZXingScannerView mScannerView ;
private String QRresult= "";
نقوم بعد ذلك بإضافة بعد الأكواد داخل onCreate method لكي يتم تشغيل الـ Scanner مباشرة بعد الإنتقال للـ Activity. في البداية سنقوم بعمل Instantiate لمتغير الـ ZXingScannerView وإختياره كـ Content View.
mScannerView = new ZXingScannerView(this);
setContentView(mScannerView);
بعد ذلك سيتم إختيار الـ Class الحالي بتولي مهمة الـ Handling للنتيجة المقروءة من قبل الـ Scanner. عن طريق handleResult method.
mScannerView.setResultHandler(this);
وأخيراً سنقوم بتشغيل الـ Camera للقيام بمسح الـ QR Codes
mScannerView.startCamera();
لتصبح onCreate method في شكلها النهائي
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.<your layout name>);
mScannerView = new ZXingScannerView(this);
setContentView(mScannerView);
mScannerView.setResultHandler(this);
mScannerView.startCamera();
}
بعد قراءة الـ QR Code ستقوم handleResult method بتمرير Object من نوع result ومن أجل التأكد من أن المكتبة تعمل بشكل سليم سنقوم بتجريب QR Code لـ String معين.
لكن في البداية يجب أن نقوم بإغلاق الـ Camera كأول أمر داخل handleResult method.
mScannerView.stopCamera();
ومن ثم إستخراج النص المقروء من الـ result object وحفظه داخل المتغير المنشأ مسبقاً وعرضه داخل Toast للتأكد ومن ثم إنهاء الـ Activity والعودة للـ Activity السابقة
QRresult = result.getText();
Toast.makeText(getApplicationContext(),QRresult,Toast.LENGTH_LONG).show();
finish();
للتأكد من عمل التطبيق بشكل سليم سنحتاج لـ جهاز حقيقي وذلك لأن الكاميرا لا تعمل داخل الـ Virtual Devices ومن ثم بإمكانك إستخدام أي موقع QR Codes Generator وتجربة التطبيق عليه ومن أشهر هذه المواقع موقع
نقوم بإختيار Text وكتابة أي نص ومن ثم الضغط على Create QR code وتجربة التطبيق.
وسنواصل الحديث بإذن الله تعالى في المواضيع اللاحقة عن بعض المكتبات الأخرى.
التعليقات (0)
لايوجد لديك حساب في عالم البرمجة؟
تحب تنضم لعالم البرمجة؟ وتنشئ عالمك الخاص، تنشر المقالات، الدورات، تشارك المبرمجين وتساعد الآخرين، اشترك الآن بخطوات يسيرة !