اسکن QR کد با استفاده از Google Mobile Vision
اسکن QR کد با استفاده از Google Mobile Vision

اسکن QR کد یکی از مسایلی است که این روزا استفاده زیادی می شود.

استفاده امکانات زیادی از این تکنولوژی باعث شده تا خواندن و استفاده از QR کد به امری اجتناب ناپذیر تبذیل شود.

در Android شما می توانید با استفاده از Google Vision Library اطلاعات ذخیره شده در بارکد ها را استخراج کنید.

در این مقاله قصد داریم تا نحوه اسکن QR را به شما نشان دهیم

۱ – Google Mobile Vision API

اسکن QR

ابزاری که به شما کمک می کند اشیا در تصاویر و ویدئو ها را پیدا کنید.

امکانات نظیر تشخیص چهره، تشخیص متن و بار کد اسکنر در اختیار شما قرار می دهد. از تمامی این امکانات می توانید بصورت جداگانه یا ترکیبی استفاده کنید.

ما می توانیم بسیاری از برنامه های اسکن بارکد مورد استفاده در سوپر مارکت ها، تئاتر ها و هتل ها را ببینیم که بارکد را اسکن می کند و اطلاعات مورد نظر کاربر را فراهم می کند.

در این آموزش سعی خواهیم کرد طریقه استفاده از بارکد اسکنر را نشان دهیم.

برای این کار ابتدا کتابخانه زیر را در بخش gradle خود اضافه کنید.

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
compile 'com.google.android.gms:play-services-vision:11.0.2'
compile 'com.google.android.gms:play-services-vision:11.0.2'
compile 'com.google.android.gms:play-services-vision:11.0.2'

۲ – کتابخانه بارکد اسکنر

گوگل یک آموزش ساده برای آزمایش بارکد اسکن کتابخانه با یک تصویر bitmap ساده ارائه داد.

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

از یک کتابخانه ساده اسکنر بارکد را با استفاده از نمونه برداری از گوگل طراحی کرده ایم.

در این کتابخانه تعداد کمی از اشکالات برطرف شده و ویژگی های دیگر مانند callbacks برای زمانی که بارکد اسکن شده است و یک نشانگر خط روی صفحه همپوشانی است اضافه شده که می تواند در برنامه های شما استفاده شود.

۳ – چگونه از این کتابخانه برای اسکن QR استفاده کنیم

