D A S E N Y
QRCode در برنامه نویسی اندروید

با سلام خدمت تمامی برنامه نویسان ارجمند و همراهان سایت Daseny. در این آموزش قصد داریم به روش اسکن و ایجاد QRCode در برنامه نویسی اندروید بپردازیم.

به یقین تا کنون مشاهده کرده اید که بر روی یک محصولی که خریداری کرده اید، یک سری اشکال سیاه رنگ در زمینه سفید وجود دارند که مجموع آنها به شکل مربع می باشد. به این اشکال QRCode (کیو آر کد) می گویند که برای رمزگذاری و انتشار اطلاعاتی همچون آدرس URL ، شماره تلفن ، متن ، ایمیل و… از آن استفاده می شود. QRCode را می توان به راحتی با گوشی های هوشمند اسکن کرد و به اطلاعات آن دست یافت. به همین دلیل امروزه به طور گسترده از آن استفاده می شود.

QRCode در برنامه نویسی اندروید

در آموزش قصد داریم بررسی کنیم که چطور در برنامه خومان یک کد QR را اسکن کرده و به اطلاعات آن دست یابیم. همچنین چطور می توانیم داده های خود را در قالب QRCode رمزنگاری کنیم.

اسکن QRCode در برنامه نویسی اندروید

برای اسکن کد QR می توانیم از کتابخانه ZXing استفاده کنیم. ابتدا باید این کتابخاانه را به برنامه خود اضافه کنیم. برای این کار کد زیر را به dependencies اضافه کرده و روی Sync Now کلیک می کنیم.

implementation 'me.dm7.barcodescanner:zxing:1.9.13'

برای اسکن باید از دوربین استفاده کنیم. در نتیجه نیاز داریم که Permission مربوط به دوربین را به AndroidManifest برنامه اضافه کنیم.

<uses-permission android:name="android.permission.CAMERA" />

در مرحله آخر به سراغ کد های جاوا می رویم و کد های Activity خود را به صورت زیر تغییر می دهیم.

public class QRScannerActivity extends AppCompatActivity  implements ZXingScannerView.ResultHandler {
    private ZXingScannerView mScannerView;

    @Override
    public void onCreate(Bundle state) {
        super.onCreate(state);
        mScannerView = new ZXingScannerView(this);
        setContentView(mScannerView);
    }

    @Override
    public void onResume() {
        super.onResume();
        mScannerView.setResultHandler(this);
        mScannerView.startCamera();          // شروع
    }

    @Override
    public void onPause() {
        super.onPause();
        mScannerView.stopCamera();           // توقف
    }

    @Override
    public void handleResult(Result rawResult) {
        //نمایش نتیجه
        Toast.makeText(MainActivity.this, rawResult.toString(), Toast.LENGTH_LONG).show();

        // اگر می خواهید بعد از نمایش نتیجه اسکن ادامه داشته باشد این کد را بنویسید
        mScannerView.resumeCameraPreview(this);
    }
}

در کد بالا قسمت های مهم توضیح داده شده است و شما می توانبد از نتیجه طبق نیاز خودتان استفاده کنید.

کد های برنامه

AndroidManifest.xml

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.qrscanner">

<uses-permission android:name="android.permission.CAMERA"/>

<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<activity android:name=".QRScannerActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />

<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>

</manifest>

QRScanner.java

package com.example.qrscanner;

import android.support.annotation.NonNull;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.Toast;

import com.google.zxing.Result;

import me.dm7.barcodescanner.zxing.ZXingScannerView;


public class MainActivity extends AppCompatActivity  implements ZXingScannerView.ResultHandler {
    private ZXingScannerView mScannerView;

    @Override
    public void onCreate(Bundle state) {
        super.onCreate(state);
        mScannerView = new ZXingScannerView(this);
        setContentView(mScannerView);
    }

    @Override
    public void onResume() {
        super.onResume();
        mScannerView.setResultHandler(this);
        mScannerView.startCamera();          // شروع
    }

    @Override
    public void onPause() {
        super.onPause();
        mScannerView.stopCamera();           // توقف
    }

