Подтвердить что ты не робот

Android, Как читать QR-код в моем приложении?

В моем приложении мне нужно прочитать Qr-код. Я искал сеть и обнаружил коды Zing, однако у многих разработчиков была проблема с ее использованием, и кажется, что это глючит!

Если я предполагаю, что у моих клиентов есть qr-ридер, установленный на их устройстве, как я могу использовать эти приложения и вызывать их через неявные намерения?

Если у пользователя нет считывателя qr, что произойдет с приложением? если он сбой, могу ли я попросить пользователя загрузить, например, QrDroid, и после этого использовать его?

4b9b3361

Ответ 1

try {

    Intent intent = new Intent("com.google.zxing.client.android.SCAN");
    intent.putExtra("SCAN_MODE", "QR_CODE_MODE"); // "PRODUCT_MODE for bar codes

    startActivityForResult(intent, 0);

} catch (Exception e) {

    Uri marketUri = Uri.parse("market://details?id=com.google.zxing.client.android");
    Intent marketIntent = new Intent(Intent.ACTION_VIEW,marketUri);
    startActivity(marketIntent);

}

и в onActivityResult():

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {           
    super.onActivityResult(requestCode, resultCode, data);
    if (requestCode == 0) {

        if (resultCode == RESULT_OK) {
            String contents = data.getStringExtra("SCAN_RESULT");
        }
        if(resultCode == RESULT_CANCELED){
            //handle cancel
        }
    }
}

Ответ 2

Если у пользователя нет считывателя qr, что произойдет с приложением? если он сбой, могу ли я попросить пользователя загрузить, например, QrDroid, и после этого использовать его?

Интересно, что Google теперь представил API Mobile Vision, они интегрированы в игровые сервисы.

В вашем файле Gradle просто добавьте:

compile 'com.google.android.gms:play-services-vision:9.6.1'

Взято из этого учебника QR-кода.

Ответ 3

Zxing - отличная библиотека для выполнения сканирования и генерации кода Qr. Следующая реализация использует библиотеку Zxing для сканирования изображения QR-кода. Не забудьте добавить следующую зависимость в gradle

compile 'me.dm7.barcodescanner: zxing: 1.9'

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

    @Override
    public void onCreate(Bundle state) {
        super.onCreate(state);
        // Programmatically initialize the scanner view
        mScannerView = new ZXingScannerView(this);
        // Set the scanner view as the content view
        setContentView(mScannerView);
    }

    @Override
    public void onResume() {
        super.onResume();
        // Register ourselves as a handler for scan results.
        mScannerView.setResultHandler(this);
        // Start camera on resume
        mScannerView.startCamera();
    }

    @Override
    public void onPause() {
        super.onPause();
        // Stop camera on pause
        mScannerView.stopCamera();
    }

    @Override
    public void handleResult(Result rawResult) {
        // Do something with the result here
        // Prints scan results
        Logger.verbose("result", rawResult.getText());
        // Prints the scan format (qrcode, pdf417 etc.)
        Logger.verbose("result", rawResult.getBarcodeFormat().toString());
        //If you would like to resume scanning, call this method below:
        //mScannerView.resumeCameraPreview(this);
        Intent intent = new Intent();
        intent.putExtra(AppConstants.KEY_QR_CODE, rawResult.getText());
        setResult(RESULT_OK, intent);
        finish();
    }
}

Ответ 4

Я создал простой пример учебника. Вы можете прочитать это и использовать в своем приложении.

http://ribinsandroidhelper.blogspot.in/2013/03/qr-code-reading-on-your-application.html

С помощью этой ссылки вы можете загрузить проект библиотеки qrcode и импортировать в свое рабочее пространство и добавить библиотеку в свой проект

и скопируйте этот код в свою деятельность

 Intent intent = new Intent("com.google.zxing.client.android.SCAN");
 startActivityForResult(intent, 0);

 public void onActivityResult(int requestCode, int resultCode, Intent intent) {
     if (requestCode == 0) {
         if (resultCode == RESULT_OK) {
             String contents = intent.getStringExtra("SCAN_RESULT");
             String format = intent.getStringExtra("SCAN_RESULT_FORMAT");
             Toast.makeText(this, contents,Toast.LENGTH_LONG).show();
             // Handle successful scan
         } else if (resultCode == RESULT_CANCELED) {
             //Handle cancel
         }
     }
}

Ответ 5

Используйте QR-библиотеку, такую ​​как ZXing... У меня был очень хороший опыт работы с ней, QrDroid намного сложнее. Если вы должны полагаться на внешнего читателя, полагайтесь на стандартный, такой как Google Goggles!