آموزش های این وب سایت به صورت رایگان در دسترس است. اطلاعات بیشتر
بروز خطا
   [message]
اشتراک در سوال
رای ها
[dataList]

آموزش استفاده از بارکدخوان در برنامه QR Code ( تکمیل شد)

وحید  9 سال پیش  7 سال پیش
+3 0

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

برای استفاده از بارکدخوان در برنامه دو روش وجود داره:
1) درون خود برنامه عملیات بارکدخوانی انجام بشه و در واقع نیاز به برنامه جدایی نباشه + دانلود منابع مورد نیاز
2) برای خواندن بارکد از برنامه ی دیگه ای استفاده بشه غیر از خود برنامه ما + دانلود منابع مورد نیاز

مزایا:
= مزیت روش اول: روش اول تنها مزیتی که نسبت به روش دوم داره اینه که برنامه ما وابسته به برنامه دیگه ای نمی شه و لازم نیست کاربر اگر برنامه رو نداشت بره دانلود کنه و تو خود برنامه عملیات بارکدخوانی انجام می شه و همونجا هم پردازش می شه.
= مزیت روش دوم: خب ممکنه بگید روش قبل خوب بود دیگه، اما روش دوم مزیت هایی داره که باعث شده من تو برنامم از همین روش دوم استفاده کنم:
اولا) که در روش اول چون بارکدخوانی تو خود برنامه ما انجام می شه باید یک لایبرری به برنامتون اضافه کنید که حدود 2 مگابایت حجم برنامه رو افزایش می ده در صورتی که در روش دوم تقریبا حجم برنامه تغییری نمی کنه.
دوما) در روش اول بازهم به دلیل اینکه بارکدخوانی در خود برنامه انجام می شه نیاز به اضافه کردن دوتا پرمیشن دوربین به برنامتون دارید که در روش دوم لازم نیست.
اما در روش دوم روش کار به این صورته که وقتی کاربر روی دکمه بارکدخوانی کلیک می کنه اگر کاربر نرم افزار بارکدخوانی مربوطه رو داشت، که خوب مثل رفتن به یک اکتیویتی جدید انتقال پیدا می کنید به نرم افزار بارکدخوان، اما اگر نداشت یک دیالوگ نشون داده می شه (قابل شخصی سازی) که آیا قصد دانلود بارکدخوان رو دارید؟ و در صورت تایید به صفحه ی اپ استور اون برنامه می ره که بازار هم دارتش.

دانلود اپلیکیشن پلاس شارژ (تو بخش پرداخت قبض برای بارکدخوانی از روش دوم استفاده کردم)

آموزش روش اول: اضافه کردن بارکدخوان به خود برنامه و انجام عملیات در خود برنامه :
1. اضافه کردن کتابخانه به برنامه (کتابخونه برای اندروید استودیو بود، تبدیلش کردم به اکلیپس)
2. اضافه کردن این دو پرمیشن به مانیفست برنامه:

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

3. اضافه کردن اکتیویتی زیر به تگ اپلیکیشن مانیفست:

 <activity android:name="com.dm.zbar.android.scanner.ZBarScannerActivity"
    android:screenOrientation="landscape"
    android:label="@string/app_name" />

4. این دو خط رو به بالای متد onCreate() اضافه کنید:

 private static final int ZBAR_SCANNER_REQUEST    = 0;
 private static final int ZBAR_QR_SCANNER_REQUEST = 1;

3. قرار دادن Intent زیر در جایی که قصد رفتن به بارکدخوان رو دارید:

 Intent intent = new Intent(RQCodeActivity.this, ZBarScannerActivity.class);
 startActivityForResult(intent, ZBAR_SCANNER_REQUEST);