    @Override
    public void handleResult(Result rawResult) {
        //نمایش نتیجه
        Toast.makeText(MainActivity.this, rawResult.toString(), Toast.LENGTH_LONG).show();

        // اگر می خواهید بعد از نمایش نتیجه اسکن ادامه داشته باشد این کد را بنویسید
        mScannerView.resumeCameraPreview(this);
    }
}

ایجاد QRCode در برنامه نویسی اندروید

برای تبدیل اطلاعات خودمان به کد QR می توانیم از کتابخانه QRGenearator استفاده کنیم. برای افزودن این کتابخانه به برنامه خط زیر را به dependencies اضافه کنید و روی Sync Now کلیک کنید.

implementation 'androidmads.library.qrgenearator:QRGenearator:1.0.3'

برای نمایش کد ایجاد شده باید یک ImageView در Layout برنامه خود ایجاد کنید.

<ImageView
android:layout_width="match_parent"
android:layout_height="320dp"
android:id="@+id/image_view"/>

اکنون کدهای زیر را در هر جایی که می خواهید اطلاعات را تبدیل به QRCode کنید قرار دهید.

String data="اطلاعاتی که می خواهید تبدیل به کد کیو آر شوند";
QRGEncoder qrgEncoder = new QRGEncoder(data, null, QRGContents.Type.TEXT, 4);
try {
    Bitmap bitmap = qrgEncoder.encodeAsBitmap();

    ImageView qrImage=findViewById(R.id.image_view);
    qrImage.setImageBitmap(bitmap);

    //ذخیره عکس
    QRGSaver.save("Save Location","Image Name",bitmap, QRGContents.ImageType.IMAGE_PNG or QRGContents.ImageType.IMAGE_JPEG);
} catch (WriterException e) {
}

در کد بالا شما باید داده های خودتان را در متغیر data قرار دهید. همچنین برای ذخیره عکس کافیست در متد ()QRGSaver.save به ترتیب محل ذخیره ، نام تصویر ذخیره شده ، bitmap ساخته شده و فرمت عکس را وارد کنید. به این نکته توجه کنید که برای ذخیره عکس باید Permission زیر را به AndroidManifest اضافه کنید.

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>

کد های برنامه

AndroidManifest.xml

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.qrgenerator">

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>

<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<activity android:name=".QRGeneratorActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />

<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>

</manifest>

activity_qrgenerator.xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".QRGeneratorActivity">
<ImageView
android:layout_width="match_parent"
android:layout_height="320dp"
android:id="@+id/image_view"/>
</RelativeLayout>

QRGenerator.java

package com.example.myapplication;

import android.graphics.Bitmap;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.ImageView;

import com.google.zxing.WriterException;

import androidmads.library.qrgenearator.QRGContents;
import androidmads.library.qrgenearator.QRGEncoder;
import androidmads.library.qrgenearator.QRGSaver;

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        String data="اطلاعاتی که می خواهید تبدیل به کد کیو آر شوند";
        QRGEncoder qrgEncoder = new QRGEncoder(data, null, QRGContents.Type.TEXT, 4);
        try {
            Bitmap bitmap = qrgEncoder.encodeAsBitmap();

            ImageView qrImage=findViewById(R.id.image_view);
            qrImage.setImageBitmap(bitmap);

            //ذخیره عکس
            QRGSaver.save("Save Location","Image Name",bitmap, QRGContents.ImageType.IMAGE_PNG or QRGContents.ImageType.IMAGE_JPEG);
        } catch (WriterException e) {
        }
    }
}

آموزش کار با QRCode در برنامه نویسی اندروید به پایان رسید. لطفا نظرات ، انتقادات و پیشنهادات خود را برای ما بنویسید. همچنین اگر سوالی دارید می توانید در بخش نظرات بازگو کنید. ما در اسرع وقت پاسخ گوی شما خواهیم بود.

اگربه برنامه نویسی اندروید علاقه دارید می توانید در دوره مقدماتی برنامه نویسی اندروید ما ثبت نام کنید.

مطالب اخیر

پیام بگذارید