آموزش خواندن Qr Code در برنامه نویسی اندروید

امتیاز 5.00 ( 1 رای )

سلام دوستان امیدوارم حالتان خوب باشد در این سری از آموزش برنامه نویسی اندروید به آموزش خواندن Qr Code در برنامه نویسی اندروید می پردازیم قبلتر آموزش های مختلفی درباره ی خواندن QrCode قرار داده بودیم امروز به معرفی کتاب خانه قدرتمند و همینطور کاربردی برای خواندن QrCode می پردازیم در ادامه با ما همراه باشید.
 
بهتر ابتدا به بررسی QR Code چیست بپردازیم
QR Code مخفف Quick Response Code یا کد پاسخ سریع است و در  Whats’up بخش وب آن برای لاگین کردن مورد استفاده قرار می گیرد در واقع QrCode بارکد دو بعدی است که می تواند مقداری داده را در خود نگه دارد به طور مثال می تواند آدرس یک وب سایت یا یک محصول و حتی یک رمز را نگهداری کند و توسط دوربین گوشی یا بارکد خوان خوانده می شود.
 
در ادامه می توانید یک بار کد نمونه را مشاهده کنید.
sample barcode
 
شاید بپرسید چگونه می توانیم بارکد تولید کنید ؟ از سایت زیر برای تولید بارکد می توانید استفاده کنید.

http://goqr.me/

در سایت بالا ما یک بارکد همانند زیر درست می کنیم.

{"name" : "mohammadhossein" , "address" :"tehran"}

بار کد آن به شکل زیر می شود

 
از بارکد بالا در آخر آموزش برای تست استفاده کنید .
 
برای اینکه بتوانید بارکد را به سادگی در برنامه خود قرار دهید لازم است از کتاب خانه قدرتمند Zxing استفاده کنید.
برای اینکار وارد فایل Build.gradle شده و در بخش dependencies خط زیر را اضافه کنید.

    compile 'com.journeyapps:zxing-android-embedded:3.4.0'

پروژه را sync کنید.
در activity_main.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:id="@+id/activity_main"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context="ir.programchi">
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_centerVertical="true"
        android:orientation="vertical">
        <TextView
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:text="Name" />
        <TextView
            android:id="@+id/textViewName"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:text="xyz"
            android:textAppearance="@style/Base.TextAppearance.AppCompat.Large" />
        <TextView
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:text="Address" />
        <TextView
            android:id="@+id/textViewAddress"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:text="xyz"
            android:textAppearance="@style/Base.TextAppearance.AppCompat.Large" />
    </LinearLayout>
    <Button
        android:id="@+id/buttonScan"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:text="Scan QR Code" />
</RelativeLayout>

که شامل دو فیلد TextView است که مقادیر آنها بعد اسکن بارکد پر می شود.
و در نهایت در MainActivity.java کدهای زیر را قرار میدهیم.

package ir.programchi;
import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
import android.widget.Toast;
import com.google.zxing.integration.android.IntentIntegrator;
import com.google.zxing.integration.android.IntentResult;
import org.json.JSONException;
import org.json.JSONObject;
public class MainActivity extends AppCompatActivity implements View.OnClickListener {
    private Button buttonScan;
    private TextView textViewName, textViewAddress;
    private IntentIntegrator qrScan;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        buttonScan = (Button) findViewById(R.id.buttonScan);
        textViewName = (TextView) findViewById(R.id.textViewName);
        textViewAddress = (TextView) findViewById(R.id.textViewAddress);
        qrScan = new IntentIntegrator(this);
        buttonScan.setOnClickListener(this);
    }
    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        IntentResult result = IntentIntegrator.parseActivityResult(requestCode, resultCode, data);
        if (result != null) {
            if (result.getContents() == null) {
                Toast.makeText(this, "Result Not Found", Toast.LENGTH_LONG).show();
            } else {
                try {
                    JSONObject obj = new JSONObject(result.getContents());
                    textViewName.setText(obj.getString("name"));
                    textViewAddress.setText(obj.getString("address"));
                    Toast.makeText(this, result.getContents(), Toast.LENGTH_LONG).show();
                }
            }
        } else {
            super.onActivityResult(requestCode, resultCode, data);
        }
    }
    @Override
    public void onClick(View view) {
        qrScan.initiateScan();
    }
}

در بالا ابتدا View ها find شده اند سپس از qrScan برای خواندن بارکد استفاده شده است بعد از اینکه بروی دکمه کلیک کنید بارکد خوان نمایش داده می شود با قرار دادن گوشی بروی بارکد بالا خواهید دید که دو مقدار در TextView ها نمایش داده می شود. این مقادیر از بارکد گرفته شده اند و به صورت فرمت json خواهند بود (این یک کار ابتکاری است البته برای بارکدها بهترین روش تلقی می شود) برای دریافت نتیجه اسکن از onActivityResult استفاده کرده ایم.
 
 
این آموزش هم به پایان رسید.
 
موفق و پیروز باشید.

مطالعه بیشتر