Android Logo

Scanear codigo QR con android

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);

Referencia

Libreria