دليلك لأفضل مكتبات الأندرويد - الجزء الأول - QRScanner

Abdulrahman Hasan Aghaمنذ سنتين

بسم الله الرحمن الرحيم

كثيراً ما يقدم مطورو الأندرويد بعض المكتبات التي تساعد المبرمجين على إنشاء تطبيقاتهم الخاصة وتضيف بعض الميزات التي قد لا تجدها في بيئة البرمجة الأساسية. هذه المكتبات قد تقدم إضافة جمالية لتطبيقك أو ميزة قد تحتاجها.

سنحاول في هذه السلسلة بإذن الله تسليط الضوء على بعض المكتبات الممتازة والتي بإمكانك إضافتها لتطبيقك الخاص بكل سهولة.

 

مكتبة اليوم هي مكتبة ستمكنك من إضافة خاصية الـ 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 فسيغطي القارئ كل الشاشة.

tempFileForShare_2017-09-22-13-42-02.thumb.jpg.224e8bda9240d8314eb6be21ff455b79.jpg

 

نقوم الآن بإنشاء Activity جديدة داخل التطبيق الذي تريد إضافة هذه الخاصية له ونختار Empty Activity وتختار الإسم الذي يناسبك

1.jpg.fa23ad810e8f834596849c52e1789191.jpg

 

 

بالنسبة للـ 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 وتجربة التطبيق عليه ومن أشهر هذه المواقع موقع 

QR Code Generator

 

نقوم بإختيار Text وكتابة أي نص ومن ثم الضغط على Create QR code وتجربة التطبيق.

1.thumb.jpg.0b1e99e02c7f37552f03f51c2e75cbd0.jpg

 

وسنواصل الحديث بإذن الله تعالى في المواضيع اللاحقة عن بعض المكتبات الأخرى.

كلمات دليلية:
2
إعجاب
3162
مشاهدات
0
مشاركة
0
متابع
متميز
محتوى رهيب

التعليقات (0)

لايوجد لديك حساب في عالم البرمجة؟

تحب تنضم لعالم البرمجة؟ وتنشئ عالمك الخاص، تنشر المقالات، الدورات، تشارك المبرمجين وتساعد الآخرين، اشترك الآن بخطوات يسيرة !