App inventor 2 en español
Cómo programar los teléfonos móviles con Android
mediante App inventor 2 - Juan Antonio Villalpando
-- Tutorial de iniciación de App Inventor 2 en español --
Volver al índice del tutorial
____________________________
299F.- Extensión. QR Green Pass. Decodificación. COVID-19. Decoder.
com.KIO4_QRGreenPass.aix
- En Europa a los vacunadosde COVID-19 (también a los recuperados y los que se han hecho un test) se les entrega un código QR denominado EU QR Certificate o QR Green Pass.
- En este código QR se encuentran datos como el nombre del usuario, su fecha de nacimiento, cuándo se vacunó, cuando caduca el código, tipo de vacuna...
- Las especificaciones del código se encuentran en este documento pdf:
covid-certificate_json_specification_en.pdf
digital-green-certificates_v3_en.pdf
Tipo de vacuna: https://github.com/ehn-dcc-development/ehn-dcc-schema/blob/release/1.3.0/valuesets/vaccine-prophylaxis.json
https://ec.europa.eu/health/sites/default/files/ehealth/docs/digital-green-certificates_dt-specifications_en.pdf
https://ec.europa.eu/health/sites/default/files/ehealth/docs/digital-green-value-sets_en.pdf (diciembre 2021)
- Para decodificar el QR, obtenemos su texto que viene en BASE45 comprimido con zlib y después de otras decoficaciones lo convertimos en JSON
QR code -> QR DECODER -> QR-decoded string -> BASE45 decoder -> zlib compressed string -> COSE string -> CBOR decoder -> JSON file
- Veamos esta información:
https://ehealth.vyncke.org/
- Aquí un ejemplo de salida de datos:
https://gir.st/blog/greenpass.html
https://www.youtube.com/watch?v=aO_LPxPM6Xg
- El certificado puede contener tres tipos de datos r: si el enfermo se ha recuperado. t: si ha realizado una prueba de COVID. v: si se ha vacunado.
- En el siguiente ejemplo observamos varios QR de la misma persona, pero con distinto certificado, r, t y v.
- Ejemplos: https://github.com/eu-digital-green-certificates/dgc-testdata/tree/main/IT
- Para realizar la extensión he utilizado este código:
https://gae-piaz.medium.com/decode-the-eu-green-pass-qrcode-using-java-b5654e55b0fc
https://github.com/GaetanoPiazzolla/greenpass-decode/blob/master/src/main/java/com/tano/green/Main.java
___________________________
0.- Bloques de la extensión.
- El bloque principal es el TextQRGPToJson, se le inserta el resultado de un escaneo de QR mediante el componente BarcodeScanner y obtener el Json del QR.
- El bloque QRGPToJson es similar al anterior, pero en este caso se le inserta una imagen QR situada en el componente Imagen.
- QRToText, ponemos un QR de cualquier tipo, no tiene por qué se de Green Pass, y obtenemos su texto.
- TextToBarCode, insertamos un texto y un componente Imagen, obtenemos el Código de Barra 128 de ese texto.
- TextToQR, insertamos un texto y un componenteImagen, obtenemos el QR de ese texto.
- ImageToFile, nos convierte una imagen situada en un componente Imagen a archivo. Establecer la ruta completa en donde queremos obtener ese archivo, por ejemplo /storage/emulated/0/.../my_file.png
___________________________
1.- Decodifica el texto de un QR Green Pass.
p299F_QRGreenPass.aia
- Escaneamos un QR Green Pass mediante el componente BarcodeScanner. Obtenemos un texto con el resultado.
- Ese resultado está codificado.
- Mediante la extensión lo decodificamos en JSON.
- Mediante los bloques mostramos los datos deseado de ese JSON.
___________________________
- Diseño.
___________________________
- Bloques.
____________________
- Decodificación JSON.
Obtenemos un texto JSON de esta forma:
(https://gir.st/blog/greenpass.html)
|
{-260: {1: {'dob': '1998-02-26', date of birth
'nam': {'fn': 'Musterfrau-Gößinger', family name
'fnt': 'MUSTERFRAU<GOESSINGER',
'gn': 'Gabriele', given name
'gnt': 'GABRIELE'},
'v': [{'ci': 'URN:UVCI:01:AT:10807843F94AEE0EE5093FBC254BD813#B', certificate ID
'co': 'AT', country of vaccination
'dn': 1, doses received
'dt': '2021-02-18', date of vaccination
'is': 'Ministry of Health, Austria', cert issuer
'ma': 'ORG-100030215', vaccine manufacturer
'mp': 'EU/1/20/1528', vaccine product id
'sd': 2, total number of doses
'tg': '840539006', targeted disease (COVID-19)
'vp': '1119349007'}], vaccine or prophylaxis
'ver': '1.2.1'}}, schema version
1: 'AT', QR code issuer
4: 1624458597, QR code expiry
6: 1624285797} QR code generated
|
- Corto ese texto por los caracteres {,}
- Obtengo una lista. De esa lista voy mostrando los elementos que contienen los datos que quiero ver:
- fn:
- gn:
- dob:
- 6:
- 4:
- tt:
- vp:
- La información de cada dato la obtendo de: covid-certificate_json_specification_en.pdf
- El tiempo está en Timestamp.
____________________
2.- Otros bloques.
- El bloque QRGPToJson es similar al que acabamos de ver, pero en este caso la información la obtiene de una imagen QR Green Pass en el componente Image1
____________________
3. - Con Cámara.
p299F_QRGreenPass_Camara.aia
- En vez de utilizar el BarcodeScanner podemos utilizar la Cámara. Fotografiamos un QR Green Pass y mediante el bloque QRGPToJson obtenemos su información.
___________________________
|