اسکن کد qr و بارکد در اندروید

۲۲ خرداد ۱۳۹۷     سعید نوشادی    

اسکن کد qr و بارکد در اندروید

اسکن کد qr و بارکد در اندروید

درود و خسته نباشید خدمت همه عزیزان 🙂

یکی از کارهای خیلی قشنگی که میشه تو پروژه هاتون ازش استفاده کنید اسکن کد qr و بارکد هستش که بسیار پر کاربرد و جذابه.تو این آموزش قصد داریم روش اسکن کد qr و بارکد رو به صورت روان و ساده بررسی کنیم

1-اول از همه کتابخونه زیر رو به گریدل تون اضافه ش کنید

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

2-باید یه اکتیویتی ایجاد کنید(نیازی نیست که فایل xml اون رو ایجاد کنید)و به منیفست تون معرفیش کنید.اسمش رو فرضا میذاریم ActScanner و بعد کد های زیر رو داخلش قرار بدید

import android.app.Activity;
import android.os.Bundle;
import android.util.Log;

import com.google.zxing.Result;

import me.dm7.barcodescanner.zxing.ZXingScannerView;

public class ActScanner extends Activity 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) {
        Log.v("TAG1", rawResult.getText()); // Prints scan results
        
         Intent intent=new Intent(ActQr.this,ActMain.class);
         intent.putExtra("value",rawResult.getText());
         setResult(RESULT_OK,intent);
        
        
        mScannerView.resumeCameraPreview(this);

        finish();
    }
}

نکته مهم تو این کد لاین 36 که باید خوب توجه کنید.فرض کنید ما میخوایم از یه اکتیویتی مثلا به نام ActMain بریم به اکتیویتی اسکن کد(ActQr).برای اینکه بتونیم نتیجه رو از اکتیویتی اسکن کد دریافت کنیم نیاز داریم که یک intent از ActMain ایجاد کنیم و نتیجه رو پاس بدیم به intent.برای همین تو لاین 38 اومدیم با دستور setResult نتیجه رو توی intent قرار دادیم تا سمت اکتیویتی مبدا بتونیم مقدار حاصل از اسکن کد رو بخونیم

3-بر میگردیم به اکتیویتی مبدا جایی که قرار از اسکنر استفاده کنیم.یک متد درست میکنیم و کدهای زیر رو داخلش قرار میدیم

void scanner(){
    
     Intent intent=new Intent(ActMain.this,ActScanner.class);
     startActivityForResult(intent,100);
}

4-چون ما میخوایم از دوربین استفاده کنیم پس باید اول از همه دسترسی camera رو بررسی کنیم.پس اول دسترسی CAMERA رو به منیفست بدید و بعد  تو باتن و یا آیتم دیگه که قراره از اسکنر استفاده کنید کدهای زیر رو قرارش بدید

if(Build.VERSION.SDK_INT>=23){

                       if(ContextCompat.checkSelfPermission(ActMain.this, Manifest.permission.CAMERA)!= PackageManager.PERMISSION_GRANTED){
                           ActivityCompat.requestPermissions(ActMain.this,new String[]{android.Manifest.permission.CAMERA},1);
                        }
                        else{
                            scanner();
                        }


                    }
                    else{
                        scanner();

                    }

5-تو این مرحله باید دسترسی مربوط به CAMERA رو بررسی کنیم

public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
        super.onRequestPermissionsResult(requestCode, permissions, grantResults);

        try {
            if(grantResults[0]==-1){
                Toast.makeText(getApplicationContext(),"لطفا سطح دسترسی را تایید نمایید",Toaنمایید");
                return;

            }
           else
                scanner();
        }
        catch (Exception e) {
              e.printStackTrace();
        }

    }

تو این قسمت اومدیم اول دسترسی CAMERA رو بررسی کردیم و بعد اگه مشکلی نداشت متد scanner رو فراخونیش میکنیم

6-نوبت میرسته به دریافت مقدار از ActScanner که باید کدهای زیر رو تو ActMain قرار بدید

  @Override
    public void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);

        if(resultCode==RESULT_OK && requestCode==100){
            String val=data.getStringExtra("value");
          
        }
    }

چون تو مرحله 3 اومدیم از کد 100 برای دریافت نتیجه از ActScanner استفاده کردیم،اینجا هم از همون کد استفاده کردیم.نتیجه حاصل از اسکن کد توی val قرار گرفته و شما به راحتی می تونید ازش استفاده کنید.

اگه سوال و یا مشکلی داشتید یادتون نره پشتیبانی کافه لرن همیشه به شما گوش میده 🙂

موفق و پیروز باشید 🙂

دسته بندی ها : آموزش متنی اندروید, دسته‌بندی نشده

پاسخی بگذارید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

*

code

Rating*