Il servizio $cordovaBarcodeScanner consente l'accesso al plugin Barcode scanner, che sfrutta la fotocamera per acquisire dati da diversi tipi di codice a barre: da EAN 8
a Code 128
, da QR Code
a Data Matrix
.
Per installare il plugin nell'ambiente Ionic occorre eseguire il seguente comando dalla CLI (Command Line Interface):
ionic plugin add phonegap-plugin-barcodescanner
Utilizzare al meglio il plugin è abbastanza semplice, occorre solo prendere confidenza con i due metodi scan() ed encode() del servizio $cordovaBarcodeScanner
.
scan
Il seguente esempio mostra come acquisire dati da un codice a barre:
$ionicPlatform.ready(function() {
$cordovaBarcodeScanner.scan()
.then(function(barcodeData) {
console.log("Testo barcode: " + barcodeData.text);
console.log("Tipo barcode: " + barcodeData.format);
},
function(error) {
console.log("Si è verificato un errore: " + error);
});
});
Come possiamo vedere, il metodo scan() restituisce una promise Angular. In caso di successo dell'acquisizione otteniamo le informazioni tramite il parametro barcodeData
. Questo è un oggetto la cui proprietà text
contiene il testo rappresentato dal codice a barre, mentre la proprietà format
rappresenta il tipo di barcode decodificato.
L'oggetto prevede anche la proprietà booleana cancelled
il cui valore diventa true
nel caso in cui l'acquisizione sia interrotta dall'utente.
encode
La codifica di un testo in QR Code
può essere effettuata tramite il metodo encode()
, come mostrato dal seguente esempio:
$ionicPlatform.ready(function() {
$cordovaBarcodeScanner.encode(BarcodeScanner.Encode.TEXT_TYPE, "http://www.html.it")
.then(function(result) {
console.log("Codifica avvenuto con successo!");
},
function(error) {
console.log("Si è verificato un errore: " + error);
});
});
Il metodo encode() prevede due parametri: il primo parametro indica il tipo di testo da codificare mentre il secondo parametro è il testo da codificare. I possibili valori previsti per indicare il tipo di testo da codificare sono:
BarcodeScanner.Encode.TEXT_TYPE
BarcodeScanner.Encode.EMAIL_TYPE
BarcodeScanner.Encode.PHONE_TYPE
BarcodeScanner.Encode.SMS_TYPE
L'esecuzione del codice dell'esempio genera un QRCode corrispondente all'URL specificato e mostra il risultato in una finestra a tutto schermo.
Allo stato attuale la funzione di codifica è disponibile solo per Android ed è utilizzabile soltanto per generare QR Code.