Muchos desarrollo ven utilidad en el hecho de tener que escanear un código QR para hacer x funcionalidad, bueno hasta hace unos anos esto con android no era tan fácil, pero ahora con gradle android studio, es cuestión de mins y se logra el objetivo.
En su momento la forma de lograr esta funcionalidad era llamar una aplicación que ya implementara esto y que esta hiciera el trabajo por nosotros.
Permisos
<uses-permission android:name="android.permission.CAMERA" />
Como es de esperar para poder escánear un código QR es necesario tener acceso a la cámara.
Dependencias
dependencies { ... compile 'me.dm7.barcodescanner:zxing:1.8.4' }
Implementación
Este ejemplo solo sera mostrar una clase de como escanear y luego mostrar el código escaneado.
Creamos una nueva actividad sim layout e implementamos la interface ZXingScannerView.ResultHandler que sera la que manejara el resultado.
public class ScannerActivity extends AppCompatActivity 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.i("QRCode", rawResult.getText()); mScannerView.resumeCameraPreview(this); } }
Y con esas simples lineas de código podemos agregar la funcionalidad de poder escanear códigos QR a nuestra aplicación android.
Una recomendación a la hora de implementar esto es llamar la actividad que se encarga de realizar el escáner de forma que nos retorne el código escáneado como un resultado así solo delegamos la función de escáner a nuestra actividad de escáner.
Intent intent = new Intent(context, ScannerActivity.class); int code = 4545; // Esto puede ser cualquier código. startActivityForResult(intent, code);