ابتدا با کد زیر کتابخانه های مورد نیاز ره به برنامه را اضافه کنید

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
dependencies {
// barcode reader library
implementation 'info.androidhive:barcode-reader:1.1.5'
// google vision library
implementation 'com.google.android.gms:play-services-vision:11.0.2'
}
dependencies { // barcode reader library implementation 'info.androidhive:barcode-reader:1.1.5' // google vision library implementation 'com.google.android.gms:play-services-vision:11.0.2' }
dependencies {
    // barcode reader library
    implementation 'info.androidhive:barcode-reader:1.1.5'
 
    // google vision library
    implementation 'com.google.android.gms:play-services-vision:11.0.2'
}

حال fragment بارکد اسکنر را به اکتیویتی یا فرگمنت خود اضافه کنید

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
<fragment
android:id="@+id/barcode_scanner"
android:name="info.androidhive.barcode.BarcodeReader"
android:layout_width="match_parent"
android:layout_height="match_parent"
app:auto_focus="true"
app:use_flash="false" />
<fragment android:id="@+id/barcode_scanner" android:name="info.androidhive.barcode.BarcodeReader" android:layout_width="match_parent" android:layout_height="match_parent" app:auto_focus="true" app:use_flash="false" />
<fragment
        android:id="@+id/barcode_scanner"
        android:name="info.androidhive.barcode.BarcodeReader"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        app:auto_focus="true"
        app:use_flash="false" />

حال اکتیویتی خود را با  BarcodeReader.BarcodeReaderListener  پیاده سازی ( منظور همان implement کردن است) کنید

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.SparseArray;
import com.google.android.gms.vision.barcode.Barcode;
import java.util.List;
import info.androidhive.barcode.BarcodeReader;
public class MainActivity extends AppCompatActivity implements BarcodeReader.BarcodeReaderListener {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_scan);
}
@Override
public void onScanned(Barcode barcode) {
// single barcode scanned
}
@Override
public void onScannedMultiple(List<Barcode> list) {
// multiple barcodes scanned
}
@Override
public void onBitmapScanned(SparseArray<Barcode> sparseArray) {
// barcode scanned from bitmap image
}
@Override
public void onScanError(String s) {
// scan error
}
@Override
public void onCameraPermissionDenied() {
// camera permission denied
}
}
import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.util.SparseArray; import com.google.android.gms.vision.barcode.Barcode; import java.util.List; import info.androidhive.barcode.BarcodeReader; public class MainActivity extends AppCompatActivity implements BarcodeReader.BarcodeReaderListener { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_scan); } @Override public void onScanned(Barcode barcode) { // single barcode scanned } @Override public void onScannedMultiple(List<Barcode> list) { // multiple barcodes scanned } @Override public void onBitmapScanned(SparseArray<Barcode> sparseArray) { // barcode scanned from bitmap image } @Override public void onScanError(String s) { // scan error } @Override public void onCameraPermissionDenied() { // camera permission denied } }
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.SparseArray;
import com.google.android.gms.vision.barcode.Barcode;
import java.util.List;
 
import info.androidhive.barcode.BarcodeReader;
 
public class MainActivity extends AppCompatActivity implements BarcodeReader.BarcodeReaderListener {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_scan);
    }
 
    @Override
    public void onScanned(Barcode barcode) {
        // single barcode scanned
    }
 
    @Override
    public void onScannedMultiple(List<Barcode> list) {
        // multiple barcodes scanned
    }
 
    @Override
    public void onBitmapScanned(SparseArray<Barcode> sparseArray) {
        // barcode scanned from bitmap image
    }
 
    @Override
    public void onScanError(String s) {
        // scan error
    }
 
    @Override
    public void onCameraPermissionDenied() {
        // camera permission denied
    }
}

حال برنامه را اجرا و شروع به اسکن بارکد کنید و نتیجه به ()onScanned() or onScannedMultiple  برگردانده می شود.

۳٫۱ – اضافه کردن Overlay Indicator Line برای اسکن QR

ما می توانیم همه برنامه های اسکن شده را به طور کلی اضافه می کنیم یک خط نشانگر درOverlay Indicator Line برای نشان دادن پیشرفت اسکن در رفتن است.

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

برای افزودن خط اسکن متحرک، info.androidhive.barcode.ScannerOverlay را در همان اکتیویتی با فرگمنت دوربین اضافه کنید.

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
<info.androidhive.barcode.ScannerOverlay
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#44000000"
app:line_color="#7323DC"
app:line_speed="6"
app:line_width="4"
app:square_height="200"
app:square_width="200"/>
<info.androidhive.barcode.ScannerOverlay android:layout_width="match_parent" android:layout_height="match_parent" android:background="#44000000" app:line_color="#7323DC" app:line_speed="6" app:line_width="4" app:square_height="200" app:square_width="200"/>
<info.androidhive.barcode.ScannerOverlay
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="#44000000"
    app:line_color="#7323DC"
    app:line_speed="6"
    app:line_width="4"
    app:square_height="200"
    app:square_width="200"/>

این کتابخانه همچنین دارای چندین ویژگی مفید دیگر مانند فلاش خودکار، صدای بوق و غیره است.

اطلاعات دقیق در مورد کتابخانه را می توان در صفحه Github پیدا کرد.

برای دیدن بقیه مقالات آموزشی برنامه نویسی اندروید اینجا کلیک کنید.

همچنین برای دیدن همه مقالات اینجا کلیک کنید

 

دیدگاه‌ خود را بیان کنید

اشتراک در
اطلاع از
guest

This site uses Akismet to reduce spam. Learn how your comment data is processed.

0 نظرات
بازخورد (Feedback) های اینلاین
مشاهده همه دیدگاه ها
سبد خرید0
There are no products in the cart!