Android, Как читать QR-код в моем приложении?
В моем приложении мне нужно прочитать Qr-код. Я искал сеть и обнаружил коды Zing, однако у многих разработчиков была проблема с ее использованием, и кажется, что это глючит!
Если я предполагаю, что у моих клиентов есть qr-ридер, установленный на их устройстве, как я могу использовать эти приложения и вызывать их через неявные намерения?
Если у пользователя нет считывателя qr, что произойдет с приложением? если он сбой, могу ли я попросить пользователя загрузить, например, QrDroid, и после этого использовать его?
Ответы
Ответ 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!