5. برای دریافت و پردازش مقادیر برگردانده شده توسط بارکدخوان هم کد زیر رو به صفحه ی بارکدخوانتون اضافه کنید و طبق نیازتون شخصی سازیش کنید:

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data)
{    
    if (resultCode == RESULT_OK) 
    {
        // Scan result is available by making a call to data.getStringExtra(ZBarConstants.SCAN_RESULT)
        // Type of the scan result is available by making a call to data.getStringExtra(ZBarConstants.SCAN_RESULT_TYPE)
        Toast.makeText(this, "Scan Result = " + data.getStringExtra(ZBarConstants.SCAN_RESULT), Toast.LENGTH_SHORT).show();
        Toast.makeText(this, "Scan Result Type = " + data.getIntExtra(ZBarConstants.SCAN_RESULT_TYPE, 0), Toast.LENGTH_SHORT).show();
        // The value of type indicates one of the symbols listed in Advanced Options below.
    } else if(resultCode == RESULT_CANCELED) {
        Toast.makeText(this, "Camera unavailable", Toast.LENGTH_SHORT).show();
    }
}

جهت دریافت اطلاعات بیشتر به صفحه ی اصلی این آموزش مراجعه نمایید (البته همین آموزش هم کامل بود)


آموزش روش دوم: استفاده از برنامه خارجی برای بارکدخوانی:
1. اضافه کردن دو کلاس IntentIntegrator و IntentResult به کلاسهاتون که در فایل منابع قرار داره.
2. اضافه کردن Intent زیر برای دکمه ای که قراره بارکدخوانی رو انجام بده:

 IntentIntegrator integrator = new IntentIntegrator(RQCodeActivity.this);
 integrator.initiateScan();

3. قرار دادن متد زیر در کلاسی که قصد خوانده شدن بارکد رو دارید:

 public void onActivityResult(int requestCode, int resultCode, Intent intent) {
        try {
            IntentResult scanResult = IntentIntegrator.parseActivityResult(requestCode, resultCode, intent);
            if (scanResult != null) {
                String contents = intent.getStringExtra("SCAN_RESULT");
                String format = intent.getStringExtra("SCAN_RESULT_FORMAT");

                Toast.makeText(this, "Content:" + contents + " Format:" + format, Toast.LENGTH_LONG).show();
                // handle scan result
            }
        }
        catch (Exception e) {}
        // else continue with any other code you need in the method
        //...
    }

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

 جهت دریافت اطلاعات بیشتر به صفحه ی اصلی این آموزش مراجعه نمایید (البته همین آموزش هم کامل بود)

0 0
سلام کدهاتون نا مشخصه (9 سال پیش)
0 0
میشه کد هارو اضافه کنید؟ (9 سال پیش)
0 0
خب نوشتم در حال تکمیل، حالا آموزش تکمیل شد و کدها هم قرار داده شد. (9 سال پیش)
 برای این سوال 2 پاسخ وجود دارد.
پاسخ به سوال 
وحید  9 سال پیش
0 0

آموزش شخصی سازی دیالوگ دانلود اپلیکیشن بارکدخوان در روش دوم :

تو دوتا کلاسی که به برنامه اضافه کردیم، وارد کلاس IntentIntegrator بشید و متد private AlertDialog showDownloadDialog() رو جستجو کنید، تو این متد این دیالوگ تعریف شده حالا شما می تونید AlertDialog رو حذف و یک Dialog ایجاد کنید که فکر می کنم برای اینکه بتونید کامل ظاهر دیالوگ رو تغییر بدید باید از Dialog استفاده کنید که بشه یک لایه هم براش ساخت ولی اگر قصد دارید فقط متونش رو تغییر بدید که تو همون متد به جای متن های از پیش تعریف شده متن خودتون رو جایگزین کنید.

اگر این متد رو تبدیل به دیالوگ کنید یعنی

 private AlertDialog showDownloadDialog(){}

تبدیل کنید به

 private Dialog showDownloadDialog(){}

بعد از اینکار اکلیپس از چند خط دیگه اشکال می گیره، شروع کنید از بالا بیاید پایین و هرجا اشکال گرفته بود AlertDialog رو تبدیل کنید به Dialog و مشکل حل می شه.

پاسخ به سوال 
sun.of.god.7  7 سال پیش
0 0

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

ولی قسمت اینتنت کرش میکنه و میگه این کلاس پیدا نشد در صورتی که تو مانیفست هم معرفیش کردم

ZBarScannerActivity.class


پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .