Leitor QR Mobile

Ontem, enquanto estava a cozinhar o jantar, decidi perder um par de horas para tentar resolver uma dúvida que me estava a irritar… Como criar um leitor de códigos QR no telemóvel que possamos utilizar para interagir com um site na web?

Esta pergunta não é realmente minha, mas faz parte de um projecto de licenciatura + investigação que está a decorrer na disciplina de Projecto em que estou a colaborar neste semestre no DeCA.

Primeiro de tudo, tive que saber se é possível fazer uma aplicação para telefones móveis facilmente? Ora bem, é aqui que entra o Mobile Processing—como não conheço, nem tão pouco domino outra linguagem específica, decidi usar Java (nesta versão simplificada, mas que ainda não tinha usado). É simples e corre em quase todos os telefones actuais… menos no iPhone, claro! ;)

Meti as mãos à obra e, cerca de 15 minutos depois, já tinha a minha primeira aplicação a correr no telefone—Hello (Mobile) World!

Depois de consultar os links de ajuda e de outras bibliotecas disponíveis, acabei por conseguir reunir o material necessário para correr a aplicação. Para já, apenas captura uma imagem com a câmara do telefone e descodifica. Para realizar isto é necessário:

Depois, basta utilizar o código que listo no final do post, ou codificar de origem uma aplicação a partir dos exemplos disponíveis nas bibliotecas. Aqui está um vídeo a demonstrar como tudo isto funciona: http://vimeo.com/11309629

Lembro que, com a excepção da biblioteca MVideoCapture, isto resultou da leitura dos manuais de instalação no site do Mobile Processing. O resto foi tentativa-erro e um pouco de pesquisa no Google…

Fica só a faltar a implementação de um script PHP que receba a mensagem de texto do telemóvel (no website). Pelo que percebi, para fazer isto basta implementar uma rotina de envio com a biblioteca MHTTPFilePoster. Como não domino PHP e nem sequer tenho o Apache a correr na minha máquina deixo isto para outro dia ;)

Esta versão não está minimamente optimizada e consome a bateria TODA do telemóvel em alguns minutos… usem-no por vossa conta e risco! ;)

import processing.video.*;
import mjs.processing.mobile.mqrcode.*;

Capture cap;
PImage img;
boolean state;

String message = “”; // The message to show
MQRCode qrCode; // The decode engine

void setup() {
state = false;
//// set up camera capture from library
cap = new Capture(this);
//// no animation loop during capture
noLoop();

// Create the decode engine
qrCode = new MQRCode();

// Set text properties
textFont(loadFont());
textAlign(LEFT);
}

void destroy() {
//// close the camera object on sketch exit
cap.close();
}

void draw(){
if(!state) {
cap.show();
} else{
//image(img, 0, 0, img.width/2, img.height/2, 0, 0);
fill(200, 200, 200);
stroke(0);
// Show a decoding message while the decode works
message = “Decoding …”;
text(message, 0, 20);
// Show the decode message
message = “” + qrCode.decode(img);
text(message, 0, 60);
}
}

void keyPressed() {
if(!state) {
byte[] data = cap.read();
cap.hide();
img = loadImage(data);
state = true;
loop();
background(0);
redraw();
} else {
state = false;
background(0);
noLoop();
}
}

Author: Pedro Amado

Professor Auxiliar na Universidade de Aveiro a leccionar Design de Interação

3 thoughts on “Leitor QR Mobile”

  1. @Lia:
    O objectivo (na peça da instalação) é codificar uma série de objectos para poder “transpor” a sua utilização no espaço para o site/conta de utilizador sem ter que interagir com um computador. O leitor QR no telemóvel parece ser a solução mais fácil, uma vez que em Portugal existem mais de 14,5M de assinaturas (para uma população activa de ~6M)

    Também foi equacionada uma solução do tipo fiducial como o TUIO, mas é mais difícil implementar num terminal móvel.
    Se conhecer uma solução mais fácil do que um QR, sou todo ouvidos! ;)

    Mais sobre QRs:
    http://en.wikipedia.org/wiki/QR_Code

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s