monografia v16 - corrigida

69
UNIVERSIDADE FEDERAL DO CEARÁ DEPARTAMENTO DE CIÊNCIA DA COMPUTAÇÃO CURSO DE ESPECIALIZAÇÃO EM TECNOLOGIAS DA INFORMAÇÃO CARLOS ALBERTO BATISTA DE QUEIROZ FILHO UM ESTUDO DE CASO SOBRE O USO DE QR CODE NA CONSTRUÇÃO DE UM SISTEMA UBÍQUO FORTALEZA 2010

Upload: carlosabqf3182

Post on 02-Aug-2015

200 views

Category:

Documents


71 download

TRANSCRIPT

UNIVERSIDADE FEDERAL DO CEARÁ

DEPARTAMENTO DE CIÊNCIA DA COMPUTAÇÃO

CURSO DE ESPECIALIZAÇÃO EM TECNOLOGIAS DA INFORMAÇÃO

CARLOS ALBERTO BATISTA DE QUEIROZ FILHO

UM ESTUDO DE CASO SOBRE O USO DE QR CODE NA CONSTRUÇÃO DE UM

SISTEMA UBÍQUO

FORTALEZA

2010

CARLOS ALBERTO BATISTA DE QUEIROZ FILHO

UM ESTUDO DE CASO SOBRE O USO DE QR CODE NA CONSTRUÇÃO DE UM

SISTEMA UBÍQUO

Monografia submetida à Coordenação

do Curso de Pós-Graduação em

Tecnologias da Informação, da

Universidade Federal do Ceará, como

requisito parcial para obtenção do

grau de Especialista em Tecnologias

da Informação.

Área de Concentração:

Desenvolvimento de Sistemas Web

Orientador: Prof. Dr. Windson Viana

de Carvalho

CARLOS ALBERTO BATISTA DE QUEIROZ FILHO

UM ESTUDO DE CASO SOBRE O USO DE QR CODE NA CONSTRUÇÃO DE UM

SISTEMA UBÍQUO

Monografia submetida à Coordenação do Curso de Pós-Graduação em

Tecnologias da Informação, da Universidade Federal do Ceará, como requisito parcial para

obtenção do grau de Especialista em Tecnologias da Informação Área de concentração

Desenvolvimento de Sistemas Web.

Aprovada em ____/ ____/______

BANCA EXAMINADORA

_________________________________________________________

Prof. Windson Viana de Carvalho, Dr. (Orientador)

Universidade Federal do Ceará – UFC

_________________________________________________________

Prof. José Maria da Silva Monteiro Filho, Dr.

Universidade Federal do Ceará – UFC

_________________________________________________________

Profª. Rossana Maria de Castro Andrade, Dra.

Universidade Federal do Ceará – UFC

Aos meus pais Carlos e Maria Olidenora,

Às minhas irmãs Ana Paula, Debora e Larissa,

e à minha amada companheira Juliana.

AGRADECIMENTOS

Agradeço à minha mãe, mulher de amor e força, que tanto me educou e demonstrou

como vencer dificuldades. Ao meu pai, por suas histórias e preocupações, pois sem elas não

seria o homem que me tornei. Às minhas lindas irmãs Ana Paula, Debora e Larissa pelo

carinho e paciência.

Agradeço a minha amada Juliana por ser sempre companheira e incentivadora. Por

acreditar que o mundo pode ser melhor e mostrar-me que todo trabalho deve ser feito em prol

disso. Agradeço também à família Nogueira/Avelar por todo o carinho e torcida.

A todos os meus amigos do ―Rait‖ pelas alegrias vividas nestes últimos seis anos.

Aos meus amigos/irmãos do colégio Nossa Senhora das Graças, por seu amor e alegria

que ajudaram nessa caminhada.

Aos novos e bons amigos do Grupo de Redes de Computadores, Engenharia de

Software e Sistemas – GREat – que tanto deram força para realização desta pesquisa. Ao

Lincoln Rocha que indicou diversas leituras importantes da área e aos amigos do projeto LG,

Alberto e Bruno Sabóia, pela motivação.

Aos professores do curso de Especialização em Tecnologias da Informação, que

ajudaram na formação de profissionais capazes de vencer no mercado de trabalho. Foram

muito mais do que educadores. Em especial ao professor José Maria por toda sua dedicação e

atenção ao curso e seus alunos, o jeito amigo de se conduzir ao aprendizado.

Ao GREat, em especial a professora Rossana Andrade, pelo incentivo à formação

acadêmica, pelas várias oportunidades de crescimento profissional e pelo auxílio financeiro

nos custos desse curso. Por proporcionar um ambiente agradável, produtivo e com todo

aparato necessário para o desenvolvimento desta pesquisa e de muitas outras que virão.

Ao meu orientador professor Windson Viana, que muito ajudou desde a concepção da

ideia desta pesquisa. Acompanhou de forma exemplar todo o desenvolvimento deste trabalho.

Além disso, demonstrou inumeráveis qualidades que um bom professor/pesquisador precisa

ter. Foi não só orientador, mas sim um bom amigo.

A Universidade Federal do Ceará, pelo espaço de aprendizagem e suporte ao curso de

especialização.

A todos que não nomeei, não por esquecimento ou desatenção, mas porque sabem que

a minha gratidão será eterna.

RESUMO

A utilização de código de barras já é fortemente explorada no mundo todo, para os mais

diversos fins. Esses códigos estão presentes no cotidiano das pessoas de tal forma que já

quase não se percebe a sua existência. O termo ―ubíquo‖ expressa essa ideia de algo que está

em toda parte e em todos os momentos. Esse termo define hoje também um novo domínio de

pesquisa, a Computação Ubíqua, no qual, dispositivos estão imersos no ambiente tornando o

acesso a informação ubíquo. Neste trabalho, são apresentados os principais conceitos

relacionados à Computação Ubíqua e é feita uma análise da aderência do uso dos códigos de

barras nestes tipos de aplicações. Além disso, são apresentados os principais tipos de código

de barras existentes e uma comparação é realizada para determinar qual o tipo que mais se

adéqua para o uso em aplicações ubíquas. Ao final, é proposto um estudo de caso: a aplicação

móvel DFind. Esta é uma aplicação móvel e sensível ao contexto para Android que faz uso

de símbolos QR Code para fornecer informações relacionadas à localização.

PALAVRAS-CHAVE: Código de barras, QR code, Ubiquidade, Dispositivos móveis.

ABSTRACT

The use of barcode is already heavily exploited worldwide for several purposes. These codes

are present in our daily life in a way that we almost do not realize its existence. The term

"ubiquitous" expresses this idea of something that is everywhere and every time. This term

also defines a new research domain, Ubiquitous Computing, in which devices are immersed in

the environment providing ubiquitous access to information. In this work, we present the main

concepts related to this research domain and we propose an analysis of the use of barcodes on

these types of applications. Also, it is presented the main barcode technologies and a

comparison is performed in order to determine which type fits most for the use in the

development of ubiquitous applications. At the end, it is proposed a case study: the DFind

mobile application. This Android software is a mobile and context-aware application which

makes use of QR Code in order to provide location-based information.

KEYWORDS: Bar code, QR code, Ubiquity, Mobile devices.

LISTA DE FIGURAS

Figura 1 – Representação dos códigos criada por Silver e Woodland. ...................................... 5

Figura 2 – Princípio de funcionamento da visão. ....................................................................... 6

Figura 3 – Funcionamento dos leitores de códigos de barras a laser. ........................................ 7

Figura 4 - Exemplo de código UPC-A ....................................................................................... 8

Figura 5 - Exemplo de código UPC-E. ....................................................................................... 9

Figura 6 - Exemplo de código EAN-13 .................................................................................... 10

Figura 7 - Exemplo de Código EAN Bookland e ISBN ........................................................... 10

Figura 8 - Exemplo de código de barras 2 de 5 intercalados. ................................................... 11

Figura 9 - Tabela de caracteres no código 39 ........................................................................... 12

Figura 10 - Exemplo de código 39 ........................................................................................... 13

Figura 11 - Exemplo de Código 128 em um DANFE. ............................................................. 14

Figura 12 - Exemplo de código de barras magnético CMC7. .................................................. 14

Figura 13 - Exemplo de utilização do código PDF-417 em documentos oficiais americanos. 15

Figura 14 - Exemplo de Data Matrix com destaque aos elementos estruturais. ....................... 17

Figura 15 - Elementos estruturais de um símbolo QR code. .................................................... 18

Figura 16 – Fluxograma de um algoritmo de leitura de um QR code. ..................................... 20

Figura 17 - Exemplo de uso do VCode .................................................................................... 24

Figura 18 - Cenário sensível ao contexto para a HELLO......................................................... 26

Figura 19 – Modelo de Tickets Eletrônicos baseados em QR codes. ....................................... 27

Figura 20 - Exemplo de uso do código Datamatrix em placas de circuitos eletrônicos ........... 28

Figura 21 - Visão geral de funcionamento do sistema proposto. ............................................. 29

Figura 22 - Exemplo de aplicação que faz a comparação de preços de um produto. ............... 30

Figura 23 - Proposta de QR code contextuais .......................................................................... 31

Figura 24 - Exemplo de uma aplicação que faz uso da biblioteca Open Source QR Code

Library .............................................................................................................................. 34

Figura 25 - Exemplos de uso da biblioteca em .NET Windows e Windows Mobile. .............. 35

Figura 26 - Exemplo de QR Code com a palavra ―teste‖ gerado através de requisição HTTP.

.......................................................................................................................................... 36

Figura 27 - Arquitetura do sistema operacional Android (GOOGLE INC., 2010). ................. 40

Figura 28 - Diagrama de casos de uso da aplicação proposta. ................................................. 42

Figura 29 - Fluxo básico da aplicação DFind. .......................................................................... 44

Figura 30 - Diagrama de Classes com as principais classes do componente de leitura. .......... 45

Figura 31 - Diagrama de Classes com as principais classes da aplicação DFind. .................... 45

Figura 32 - Diagrama de Sequências para um dos fluxos principais da aplicação. .................. 46

Figura 33 – Sequencia de telas do DFind capturadas durante o processo de localização indoor

.......................................................................................................................................... 47

Figura 34 - Sequencia de telas do DFind capturadas durante o processo de localização outdoor

.......................................................................................................................................... 48

LISTA DE TABELAS

Tabela 1 - Comparativo entre os códigos de barras apresentados no capítulo 1. ..................... 21

SUMÁRIO

CAPÍTULO 1 - INTRODUÇÃO .............................................................................................................1

CAPÍTULO 2 - TECNOLOGIAS DE CÓDIGOS DE BARRAS ............................................................4

2.1 CÓDIGOS DE BARRAS ..................................................................................................... 4

2.2 CÓDIGOS DE BARRAS UNIDIMENSIONAIS ....................................................................... 7 2.2.1. Universal Product Code – UPC-A ............................................................................... 7

2.2.2. Universal Product Code – UPC-E ............................................................................... 9

2.2.3. International Article Number – EAN-13 ...................................................................... 9

2.2.4. Código de barras 2 de 5 intercalados ...................................................................... 11

2.2.5. Código de barras 39 .............................................................................................. 11

2.2.6. Código de barras 128 ............................................................................................. 13

2.2.7. Código CMC7 ......................................................................................................... 14

2.3 CÓDIGOS DE BARRAS BIDIMENSIONAIS ........................................................................ 14 2.3.1. Código PDF-417 ..................................................................................................... 15

2.3.2. Código Data Matrix ................................................................................................ 16

2.3.3. Código “QR Code” ................................................................................................. 17

2.4 UTILIZAÇÃO DE CÓDIGOS 2D EM DISPOSITIVOS MÓVEIS .............................................. 18 2.4.1. Introdução ............................................................................................................ 18

2.4.2. Algoritmo de Leitura .............................................................................................. 19

2.5 CONCLUSÃO ................................................................................................................. 21

CAPÍTULO 3 - UBIQUIDADE DOS CÓDIGOS E SUAS APLICAÇÕES .......................................... 22

3.1 UBIQUIDADE E CÓDIGOS DE BARRAS 2D ...................................................................... 22

3.2 NOVAS APLICAÇÕES PARA OS CÓDIGOS DE BARRAS ..................................................... 24 3.2.1. Aplicações Cross-media .......................................................................................... 24

3.2.2. Aplicações de Mobile Learning ................................................................................ 25

3.2.3. Aplicações de Segurança ........................................................................................ 26

3.2.4. Aplicações Industriais............................................................................................. 27

3.2.5. Aplicações de Acessibilidade ................................................................................... 28

3.2.6. Aplicações Comerciais e de Marketing ..................................................................... 29

3.2.7. QR Codes Sensíveis ao Contexto ............................................................................. 30

3.3 CONCLUSÃO ................................................................................................................. 31

CAPÍTULO 4 - FERRAMENTAS PARA O DESENVOLVIMENTO DE APLICAÇÕES MÓVEIS QUE USAM QR CODES ................................................................................................................................ 33

4.1 INTRODUÇÃO ............................................................................................................... 33

4.2 OPEN SOURCE QR CODE LIBRARY ................................................................................. 34

4.3 GOOGLE CHART API ..................................................................................................... 35

4.4 BIBLIOTECA LIBQRENCONDE ........................................................................................ 36

4.5 PEAR IMAGE_QRCODE .................................................................................................. 36

4.6 BIBLIOTECA ZXING ....................................................................................................... 37

4.7 CONCLUSÃO ................................................................................................................. 38

CAPÍTULO 5 - DFIND: UM SISTEMA UBÍQUO PARA LOCALIZAÇÃO INDOOR E OUTDOOR BASEADO EM QR CODES .................................................................................................................. 39

5.1 A PLATAFORMA ANDROID ............................................................................................. 39

5.2 ESTUDO DE CASO ......................................................................................................... 41 5.2.1. Avant-Propos ......................................................................................................... 41

5.2.2. Aplicação móvel desenvolvida (DFind) ..................................................................... 42

5.3 CONCLUSÃO ................................................................................................................. 49

CONCLUSÃO ....................................................................................................................................... 50

REFERÊNCIAS BIBLIOGRÁFICAS..................................................................................................... 52

CAPÍTULO 1 - INTRODUÇÃO

No começo da década de 1950, as tecnologias de códigos de barras começaram a evoluir e

apontaram avanços em vários ramos de mercado. Naquela época, os processos de controle de

mercadorias envolviam muitas operações estritamente manuais. Nos supermercados em geral

a venda de produtos exigia que os caixas digitassem nos seus terminais de venda os valores

cobrados a cada produto adicionado no carrinho do cliente. Esse processo envolvia ainda

outras atividades essenciais como, por exemplo, a marcação dos preços nos produtos através

de etiquetas adesivas.

Detectou-se diversos pontos de falha nesse tipo de processo. Isso motivou o

desenvolvimento de tecnologias para auxiliar na automatização de algumas atividades. A

tecnologia de códigos de barras foi uma destas soluções propostas para resolver os problemas

relacionados à venda em varejo. Essa tecnologia permitiu a automatização de processos, uma

maior precisão na identificação de produtos, a redução de custos e uma maior agilidade nos

processos.

Atualmente, por conta das vantagens na utilização dos códigos de barra, pode se

encontrar esses códigos nos mais variados produtos. A tecnologia que fora desenvolvida para

resolver os problemas das vendas em varejo conseguiu, de fato, trazer soluções aos vários

pontos de falhas que existiam antes da utilização desses códigos. Além disso, essa tecnologia

é usada hoje não só em supermercados, mas também nas indústrias facilitando o controle de

sua produção, na emissão de boletos de pagamentos bancários, no controle de cargas nas

empresas de transportes, em sistemas de controle de acesso, etc.

Entretanto, a utilização dos códigos de barras ainda induz inconvenientes. A leitura

desses códigos requer a utilização de equipamentos desenvolvidos especificamente para esse

fim, o que traz um certo ônus para o uso da tecnologia. Além disso, alguns desses códigos têm

forte limitação quanto ao volume de informação a ser codificada. Problemas de leitura podem

ocorrer, pois, tradicionalmente, esses códigos não oferecem mecanismos de correção de erro.

2

Além dos problemas já mencionados, o uso de códigos de barras para identificação de

produtos a serem comercializados pode exigir regulamentação junto a alguma empresa que

gerencie o uso desses códigos, garantindo o seu funcionamento em uma região.

Códigos de Barras em duas dimensões (2D) foram criados para tentar enfrentar algumas

das dificuldades dos códigos de barras tradicionais, códigos ditos de uma dimensão (1D). O

princípio de funcionamento desses códigos é semelhante aos dos códigos de barras

tradicionais, sendo que os códigos 2D codificam as informações em barras sobrepostas

verticalmente. As melhorias adicionadas aos códigos de barras 2D permitiram o aumento da

capacidade de armazenamento, já que não se teriam mais apenas barras horizontais, mas sim

informações codificadas na horizontal e vertical. Mecanismos de correção de erro foram

adicionados aos códigos. Além disso, para alguns desses novos códigos 2D, não se faz mais

necessário a utilização de dispositivos específicos para leitura dos códigos e não há mais a

necessidade de intervenção de uma organização reguladora.

O paradigma da computação ubíqua idealizado por Mark Weiser pode ser entendido

como uma computação distribuída realizada por dispositivos que atuam de forma discreta nos

ambientes em que estão inseridos, fornecendo informações a qualquer momento e em todo

lugar. Apesar do conceito de computação ubíqua ter sido apresentado de forma simples a

construção e implantação de aplicações ubíquas é geralmente envolvida por vários desafios.

Um dos requisitos desafiadores para esse tipo de aplicação é o sensoriamento e obtenção dos

dados a serem processados. Esse requisito é bastante comum em aplicações desse domínio e

envolve custos que podem inviabilizar o seu desenvolvimento e utilização. Em geral nas

aplicações ubíquas as funções de sensoriamento são realizadas através do uso de sensores sem

fio, tags de rádio frequência (RFID) ou mesmo através de outros sistemas de coletas de dados,

que são tecnologias ainda muito caras.

Os códigos 2D vêm sendo utilizados cada vez mais e têm permitido a criação de novas

formas de utilização que antes não eram possíveis. Dentre os códigos de barras, o QR Code é

o que mais se destaca. Esse código possui várias vantagens em relação aos demais códigos

existentes, sendo o que comporta maior quantidade de dados, permite correção de erros em

vários níveis, pode ser impresso a um baixo custo, possui flexibilidade quanto ao tamanho de

impressão e um baixíssimo tempo de decodificação.

3

Analisadas as características vantajosas dos QR codes, pode-se propor o seu uso no

desenvolvimento de aplicações ubíquas. Esses códigos podem ser implantados a um baixo

custo em relação às soluções comumente usadas, por exemplo, nas funções de sensoriamento

e descoberta de informações.

O objetivo geral deste trabalho é documentar um estudo sobre as tecnologias de

códigos barras e suas aplicações, buscando delinear novas formas de utilização desses

códigos. Além disso, permitir aos leitores uma compreensão sólida do assunto.

Como objetivos específicos esperam-se: explorar e documentar as principais

tecnologias de códigos de barras existentes, fazer um levantamento sobre o estado da arte,

analisar a característica de ubiquidade identificada nas tecnologias de códigos de barras 2D e

realizar o desenvolvimento de uma aplicação móvel que faça uso de uma das principais

tecnologias de codificação em 2D.

No Capítulo 1, são explorados os diversos tipos de códigos de barras existentes e

detalhadas as características específicas de cada um deles. É também estudada a utilização de

códigos 2D por dispositivos móveis.

No Capítulo 2, é discutido o caráter pervasivo dos códigos de barras em relação aos

conceitos de ubiquidade. Novas propostas de utilização dos códigos 2D em cenários ubíquos

são expostas.

No Capítulo 3, são apresentadas as principais tecnologias envolvidas no

desenvolvimento de aplicações que utilizam códigos de barras 2D para plataformas desktop,

Web e dispositivos móveis.

No Capítulo 4, é apresentado um experimento de desenvolvimento de uma aplicação

móvel que utiliza códigos 2D para localização, em especial a localização indoor suprindo as

debilidades dos GPS nesses cenários.

Por fim, serão apresentadas as conclusões e delineados os trabalhos a serem

desenvolvidos no futuro.

4

CAPÍTULO 2 - TECNOLOGIAS DE CÓDIGOS DE BARRAS

Diversos tipos de códigos de barras foram desenvolvidos desde a criação desta

tecnologia. Neste capítulo, apresenta-se o contexto histórico da criação desta tecnologia e os

principais tipos de códigos existentes delineando-se as características específicas de cada um

deles. Ao final, um estudo da utilização dos códigos 2D em dispositivos móveis é descrito.

2.1 Códigos de Barras

Em 1948, Bernard Silver e Norman Joseph Woodland, motivados pela solicitação do

presidente de uma organização norte-americana da rede alimentícia em desenvolver um

sistema que permitisse ler as informações de um produto no momento da compra, criaram a

primeira solução utilizando tintas ultravioletas. No entanto, essa solução não se demonstrou

eficaz, pois a tinta usada desvanecia e tinha custo elevado1. Esses dois estudantes, na época,

inspirados pelo código Morse, imaginaram que poderiam representar as informações dos

produtos na forma de barras estreitas e barras largas. Isso levou a criação de uma patente

(WOODLAND e SILVER, 1952), que documentava a forma de codificação das informações

dos produtos em barras horizontais ou na forma circular, tal qual ilustrado na Figura 1. Essa

patente levaria, mais tarde, ao desenvolvimento e popularização dos códigos de barras.

1 Barcode. Wikipedia. Disponivel em: <http://en.wikipedia.org/wiki/Barcode>. Acesso em: 07 out. 2010.

5

Figura 1 – Representação dos códigos criada por Silver e Woodland. Adaptado de (WOODLAND e

SILVER, 1952).

Historicamente, outras iniciativas semelhantes foram observadas, com exemplo se

pode mencionar o trabalho de David Collins em tentar criar uma solução para identificação

automática dos vagões na via férrea da Pensilvânia2.

Nos Estados Unidos em 1969, empresas de distribuição de alimentos formaram uma

associação, mais tarde conhecido como Uniform Code Council (UCC) ou GS1 USTM

, e

decidiram procurar estabelecer um padrão de códigos interindustriais (Interindustry Product

Code). Após quatro anos de pesquisa e discussões entre os associados, criou-se o código UPC

– Universal Product Code. Em 1974, entraria para a história a primeira compra utilizando o

UPC (UNIFORM CODE COUNCIL - GS1 US).

Segundo estimativas da GS1 USTM

, em todo planeta são lidos diariamente pelo menos

5 bilhões de códigos de barras (UNIFORM CODE COUNCIL - GS1 US).

Para tornar possível a utilização dos códigos de barras, precisava-se de um dispositivo

que pudesse capturar as informações dos códigos, decodificá-las e transmiti-las para outro

dispositivo (e.g. um computador). O princípio de funcionamento dos leitores de códigos de

barras, dispositivos que realizam as tarefas necessárias já mencionadas, se assemelha a forma

como conseguimos enxergar os objetos. O processo de leitura das barras utiliza-se também

das propriedades de reflexão e refração da luz. A Figura 2 ilustra o princípio de

funcionamento da visão humana, onde os raios de luz refletidos nos objetos chegam até os

olhos e permitem a formação da imagem no cérebro.

2 Barcode. Wikipedia. Disponível em: <http://en.wikipedia.org/wiki/Barcode>. Acesso em: 07 out. 2010.

6

Figura 2 – Princípio de funcionamento da visão (Fonte: http://12dimensao.wordpress.com/tag/ciencia-

e-tecnologia/, acessado em 14/10/2010).

Nos leitores de códigos de barras tradicionais, um laser3 é usado para emissão de um feixe luz

que será direcionado a um código de barras impresso. As propriedades de reflexão e refração

da luz garantem que os raios incidentes nas barras pretas e brancas do código impresso

tenham comportamento diferente e possam ser capturados por um diodo sensível a luz. As

oscilações capturadas pelo fotodiodo são utilizadas para gerar uma representação digital do

código lido. Curiosamente, o feixe emitido pelo laser tem ,a olho nu, a forma de uma linha.

No entanto, isso não é verdade. Os raios são emitidos sequencialmente com um pequeno

deslocamento horizontal a uma velocidade muito alta, formando uma ilusão óptica de uma

linha (BARBOSA NETO e CAMPOS, 2008). A Figura 3 ilustra o processo descrito.

3 Laser é acrônimo para Light Amplification by Stimulated Emission of Radiation, uma tecnologia que permite a

emissão de feixes de luz concentrados a partir de diodos.

7

Figura 3 – Funcionamento dos leitores de códigos de barras a laser (BARBOSA NETO e CAMPOS,

2008).

Além da leitura utilizando-se laser, criaram-se outras técnicas para captura e

decodificação de códigos em imagens e vídeos (LIU, DOERMANN e LI, 2008) (LIU, YANG

e LIU, 2008). Essas novas técnicas permitiram o surgimento de diversos tipos de aplicações, a

serem descritas nos capítulos seguintes deste trabalho.

2.2 Códigos de barras unidimensionais

Nesta subseção, são apresentados alguns dos códigos de barras 1D mais utilizados no

mundo. São detalhadas suas principais características, vantagens e desvantagens.

2.2.1. Universal Product Code – UPC-A

Este código é usado em aplicações de varejo nos Estados Unidos e Canadá. A utilização

desse código é regulada pela empresa GS1 US4. O registro de uma empresa que precise de até

100 códigos de barras, faixa de números únicos, custa pelo menos 760 dólares/ano5. A GS1

possuí filiais representantes em diversos países, inclusive no Brasil, e os custos de registro

podem variar. Outra opção para obter um código UPC-A único é através de empresas já

registradas na GS1 US que revendem o serviço, alternativa mais barata para um número

pequeno de códigos.

4 Informações sobre a organização podem ser encontradas no website: http://www.gs1us.org/ .

5 Informações obtidas através do endereço eletrônico:

http://www.gs1us.org/barcodes_and_ecom/solutions/barcode_%28u.p.c.%29 .

8

Percebe-se que o controle sobre o uso do UPC-A trás vantagens e desvantagens. As

desvantagens são claras: existe a limitação de códigos e o seu custo financeiro. Entretanto,

essa regulação do uso foi o que permitiu a esse código a larga utilização no varejo, já que o

conflito de se ter dois produtos diferentes com o mesmo código é garantidamente evitado.

O UPC-A permite a codificação de até 12 dígitos decimais, sendo cada um deles

representados por sete bits. Além disso, em cada código existem marcações de início, meio e

fim, onde as duas primeiras seguem o padrão de bit 101 e a última 01010. Portanto, cada

código possuí 95 bits.

A ordem dos números codificados também segue uma regra semântica, onde o primeiro

dígito identifica a categoria do produto, os cinco dígitos seguintes identificam o fabricante do

produto seguidos de mais cinco dígitos para identificação do produto. O último dígito é

reservado para guardar informação de verificação do código6. A Figura 4 mostra um exemplo

de código de barra UPC-A, ilustrando a codificação em sete bits de cada dígito e destacando

as barras de guarda de início, meio e fim do código.

Figura 4 - Exemplo de código UPC-A. (Fonte: http://en.wikipedia.org/wiki/Universal_Product_Code ,

acessado em 14/10/2010)

Outra característica importante deste código é a sua limitação de tamanho, pois ele,

nominalmente, tem uma polegada de largura, podendo ser reduzida em até 80% ou aumentada

em 200% sem prejuízo para leitura6.

6 Universal Product Code. Wikipedia. Disponivel em: <http://en.wikipedia.org/wiki/Universal_Product_Code>.

Acesso em: 14 out. 2010.

9

Além das características já mencionadas sobre esse código, é importante adicionar que

ele está especificado na norma ISO/IEC 15420. Essa norma especifica os códigos UPC e

EAN, este segundo é detalhado no subtópico seguinte.

2.2.2. Universal Product Code – UPC-E

O UPC-E é uma das variantes do UPC. Essa variante tem como principais

características o número reduzido de dígitos, contendo apenas oito dígitos, e tamanho de

impressão menor do que a forma tradicional do UPC-A(MEASUREMENT EQUIPMENT

CORPORATION).

Essa variante do UPC-A utiliza-se de técnicas de supressão de zeros para diminuir o

número de dígitos necessários para identificar algum artefato. Esses códigos são utilizados

para identificação de itens pequenos, já que é possível ter-se códigos menores (ver Figura 5).

Figura 5 - Exemplo de código UPC-E (MEASUREMENT EQUIPMENT CORPORATION).

2.2.3. International Article Number – EAN-13

O código EAN-13, versão europeia do UPC, recebeu essa sigla por ser acrônimo de

European Article Number. Apesar do nome do código ter sido alterado para International

Article Number, manteve-se a sigla7.

Esse código também é usado mundialmente, principalmente, na identificação de

produtos de vendas no varejo. A principal diferença entre o EAN-13 e o UPC-A é o número

de dígitos em cada código impresso. O EAN possui 13 dígitos enquanto o UPC, como já

mencionado anteriormente, possui apenas 12.

Os dígitos codificados em um código EAN-13 seguem uma estrutura padrão, dividida

em quatro grupos. Os três primeiros dígitos identificam o país de origem do produto, os

quatro dígitos seguintes identifica a organização filiada a GS1, os cinco dígitos seguintes

7 European Article Number. Wikipedia. Disponivel em:

<http://en.wikipedia.org/wiki/European_Article_Number>. Acesso em: 15 out. 2010.

10

identificam o produto e o último dígito é reservado para ter função de dígito de verificação8.

A Figura 6 ilustra um exemplo de código EAN-13, destacando a função de cada grupo de

dígitos codificados (o código 789 identifica o Brasil).

Figura 6 - Exemplo de código EAN-13. (Fonte:

http://www.devmedia.com.br/articles/viewcomp.asp?comp=13396 , acessado em 15/10/2010)

Assim como o UPC, o código EAN possui algumas variantes. Uma delas é o EAN-8

que tem propósito semelhante ao UPC-E, ser utilizado em objetos que tem espaço muito

limitado para identificação.

Outra variante desse código é o EAN Bookland que tem uma característica de uso

especial, codificam o ISBN9 de publicações (ver exemplo na Figura 7).

Figura 7 - Exemplo de Código EAN Bookland e ISBN.

(Fonte:http://github.com/papercavalier/bookland , acessado em 15/10/2010 )

8 EAN-13. Wikipedia. Disponivel em: <http://pt.wikipedia.org/wiki/EAN-13>. Acesso em: 15 out. 2010.

9 Número Padrão Internacional de Livro (Fonte:

http://pt.wikipedia.org/wiki/International_Standard_Book_Number , acessado em 15/10/2010).

11

2.2.4. Código de barras 2 de 5 intercalados

O código de barras 2 de 5 intercalados é também conhecido como código 25. Esse

código consiste em duas barras espessas em cinco barras utilizadas para cada dígito

codificado e os espaços que intercalam as barras também possuem significado (FEBRABAN,

2010). A norma ISO/IEC 16390:2007 especifica os requisitos dessa codificação, como

dimensões, algoritmos, codificação de dados, e outros parâmetros.

Essa codificação é bastante utilizada em aplicações financeiras, como em boletos

bancários, ficha de compensação, contas de água, luz e telefone. A Figura 8 ilustra um

exemplo.

Esse código possui algumas características que devem ser destacadas, listadas a seguir:

Tamanho variável de código, não possui um limite especificado para tamanho

máximo de dígitos a ser codificado;

Não utiliza dígito verificador;

Requer um número par de dígitos a serem codificados, caso contrário deve ser

adicionado um zero a esquerda para garantir esse requisito.

Figura 8 - Exemplo de código de barras 2 de 5 intercalados (FEBRABAN, 2010).

2.2.5. Código de barras 39

O grande diferencial deste código em relação aos outros tipos de códigos de barras é a

possibilidade de codificação de caracteres alfanuméricos (letras, números e caracteres

especiais).

Esse código é também conhecido como código 3 de 9, pois utiliza uma sequência de

nove elementos, barras ou espaços, dos quais três serão largos e seis estreitos(QUADROS,

2008). A Figura 9 mostra a codificação correspondente a cada um dos caracteres codificáveis

nesse código, onde ―E‖ representa um elemento estreito e o ―L‖ um elemento largo.

12

Figura 9 - Tabela de caracteres no código 39.(QUADROS, 2008)

Além das características mencionadas, o código 39 permite codificar todos os caracteres

ASCII com uma estratégia de utilização de dois caracteres. O caracter ―*‖ é utilizado para

sinalizar o inicio e fim do código de barras, conforme ilustrado na Figura 10. Ele indica o

sentido da leitura do código (FANG, XIANYONG, et al., 2006). O principal problema desse

código é a sua baixa densidade, pois os códigos de barras gerados com esse código são

relativamente maiores do que os gerados com outras codificações semelhantes, como o código

128 que será apresentado a seguir.

13

Figura 10 - Exemplo de código 39 (Fonte: http://edgarddavidson.com/?p=427 , acessado em

18/10/2010).

A especificação desse código está documentada na norma ISO/IEC 16388:2007

(INTERNATIONAL ORGANIZATION FOR STANDARDIZATION - ISO). Atualmente é

muito utilizada na impressão de crachás de identificação e em etiquetas de controle interno,

sistemas de controle de estoques.

2.2.6. Código de barras 128

Este tipo de código de barras é largamente utilizado em diversos tipos de aplicações,

pois é um código, também, alfanumérico e que possuí maior densidade do que os demais

códigos já apresentados.

Este tipo de código ganhou muita importância no Brasil por estar sendo utilizado nos

Documentos Auxiliares das Notas Fiscais Eletrônicas10

(DANFE). A Figura 11 exemplifica a

utilização do código 128 nesse tipo de documento.

A norma ISO/IEC 15417:2007 documenta as especificações de codificação de dados,

dimensões, algoritmos e outros requisitos importantes desse tipo de código

(INTERNATIONAL ORGANIZATION FOR STANDARDIZATION - ISO).

10 http://www.nfe.fazenda.gov.br/portal/assuntoagrupado4.aspx

14

Figura 11 - Exemplo de Código 128 em um DANFE (Fonte:

http://provapraticavb.blogspot.com/2009/05/manual-30-codigo-de-barras-para.html ,Acessado em

18/10/2010).

2.2.7. Código CMC7

O código CMC7 é um padrão de código de barras que possuí a necessidade particular

de ser impresso com uma tinta magnética. É utilizado principalmente para permitir a

automatização na leitura de cheques, a Figura 12 ilustra esse caso de uso (ASSOCIAÇÃO

COMERCIAL DE PEDREIRA - ACEP).

Figura 12 - Exemplo de código de barras magnético CMC7 (Fonte:

http://www.gbnet.com.br/v2/images/fontemicr_cheque_big.png , acessado em 18/10/2010).

2.3 Códigos de barras bidimensionais

Os códigos de barras em uma dimensão possuem, de forma geral, baixa densidade de

dados codificados, já que não utilizam o espaço vertical para codificação das informações.

Comumente, os dados alfanuméricos codificados em um código 1D servem como chave em

15

um banco de dados, dessa forma uma maior quantidade de informações pode ser obtida sobre

um produto através de um sistema acoplado. Os códigos de barras em duas dimensões – 2D –

surgiram como uma alternativa para tentar superar a deficiência dos códigos 1D em relação a

densidade de dados.

A capacidade crescente de informações que podem ser codificadas em um código 2D

permitiu que um novo paradigma de utilização desses códigos surgisse. As informações

relevantes de um produto, por exemplo, podem acompanhá-lo através de um símbolo 2D, sem

a necessidade de uma consulta a um banco de dados adjacente.

A construção de códigos 2D é feita em geral através de duas abordagens,

empilhamento (stacked) ou matriz (matrix-type). Na primeira abordagem o código gerado é

formado por linhas de códigos empilhadas, na qual em cada linha existe um código 1D. Já na

segunda abordagem os códigos gerados tem a forma de uma matriz, na qual cada célula tem

uma representação binária (HEE IL e JOUNG KOO, 2002).

A seguir, apresenta-se três tipos importantes de códigos de barras 2D.

2.3.1. Código PDF-417

O código PDF-417 é um tipo de código 2D de empilhamento. Cada símbolo PDF-417

possui no mínimo 3 linhas de códigos 1D sobrepostas e no máximo 90. Possui alta densidade

de dados, podendo codificar mais de 1100 bytes, 1800 caracteres ASCII ou 2700 dígitos

numéricos dependendo do tipo de dados selecionado para compactação (HEE IL e JOUNG

KOO, 2002).

Figura 13 - Exemplo de utilização do código PDF-417 em documentos oficiais americanos (Fonte:

http://www.pdf417.com/ , Acessado em 19/10/2010).

16

Além das características já mencionadas, a codificação PDF-417 permite a correção de

erros nos símbolos. Todos os detalhes desse padrão de codificação podem ser encontrados na

norma ISO/IEC 15438:2006 (INTERNATIONAL ORGANIZATION FOR

STANDARDIZATION - ISO).

2.3.2. Código Data Matrix

O código de barras 2D Data Matrix é um tipo de código que utiliza uma abordagem

em matriz para construção dos símbolos. É um dos mais conhecidos códigos de barras 2D e

largamente utilizado nas industrias automotiva, aeroespacial e de computadores (IEEE, 2005).

É um código que possuí alta densidade de dados e pode ser impresso em áreas muito

pequenas.

Esse código foi criado no final da década de 1980 nos Estados Unidos pela RVSI

Acuity CiMatrix Inc.11

(Empresa atualmente pertencente a Siemens AG). Essa forma de

representação foi reconhecida pela ISO e documentada na norma ISO/IEC 16022:2006. Esse

código já foi aberto ao domínio público e a sua utilização é livre de royalties ou taxas de

licenciamento.

As principais características desse código são [104]:

Alta capacidade de dados, podendo armazenar em um único símbolo até 3116

dígitos numéricos, 2334 caracteres alfanuméricos e 1556 caracteres ASCII de 1

byte;

Flexibilidade de codificação, pois permite codificar dados puramente

numéricos, caracteres alfanuméricos ou ainda caracteres ASCII;

Adaptável, no sentido de poder ser impresso em diversas formas (adaptadas ao

tipo de produto que está identificando), já que requer apenas 20% de contraste

para uma leitura precisa;

Independente de orientação, o leitor pode ser rotacionado sem problemas para

leitura;

Identificação automática de multi-símbolos, permite reconhecimento e

decodificação de vários símbolos em uma mesma imagem capturada.

Cada símbolo Data Matrix é composto por alguns elementos estruturais essenciais para

a leitura correta dos símbolos, conforme ilustrado na Figura 14.

11 http://www.nema.org/media/ind/20051006c.cfm

17

Figura 14 - Exemplo de Data Matrix com destaque aos elementos estruturais (Adaptado de:

https://www.upccode.net/2d_data_matrix.html ,Acessado em 20/10/2010).

2.3.3. Código “QR Code”

O código QR Code é um método de codificação em matriz desenvolvido no Japão pela

Denso Corporation em 1994. O nome QR é acrônimo para Quick Response, que revela uma

das principais características desse código que é a rapidez para leitura e decodificação.

Esse código foi reconhecido como padrão e documentado na norma ISO/IEC

18004:2006 (INTERNATIONAL ORGANIZATION FOR STANDARDIZATION - ISO).

Portanto, o padrão de codificação é aberto ao domínio público, sendo restrito, no entanto, o

uso da marca registrada ―QR Code‖ como propriedade da Denso Wave Incorporated no

Japão, Estados Unidos, Austrália e Europa12

. O símbolo QR Code não é afetado por nenhuma

licença ou registro, somente a expressão ―QR Code‖ é registrada (DENSO WAVE INC.).

Esse tipo de código vem sendo largamente utilizado em diversos tipos de aplicações,

como controle industrial, aplicações de logística, sistemas de vendas e várias outras

aplicações inovadoras que serão exploradas no Capítulo 2.

Um símbolo codificado com esse padrão comporta até 7089 dígitos numéricos, 4296

caracteres alfanuméricos, 2953 bytes ou 1817 caracteres Kanji13

(LIU, YANG e LIU,

2008)(DENSO WAVE INC.). Portanto, esse código é o que suporta maior quantidade de

informação dentre os já apresentados neste trabalho. Essa característica permite que novos

tipos de aplicação explorem essa capacidade de armazenamento de dados.

12 QR Code é uma marca registrada da DENSO WAVE INCORPORATED.

13 Caracteres de origem chinesa, maiores informações em http://pt.wikipedia.org/wiki/Kanji ,acessado em

20/10/2010.

18

Esse padrão possui também mecanismos de detecção e correção de erros em quatro

níveis (L, M, Q e H em ordem crescente de capacidade de recuperação). O nível mais alto

permite recuperação de até 30% da informação codificada em um símbolo (LIU, YANG e

LIU, 2008) (DENSO WAVE INC.).

Uma grande vantagem do QR Code é que a leitura dos símbolos capturados é

realizável sem perdas em qualquer direção, pois os padrões de reconhecimento estabelecidos

para esse código permitem aos decodificadores rotacionar a imagem de forma adequada. A

Figura 15 ilustra os padrões funcionais presentes em cada símbolo QR code.

Figura 15 - Elementos estruturais de um símbolo QR code (Adaptado de: http://www.qrme.co.uk/qr-

code-resources/understanding-a-qr-code.html , Acessado em 20/10/2010).

2.4 Util ização de códigos 2D em dispositivos móveis

2.4.1. Introdução

O baixo custo, alta capacidade de armazenamento de dados e criação de novos

algoritmos para captura e decodificação dos códigos de barras 2D fomentaram a

diversificação da utilização desses códigos.

19

Com o desenvolvimento dos códigos novas formas de leitura foram criadas. É possível

agora a leitura de símbolos sem a necessidade de um equipamento a laser desenvolvido

especificamente para esse fim. A leitura de códigos 2D através de imagens capturadas por

câmeras tornou-se um exemplo real de outra forma de leitura dos códigos de barras. Por

consequência, os dispositivos móveis, além da redução de custos na utilização de códigos 2D,

aportam a flexibilidade de utilização e uma variedade de aplicações em crescente

desenvolvimento.

A evolução observada nos dispositivos móveis, como celulares e computadores

portáteis, permitiu que esses dispositivos fossem dotados de várias outras tecnologias

embarcadas, em especial: câmeras digitais.

Hoje no Brasil, tem-se mais de 187 milhões de telefones celulares ativos, segundo

Anatel14

, e grande parte deles estão aptos a abrigar soluções para a leitura de algum tipo de

código de barras, devido a presença de câmeras nos dispositivos. Portanto o estudo de

soluções e novas formas de uso do QR Code com o auxilio de dispositivos móveis torna-se

fundamental por apresentar um diferencial de inovação para as aplicações móveis.

2.4.2. Algoritmo de Leitura

Conhecidas as vantagens oferecidas pelo padrão de codificação QR Code, sendo esta a

solução que demonstra estar mais adequada às novas aplicações móveis, buscou-se entender

os algoritmos e técnicas que permitem a leitura dos símbolos codificados em dispositivos

móveis.

Entretanto, para melhor compreender o processo de leitura dos símbolos, faz-se

importante o conhecimento do processo de codificação dos dados. Segundo Yue Liu e

Mingiun Liu, o primeiro passo nesse processo é a codificação da entrada de dados de acordo

com o modo mais eficiente e o fluxo de bits que se deseja formar. Em seguida, esses fluxos

gerados são divididos em palavras (codewords, em inglês). Cada palavra será dividida

novamente em blocos, que conterão palavras de correção de erro. Todas as palavras geradas

são adicionadas a uma matriz seguindo um padrão estabelecido. Por fim, são adicionados os

padrões funcionais e finalizada a construção do símbolo QR code (LIU e LIU, 2006).

14 http://economia.estadao.com.br/noticias/economia,numero-de-celulares-no-pais-atinge-187-milhoes-em-julho-

diz-anatel,32433,0.htm ,Acessado em 20/10/2010.

20

Yue Liu, Ju Yang e Mingjun Liu propõe um algoritmo para leitura dos códigos QR

(LIU, YANG e LIU, 2008). Na proposta dos autores, o algoritmo possui os passos mostrados

na Figura 16: conversão da imagem capturada em escala de cinza, ―binarização‖

(binarization, em inglês), filtragem, orientação (podendo haver ou não uma etapa de rotação

da imagem), localização de padrões de alinhamento, geração da grade de células da matriz do

código, correção de erros e, finalmente, a decodificação.

Figura 16 – Fluxograma de um algoritmo de leitura de um QR code. Adaptado de (LIU, YANG e LIU,

2008).

Na primeira etapa, tem-se a conversão da imagem colorida capturada no dispositivo

móvel para a escala de cinza. Faz-se isso pois as informações de cor não são relevantes para

leitura dos símbolos. No passo de ―binarização‖, são aplicadas técnicas de thresholdings15

para tratar os diferentes níveis de iluminação. A filtragem é responsável pela remoção dos

ruídos da imagem. A etapa de detecção de bordas é suprimida para a leitura dos códigos QR,

já que estes contêm marcações para facilitar nessa tarefa. Os passos de orientação e rotação

estão muito relacionados, sendo no primeiro realizada a verificação da orientação do código

na imagem capturada através dos três ou quatro cantos do símbolo e no segundo a rotação da

imagem, caso necessário. Na etapa seguinte, de localização de padrões de alinhamento, são

identificados os padrões do código e localizado o centro do símbolo. Após todos os padrões

identificados é gerada uma grade de leitura sobre o símbolo que permite a leitura adequada.

Por fim, são realizadas as etapas de correção de erro e decodificação (esta última é uma

operação inversa a codificação já descrita) (LIU, YANG e LIU, 2008).

15 Palavra do inglês que carrega o significado relacionado a um limite ou limiares.

21

2.5 Conclusão

Este capítulo apresentou os conceitos e principais técnicas utilizadas nas

tecnologias de código de barras. Na Tabela 1 é apresentado uma análise comparativa

destas técnicas.

O código 2D do tipo QR Code é o que se adéqua para o uso em aplicações móveis

e ubíquas devido a simples exigência de uma câmera digital para a leitura e pela densidade

de informação que pode ser armazenada em um símbolo desse código.

Tabela 1 - Comparativo entre os códigos de barras apresentados no capítulo 1.

Código Tipo Numérico16 Alfanumérico9 Binário9 Kanji9 Características Principais

UPC-A Linear (1D) 12 dígitos N/A N/A N/A Padrão de identificação de

produtos de varejo.

UPC-E Linear (1D) 8 dígitos N/A N/A N/A Versão em escala reduzida do

UPC-A.

EAN-13 Linear (1D) 13 dígitos N/A N/A N/A Padrão de identificação de

produtos de varejo.

2 de 5

intercalados

Linear (1D) Não limitado17 N/A N/A N/A Não requer dígito verificador,

tamanho variável, baixa densidade

de dados.

Código 39 Linear (1D) Não limitado10 Não limitado10 N/A N/A Permite codificar dados

alfanuméricos, tamanho variável,

baixa densidade de dados. Codifica

dados ASCII com 2 caracteres.

Código 128 Linear (1D) Não limitado10 Não limitado10 N/A N/A Permite codificar dados em ASCII

diretamente, melhor densidade de

dados em 1D e versatilidade.

CMC7 Linear (1D) Não limitado10 N/A N/A N/A Requer uso de tinta magnética.

PDF-417 Empilhado

(2D)

2710 1850 1018 554 Alta densidade de dados.

Data Matrix Matriz (2D) 3116 2355 1556 778 Alta densidade de dados,

Imprimível em escalas pequenas.

QR Code Matriz (2D) 7089 4296 2953 1817 Alta densidade de dados,

Imprimível em escalas pequenas e

rápida leitura.

16 Capacidade de Armazenamento de dados

17 No entanto a limitação física de impressão e leitura limita esse código a uma baixa densidade de dados.

22

CAPÍTULO 3 - UBIQUIDADE DOS CÓDIGOS E SUAS APLICAÇÕES

Neste capítulo, são analisadas as características gerais dos códigos de barras em

comparação aos conceitos de ubiquidade e pervasividade. Alguns casos de utilização desses

códigos e de suas aplicações são apresentados.

3.1 Ubiquidade e Códigos de Barras 2D

A qualidade de algo que está ou pode estar em muitos lugares ao mesmo tempo é uma das

definições dicionarizadas para a palavra ubiquidade. Essa palavra foi usada por Mark Weiser

para definir o conceito de Computação Ubíqua. Segundo Weiser as tecnologias mais

profundas e duradouras são aquelas que desaparecem, dissipam-se no cotidiano das pessoas

até tornarem-se indistinguíveis (WEISER, 1991).

Segundo (STREITZ e NIXON, 2005) apud (ROCHA, 2007), o computador nesse

paradigma da computação pode ―desaparecer‖ de duas naturezas: física e mental. O

―desaparecimento‖ de natureza física tem relação ao tamanho físico, do mundo real,

relacionada à miniaturização dos dispositivos enquanto na natureza mental está relacionado

com a forma com que os usuários interagem e percebem esses dispositivos no seu dia-a-dia.

A computação ubíqua poderia ser entendida, de forma simplificada, como sendo uma

computação distribuída que é realizada por dispositivos que atuam de forma discreta nos

ambientes onde estão localizados, fornecendo informação em qualquer lugar e a todo instante.

Percebe-se que os conceitos de ubiquidade apresentados podem ser, de certa forma,

aplicados ao uso dos códigos de barras. Esses códigos estão presentes nas atividades diárias

de muitas pessoas de forma que já são quase imperceptíveis. Portanto, seguem o conceito de

―desaparecimento‖ mental já apresentado. A ligação permitida pelo uso dessa forma de

identificação e o mundo virtual, dos computadores, já foi também fortemente absorvida pelas

pessoas.

23

Além dos conceitos apresentados sobre computação ubíqua, deve se acrescentar que na

criação de aplicações desse domínio a forma com que informações de contexto são capturadas

e tratadas pelos dispositivos é muito importante. Informações de contexto são aquelas que

trazem dados sobre o ambiente, usuário ou próprio sistema. A propriedade de sensibilidade ao

contexto é um requisito fortemente desejável para aplicações ubíquas, pois possibilita

adaptação do sistema para melhor atender aos requisitos esperados (ROCHA, 2007).

Contexto, segundo (DEY e ABOWD, 2000) apud (VIANA, MIRON, et al., 2010), é

―qualquer informação que possa ser usada para caracterizar a situação de uma entidade. Uma

entidade é uma pessoa, lugar ou objeto que é considerado relevante para uma interação entre

um usuário e uma aplicação, incluindo o usuário e a aplicação em si‖. Percebe-se que os

códigos de barras podem ser usados como fonte de obtenção de informações de contexto,

algumas aplicações que serão apresentadas no tópico 3.2 comprovarão essa afirmação.

O conceito de ―pervasividade‖18

também está muito relacionado aos conceitos de

ubiquidade já apresentados. Esse termo está relacionado à característica da computação

pervasiva de permear nos ambientes. O propósito primeiro desse paradigma da computação

pode ser sintetizado como sendo a oferta de serviços para os usuários ou outros sistemas de

forma tranquila em um momento oportuno. Alguns estudos publicados analisam as

características de ubiquidade e ―pervasividade‖ com os códigos de barras, como em (LIU,

DOERMANN e LI, 2008), (KATO e TAN, 2007) e (HUANG, CHANG e SANDNES, 2009).

Outra característica importante que deve ser destacada dos códigos de barras é a

posssibilidade de utilização para troca de informações entre diferentes tipos de mídia. Em

(LIU, DOERMANN e LI, 2008) por exemplo, os códigos 2D são utilizados para envio de

conteúdos multimídia através de transmissões de sequencias de códigos em vídeos a serem

capturadas pelos dispositivos móveis. Os códigos são salvos e decodificados gerando algum

conteúdo multimídia.

Apesar das características já mencionadas de ―pervasividade‖, ―desaparecimento‖

mental, possibilidade de miniaturização e larga utilização ainda é plausível de se

questionarem sobre a característica de ubiquidade dos códigos de barras, em especial os 2D

(pois em(KATO e TAN, 2007) esse tipo de código estaria mais adequado para aplicações

pervasivas). Isso se deve a concepção de que na computação ubíqua os computadores

18 Relacionado ao termo pervasive computing do inglês.

24

estariam espalhados de forma imperceptível aos usuários realizando tarefas que poderiam

ajudar aos seres humanos nas suas atividades corriqueiras.

3.2 Novas aplicações para os códigos de barras

A criação de diversas aplicações que exploram as características e vantagens dos

códigos de barras 2D comprovam certa aderência dessas tecnologias aos conceitos de

ubiquidade e ―pervasividade‖ apresentados no primeiro tópico deste capítulo.

Percebe-se que muitas das aplicações encontradas na literatura extrapolam o propósito

inicial dos códigos de barras (i.e., utilização somente para identificação de produtos). Essas

novas aplicações demonstram que ainda se pode explorar o uso dos códigos de barras de

diversas formas inovadoras. Portanto, é interessante ter conhecimento sobre essas aplicações,

para compreender algumas possibilidades já exploradas e pensar em novas formas de

utilização que tragam contribuições cada vez maiores para o domínio de Sistemas Ubíquos.

3.2.1. Aplicações Cross-media

Liu, Doermann e Li propuseram em (LIU, DOERMANN e LI, 2008) uma estratégia,

chamada VCode, para transferência de dados multimídia através do uso de códigos de barras.

Na estratégia proposta, os arquivos multimídia são codificados em vários símbolos de códigos

2D, em seguida, são serialmente apresentados aos usuários através de algum display plano

(TV ou computador). A sequência de símbolos capturados pelos usuários através da câmera

dos seus celulares pode ser decodificada, a fim de reconstruir o arquivo multimídia e

armazenar no dispositivo móvel. A Figura 17 ilustra o funcionamento da estratégia.

Figura 17 - Exemplo de uso do VCode. (a) Ringtone é codificado e exibido símbolo a símbolo para o

usuário, (b,c) o usuário procede no download do arquivo multimídia, (d) o arquivo é reconstruído e

executado(LIU, DOERMANN e LI, 2008).

25

Já em (HUANG, CHANG e SANDNES, 2009), são apresentadas formas para troca de

informações entre dispositivos de plataformas diferentes, smartphones e telefones com a

plataforma Java. Nessa publicação, são apresentados dois estudos de casos:

i. o primeiro é um sistema de assistência ao viajante (Traveler Assistant System),

que é um tipo de guia de visitas móvel que permite o compartilhamento, entre

os usuários, de dados sobre os lugares visitados através de QR codes;

ii. o segundo estudo de caso é um sistema de busca de informações de pássaros

(Bird Information Searching System), que é usado para prover informações

educativas para turistas e estudantes e permite a troca de informações entre os

usuários através do uso de QR Codes.

3.2.2. Aplicações de Mobile Learning

O rápido crescimento no uso de dispositivos móveis fomentou uma nova modalidade

de educação a distância chamada Mobile Learning (M-Learning). Esse termo é utilizado para

classificar algum processo de aprendizagem que faça uso de alguma tecnologia móvel. O

grande diferencial desse modelo de aprendizagem é que o aprendiz pode interagir no processo

sem estar em um lugar fixo.

O segundo estudo de caso apresentado em (HUANG, CHANG e SANDNES, 2009), já

relatado no subtópico 3.2.1, pode ser caracterizado, de certo modo, como uma aplicação

educacional móvel (M-Learning).

Em (CHU e LIU, 2007) são relatadas as experiências com a utilização de códigos de

barras 2D em uma aplicação móvel e sensível ao contexto para o ensino da língua inglesa, a

HELLO (Handheld English Language Learning Organizations). Nesta experiência, os

estudantes andam pelo campus portando PDAs19

, os quais usam para capturar os símbolos QR

espalhados em zonas de aprendizado. Os símbolos capturados são decodificados e as

informações obtidas são usadas para fazer a correspondência entre os materiais de ensino

armazenados no servidor da aplicação e o local atual do usuário. A Figura 18 ilustra o

processo proposto pelos autores. Segundo eles, após um experimento de quatro semanas de

utilização da aplicação por estudantes, resultou em constatações de que o sistema proposto era

muito útil para o aprendizado da língua estrangeira e, mais ainda, que os códigos de barras 2D

eram úteis e interessantes para prover experiências de aprendizado sensíveis ao contexto.

19 Sigla para o termo inglês Portable Digital Assistant.

26

Figura 18 - Cenário sensível ao contexto para a HELLO (CHU e LIU, 2007).

3.2.3. Aplicações de Segurança

Para exemplificar as aplicações dos códigos de barras na área de segurança da

informação pode-se citar a proposta de um sistema de validação (―anti-falsificação‖) de

certificados baseados em informações biométricas codificadas em QR Codes, descrita

em(LIU, 2010) ou uso para conferência de certificados digitais (VICENTINI, AVELAR, et

al., 2007).

Outra proposta interessante de uso do QR code na área de segurança foi publicada em

(CONDE-LAGOA, COSTA-MONTENEGRO, et al., 2010). Os autores propõem um modelo

de utilização de Tickets eletrônicos – eTicket – seguros em QR codes, com uso de

informações criptografadas. Na proposta, o usuário ao adquirir um eTicket recebe um token

que é criptografado em conjunto com uma senha fornecida pelo usuário para gerar as

informações a serem codificadas em um símbolo QR. No momento do uso do eTicket, o

usuário mostra através do seu dispositivo móvel o QR code gerado a um receptor, que solicita

então a senha usada para decifrar as informações do símbolo adequadamente, validando todo

o processo. O passo a passo do modelo proposto pelos autores é ilustrado na Figura 19.

27

Figura 19 – Modelo de Tickets Eletrônicos baseados em QR codes(CONDE-LAGOA, COSTA-

MONTENEGRO, et al., 2010).

3.2.4. Aplicações Industriais

O uso de códigos 2D também pode ser observado em processos industriais, conforme

demonstrado em (YU, WANG, et al., 2004). Nesta publicação, os autores propõem um

algoritmo para utilização desses códigos barras no processo de controle de qualidade na

produção de placas de circuitos impressos ou componentes eletrônicos. Na Figura 20, é

ilustrado um exemplo de uso de um símbolo DataMatrix para codificar informações de

controle de qualidade de produção em uma placa de circuito eletrônico.

28

Figura 20 - Exemplo de uso do código Datamatrix em placas de circuitos eletrônicos.(Adaptado de:

http://www.automation.com/resources-tools/articles-white-papers/bar-code-rfid-automatic-

indentification/data-matrix-expanding-the-second-dimension-of-data-capture , Acessado em

25/10/2010)

3.2.5. Aplicações de Acessibilidade

Uma aplicação de acessibilidade interessante é proposta por Al-khalifa em (AL-

KHALIFA, 2008), na qual são utilizados QR codes para ajudar a pessoas cegas a obterem

mais informações sobre objetos previamente identificados. Na proposta do autor, os códigos

2D são fixados nos objetos e identificados com um selo em Braile, dessa forma as pessoas

cegas podem identificar onde está localizado o código no objeto o qual deseja saber mais

informações. O sistema proposto requer dos usuários, além do dispositivo móvel, uma

conexão que permita acessar os conteúdos multimídias, que irão fornecer aos usuários as

descrições dos objetos. Na Figura 21 é ilustrada uma visão geral do funcionamento da

proposta do autor.

29

Figura 21 - Visão geral de funcionamento do sistema proposto (AL-KHALIFA, 2008).

3.2.6. Aplicações Comerciais e de Marketing

Diversos novos tipos de aplicações comerciais passaram a explorar as vantagens dos

códigos de barras 2D. Um exemplo bem prático foi a adoção desses códigos de barras no

processo de checkin em algumas companias aéreas brasileiras, a exemplo da TAM20

.

Algumas outras aplicações interessantes são apresentadas em (EBLING e CÁCERES,

2010). Uma delas é um sistema móvel que faz a busca e comparação de preços de um produto

baseado na leitura do seu código de barras. A Figura 22 exemplifica a aplicação apresentada

pelos autores.

Além das aplicações já citadas, torna-se cada dia mais comum encontrarem-se códigos

de barras 2D em objetos que fazem parte do dia-a-dia das pessoas, como jornais21

, revistas22

,

listas telefônicas, cartões de visita, produtos fastfood23

e até mesmo em comerciais de

televisão.

20 Maiores informações sobre essa notícia podem ser encontradas em

http://www.tam.com.br/b2c/vgn/v/index.jsp?vgnextoid=64a8830382b1b210VgnVCM1000009508020aRCRD ,

acessado em 25/10/2010.

21 http://www.mobilepedia.com.br/prod/2008/12/12/qr-codes-no-jornal-a-tarde

22 http://www.mobilepedia.com.br/cases/qr-code-na-revista-viagem-e-turismo

23 http://calorielab.com/news/2006/09/15/mcdonalds-tags-food-with-high-tech-nutrition-information/

30

Figura 22 - Exemplo de aplicação que faz a comparação de preços de um produto. (a) O usuário

captura um código de barras, (b) a aplicação decodifica o código e faz a busca dos preços do mesmo

produto em outras lojas(EBLING e CÁCERES, 2010).

3.2.7. QR Codes Sensíveis ao Contexto

De posse da noção sobre o conceito de contexto (seção 3.1), pode-se classificar várias

das aplicações apresentadas anteriormente como sensíveis ao contexto. Entretanto, em

algumas situações, os códigos de barras também podem ter o seu significado sensível ao

contexto, como apresentado em (ROUILLARD e LAROUSSI, 2008). Nesse trabalho, os

autores propõem um ambiente de aprendizado pervasivo e adaptativo baseado em QR codes

contextuais. A principal diferença na proposta dos autores em relação ao uso tradicional dos

QR codes é a adição de informações XML aos símbolos, permitindo assim pontos de privados

de variação de valores nos símbolos previamente impressos. A Figura 23 apresenta como são

organizados os conteúdos dentro de um QR code contextual.

31

Figura 23 - Proposta de QR code contextuais (ROUILLARD e LAROUSSI, 2008).

Portanto , exemplificando a proposta de Rouillard e Laroussi pode-se criar um símbolo

QR code que, ao ser lido, a aplicação substitua as partes privadas do símbolo por informações

do contexto. Logo, com um único símbolo QR pode, por exemplo, ser apresentado a

mensagem ―Carlos, bom dia!‖ ou ―Windson, boa tarde!‖, dependendo das informações de

contexto na leitura do código. Neste exemplo, as informações que estariam codificadas no

símbolo QR poderiam ser ―<nome>‖ e ―<hora>‖ e as mensagens mostradas aos usuários

teriam sido derivadas através da adição das informações de contexto computadas pela

aplicação.

3.3 Conclusão

Neste capítulo, foram apresentados e discutidos os principais conceitos de ubiquidade e

―pervasividade‖, ao passo que se relacionavam com as características dos códigos de barras,

em especial os 2D. Neste trabalho, não se chegou a uma conclusão definitiva sobre a

adequação do termo ubiquidade para os códigos de barras, entretanto pode ser percebido que a

utilização desses códigos em conjunto com outros sistemas pode permitir a construção de

aplicações que sejam definidas como ubíquas.

32

Além disso, foram apresentadas algumas aplicações que ultrapassaram o propósito de

identificação de produtos dos códigos de barras, e mostrou-se que é possível criar novas

aplicações que explorem mais ainda as vantagens dos QR Codes.

Não foi alvo do estudo realizado a análise de outras tecnologias ainda mais avançadas

de identificação como RFID24

, que podem estar ainda mais próximos dos conceitos de

ubiquidade apresentados. Apesar de não terem sido realizadas análises empíricas sobre o uso

de RFID na construção de sistemas ubíquos, acredita-se que o custo monetário envolvido no

uso dessa tecnologia é uma das principais desvantagens em relação ao uso dos códigos de

barras.

24 Tecnologia de identificação baseada em Tags que respondem a sinais de rádio frequência.

33

CAPÍTULO 4 - FERRAMENTAS PARA O DESENVOLVIMENTO DE

APLICAÇÕES MÓVEIS QUE USAM QR CODES

Neste capítulo, são apresentadas algumas ferramentas que auxiliam no desenvolvimento

de aplicações que fazem uso de tecnologias de códigos de barras em 2D. Em especial, são

detalhadas as soluções reusáveis no sistema operacional Android.

4.1 Introdução

Diversos tipos de arquiteturas podem ser usadas na construção de aplicações móveis. Sistemas

web adaptados sendo acessados através de dispositivos móveis, aplicações desktop sendo

utilizadas para processamento e execução de alguma tarefa solicitada por um DM ou a

utilização de aplicações stand-alone em celulares são alguns cenários possíveis que ilustram a

utilização de diferentes arquiteturas de aplicações móveis.

O desenvolvimento de uma aplicação móvel pode ser uma tarefa muito dispendiosa e

demorada, devido as características destes dispositivos (heterogeneidade, recursos de

processamento e memória restritos). Entretanto, o desenvolvimento pode se tornar mais eficaz

e eficiente com o reuso de boas soluções já desenvolvidas. A área de Reuso de Software é

uma das subáreas da Engenharia de Software que estuda as formas de se desenvolver

softwares minimizando os custos e maximizando os benefícios através do reuso de artefatos

previamente construídos, sejam eles códigos, documentos ou conhecimentos. Bibliotecas de

classes, componentes de software, frameworks, middlewares e linhas de produto de software

são exemplos de soluções já desenvolvidas na área de reuso de software que ajudam a tornar o

desenvolvimento de software em geral, e ubíquo, mais eficiente.

Uma vez que o reuso de soluções é uma das formas de se melhorar o desenvolvimento

de aplicações, sejam elas móveis ou não, algumas soluções reusáveis relacionadas ao uso de

QR Codes em diferentes plataformas são apresentadas nos tópicos seguintes deste capítulo.

34

4.2 Open Source QR Code Library

Este projeto é uma biblioteca para decodificação e codificação de códigos QR, que

segue as normas JIS-X-0510 e ISO/IEC1800. A biblioteca é distribuída sob a licença GPL

versão 2 25

e foi desenvolvida para o uso no desenvolvimento de aplicações com a linguagem

Java. Ela é suportada pelas plataformas: J2SE, J2ME MIDP2.0/CLDC1.0. A biblioteca

também oferece suporte a correção de erro e pré-processamento de imagens, garantindo

melhor desempenho no seu uso(YANBE, 2010). A Figura 24 apresenta um exemplo de

aplicação que usa a biblioteca para decodificação de QR Codes em imagens.

Figura 24 - Exemplo de uma aplicação que faz uso da biblioteca Open Source QR Code Library(YANBE,

2010).

Outra característica importante dessa biblioteca é que ela já foi portada para outros

ambientes de programação como Python26

e C#27

. Além disso, algumas aplicações exemplo

são disponibilizadas, facilitando o seu aprendizado. Na Figura 25, são apresentados exemplos

de uso da biblioteca portada para C#.

25 Os termos da licença estão disponíveis em http://www.gnu.org/licenses/gpl-2.0.html , acessado em

27/10/2010.

26 Mais informações podem ser encontradas em http://pyqrcode.sourceforge.net/, acessado em 27/10/2010.

27 Mais informações podem ser encontradas em http://www.codeproject.com/KB/cs/qrcode.aspx , acessado em

27/10/2010.

35

Figura 25 - Exemplos de uso da biblioteca em .NET Windows e Windows Mobile (Fonte:

http://www.codeproject.com/KB/cs/qrcode.aspx , acessado em 28/10/2010).

4.3 Google Chart API

Essa API (Application Programming Interface), criada e mantida pela empresa Google

Inc., é composta por um conjunto de operações para geração de gráficos e por um serviço web

para criação desses gráficos. Os gráficos são criados a partir das requisições HTTP feitas.

Portanto, o usuário deve criar uma requisição contendo os parâmetros para criação do gráfico

a ser gerado. No caso deste trabalho, foi testada a geração de símbolos QR Code através do

navegador. Foram adicionados a URL do serviço de geração de gráficos três parâmetros,

conforme explicado:

i. ―cht=qr‖, para indicar que o gráfico a ser gerado deve ser um QR Code;

ii. ―chs=200x200‖, para indicar o tamanho em pixels do símbolo a ser gerado;

iii. ―chl=teste‖, para fornecer o conteúdo a ser codificado.

O gerador de gráficos, por sua vez, se encarrega de processar todos os parâmetros

recebidos e retornar para o usuário o símbolo QR Code gerado. Portanto, esse serviço pode

ajudar para aplicações que requerem a criação dinâmica de códigos QR, já que esse tipo de

codificação está contemplado nessa API como elementos gráficos28

. A Figura 26 exemplifica

o uso dessa API.

Para o reuso deste serviço em aplicações móveis no sistema operacional Android,

pode-se utilizar as bibliotecas já disponíveis no próprio SDK (Software Development Kit),

28 Detalhes sobre o uso da API para criação de QR codes pode ser encontrada na página

http://code.google.com/intl/pt-BR/apis/chart/docs/gallery/qr_codes.html , acessada em 27/10/2010.

36

para se criar requisições HTTP e através delas receber os códigos QR gerados. Uma outra

alternativa, pode ser através do uso de intents, usando o navegador do próprio sistema

operacional Android para criar-se, seguindo a mesma lógica apresentada anteriormente, os

QR Codes. Um Intent é um recurso de abstração da plataforma Android que permite a

execução de códigos entre aplicações diferentes(GOOGLE INC., 2010).

Figura 26 - Exemplo de QR Code com a palavra “teste” gerado através de requisição HTTP.

4.4 Biblioteca Libqrenconde

Essa é uma biblioteca de código aberto que foi desenvolvida na linguagem de

programação C29

. A Libqrencode é voltada para o uso em sistemas operacionais baseados em

Unix, podendo ser compilada e executada independentemente. Ela permite somente a

codificação de informações em QR codes, pois a decodificação não foi implementada. Essa

biblioteca também foi portada para outras linguagens, como: Phyton, Haskell, Ruby e PHP.

4.5 PEAR Image_QRCode

Em 1999, Stig S. Bakken criou o projeto de um repositório para distribuição de

componentes PHP reusáveis chamado PEAR (PHP Extension and Aplication Repository)

(PEAR GROUP, 2010). O projeto tem como objetivos fornecer: uma biblioteca de código

aberto, um sistema de distribuição de código e gerência de pacotes (chamado Pyrus)30

, um

padrão para escrita de códigos em PHP, uma biblioteca para extensão do PHP (PECL – PHP

Extension Community Library) e o suporte online para a comunidade de programadores PHP.

Em janeiro de 2010, foi lançada a biblioteca Image_QRCode que permite aos programadores

29 Mais detalhes podem ser encontrados na página http://fukuchi.org/works/qrencode/index.en.html , acessada

em 27/10/2010.

30 http://pear2.php.net/PEAR2_Pyrus , acessado em 28/10/2010.

37

PHP criarem QR Code em suas aplicações, assim pode-se criar na Web códigos QR

dinâmicos. Essa biblioteca possui a limitação de somente codificar os dados em símbolos QR,

não sendo possível realizar com ela a decodificação. Como vantagens dessa biblioteca pode-

se citar a facilidade no uso e implantação31

.

4.6 Biblioteca ZXing

A ZXing é uma biblioteca de código aberto, distribuída sob a licença Apache versão 2,

implementada em Java. Ela permite a leitura de código de barras em dispositivos móveis, em

especial telefones celulares. Essa biblioteca tem como diferencial o suporte a diversos tipos de

códigos de barras, conforme listado:

UPC-A e UPC-E;

EAN-8 e EAN-13;

Code 39;

Code 93;

Code 128;

QR Code;

ITF;

Codabar;

RSS-14 (todas as variantes);

Data Matrix;

PDF 417 (na qualidade 'alpha').

Outro diferencial dessa biblioteca é que ela pode ser usada também para codificação, e

não somente decodificação, de dados em QR Codes. Além disso, já são disponibilizados na

internet uma página com um gerador32

e um leitor33

de símbolos QR implementados com esta

biblioteca. A ZXing oferece suporte a plataformas J2SE, J2ME e Android. O suporte a outras

plataformas não são mantidos de forma regular, mas pode-se encontrar no site do projeto34

31Um exemplo de como gerar um QR Code com essa biblioteca pode ser encontrado na página

http://www.porkaria.com.br/2010/04/24/gerando-qr-code-com-php/ , acessado em 28/10/2010.

32Gerador disponível no endereço eletrônico http://zxing.appspot.com/generator/ , acessado em 28/10/2010.

33 Leitor disponível no endereço eletrônico http://zxing.org/w/decode.jspx , acessado em 28/10/2010.

34Disponível no endereço eletrônico http://code.google.com/p/zxing/ , acessado em 28/10/2010.

38

algumas referências para módulos em outras linguagens. Na página de distribuição da

biblioteca são disponibilizados vários exemplos e componentes prontos para o uso, o que

ajuda muito na etapa de desenvolvimento de aplicações.

4.7 Conclusão

Neste capítulo foram apresentadas diversas ferramentas, em especial bibliotecas de

códigos, que ajudam no desenvolvimento de aplicações que usam QR code. Ainda não

existem bibliotecas nos SDKs para Android e J2ME que deem suporte ao desenvolvimento de

aplicações que tenham requisitos de leitura ou criação de QR Codes. Entretanto, foram

encontradas bibliotecas que podem auxiliar no desenvolvimento deste tipo de aplicação, que

foram apresentadas neste capítulo.

Para o sistema operacional Android é possível encontrar, além de bibliotecas,

componentes que fornecem o serviço de leitura e codificação de QR Code já prontos para o

reuso. Para a plataforma J2ME, são encontradas algumas aplicações de exemplo na pagina da

biblioteca Open Source QR Code Library que podem ser adaptadas e reusadas.

Destaca-se a biblioteca ZXing que se mostrou mais adequada para o desenvolvimento

de aplicações móveis que usem QR codes, já que fornece amplo suporte a leitura e criação de

símbolos QR seguindo as especificações desse código. Além disso, é possível encontrar-se

vários casos de utilização da biblioteca em aplicações já existentes na internet, como Google

Shoper35

e BeerCloud36

, o que aumenta o grau de confiabilidade nessa biblioteca. Além

disso, ela é facilmente reusável em aplicações para plataforma J2ME e Android, bastando que

os desenvolvedores sigam os exemplos de código apresentados no wiki37

.

35 Aplicação móvel que ajuda a obter informações sobre algum produto no momento da compra, mais

informações em http://www.google.com/mobile/shopper/ , acessado 28/10/2010.

36 Apresenta informações sobre cervejas baseado na leitura dos códigos de barras, mais informações em

http://greatbrewers.com/story/beercloud-mobile-app , acessado em 28/10/2010.

37 Endereço do wiki: http://code.google.com/p/zxing/w/list , acessado em 28/10/2010.

39

CAPÍTULO 5 - DFIND: UM SISTEMA UBÍQUO PARA LOCALIZAÇÃO

INDOOR E OUTDOOR BASEADO EM QR CODES

Este capítulo apresenta uma aplicação móvel desenvolvida para a plataforma Android

capaz de utilizar QR Code para fornecer informações de localização indoor e outdoor. Antes

de descrever o estudo de caso desenvolvido, um resumo das características da plataforma alvo

é apresentado.

5.1 A Plataforma Android

Em julho de 2005, a empresa Google Inc. adquiriu a Android Inc., que desenvolvia sistemas

para dispositivos móveis. A partir dessa aquisição feita pela multinacional Google,

desenvolveu-se um sistema operacional, baseado nos projetos da Android Inc., que se chamou

Android (BLOOMBERG L.P., 2005). Esse sistema operacional foi mantido e evoluído

exclusivamente pela Google até novembro de 2007. Neste mesmo mês, o consórcio Open

Handset Aliance (OHA) – formado por empresas como a Google, Motorola, HTC, Qualcomm

e mais trinta empresas – anunciou o desenvolvimento do Android como sendo a primeira

plataforma aberta para dispositivos móveis (OPEN HANDSET ALLIANCE, 2007).

Atualmente a plataforma Android é distribuída sob os termos da licença Apache 2.038

.

A plataforma Android é formada não só pelo sistema operacional homônimo, mas

também por um middleware e um conjunto de aplicações (GOOGLE INC., 2010). A Figura

27 detalha a arquitetura do sistema operacional Android. As aplicações para essa plataforma

são escritas na linguagem Java e compiladas em bytecodes Dalvik, que é a máquina virtual

responsável pela execução das aplicações.

38 Os termos dessa licença podem ser encontrados no endereço http://www.apache.org/licenses/LICENSE-2.0 ,

acessado em 28/10/2010.

40

Figura 27 - Arquitetura do sistema operacional Android (GOOGLE INC., 2010).

Essa plataforma é muito rica em vantagens de utilização. A primeira grande vantagem

está no fato de ser uma plataforma aberta, um dos fatores que têm motivado os fabricantes de

celulares a produzirem aparelhos com o sistema operacional Android. Além disso, segundo a

empresa de consultoria Gartner, ela é a plataforma que mais vêm crescendo em número de

usuários e é previsto que até o final do ano de 2010 seja a segunda plataforma para celular

mais usada no mundo39

. Pode-se citar ainda algumas outras características vantajosas do uso

dessa plataforma, como pode ser listado:

Utilização de uma linguagem de programação amplamente usada no mundo:

Java;

Bom isolamento entre as aplicações;

Facilidade e eficiência na utilização para o desenvolvimento de aplicações

móveis;

Framework e API extremamente ricos;

Variedade de componentes prontos para uso;

Possibilidade de reutilização de aplicações prontas;

Execução de aplicações em paralelo;

39 http://olhardigital.uol.com.br/produtos/mobilidade/android-apresenta-maior-crescimento-entre-plataformas-

moveis/13429

41

Integração das aplicações aos serviços da Google.

5.2 Estudo de Caso

5.2.1. Avant-Propos

É proposto neste tópico um estudo de caso de desenvolvimento de uma aplicação móvel

e ubíqua que faz uso de códigos QR, padrão de código 2D mais notório, para prover

informações de localização e rotas. Este estudo de caso se inspirou na ferramenta GREat

Tour, desenvolvida através de uma linha de produto de software para aplicações móveis e

sensíveis ao contexto (MARINHO, 2010). A plaforma Android foi escolhida para o estudo de

caso, já que é a plataforma que possivelmente se tornará dominante nos dispositivos móveis

nos próximos anos.

A realização deste estudo de caso tem como objetivo primeiro demonstrar como é

possível criar-se aplicações móveis sensíveis ao contexto através do uso de QR Codes. Além

disso, a realização do estudo de caso exige um contato direto com as tecnologias QR Code e

Android, permitindo perceber-se o grau de adequação das tecnologias para o desenvolvimento

de aplicações ubíquas e sensíveis ao contexto.

O estudo de caso aborda o desenvolvimento de uma aplicação de guia móvel, pois essa

aplicação possui requisitos que são comuns em aplicações móveis e sensíveis ao contexto, e.g.

o sensoriamento da localização. O uso de GPS é comum em aplicações desse domínio,

entretanto o uso dessa tecnologia é inadequado para o caso de guias móveis indoor. Nos

ambientes fechados os dispositivos móveis, que possuem restrições de potência na recepção

das ondas emitidas pelos satélites, geralmente não conseguem alinhamento necessário para

fornecer as informações de localização. Outra opção seria a utilização de sensores ou

tecnologias semelhantes para que pudessem detectar a presença do usuário do dispositivo

móvel em um ambiente, fornecendo para o sistema a sua localização. Porém, essa estratégia

envolve o custo da utilização de sensores, que ainda é um pouco alto para esse tipo de

aplicação. A utilização de códigos de barras seria uma outra solução, bem mais viável, para

este problema. O custo de utilização dos códigos de barras é, em geral, baixo e não sofre

nenhum problema se utilizado em ambientes indoor.

No entanto, não são todos os códigos de barras que podem ser usados de forma

adequada nessa solução. Caso fosse usado um tipo de código de barras que possuísse baixa

densidade de dados seria necessária a utilização de um banco de dados e de uma infraestrutura

de rede sem fio. Isso porque com os códigos de baixa densidade seriam armazenados somente

42

as chaves para se chegar à informação completa de localização. Portanto, a proposta de se

utilizar os Códigos QR para armazenar informações de localização permite a construção de

aplicações móveis independentes de infraestrutura de rede sem fio (opcionalmente), com um

baixo custo de implantação e com alto nível de utilidade para os usuários.

5.2.2. Aplicação móvel desenvolvida (DFind)

A proposta de experimento pode ser sintetizada como um sistema para plataforma

Android que através de símbolos QR Code (que armazenam informações de contexto) possa

fornecer informações de localização para os usuários. Na Figura 28 são apresentados os casos

de usos da aplicação desenvolvida como estudo de caso.

Figura 28 - Diagrama de casos de uso da aplicação proposta.

Concretizando a proposta de desenvolvimento foi criada a aplicação DFind – Decode

and Find System – que funciona como um guia móvel para o Campus do Pici da Universidade

Federal do Ceará (UFC40

) e para o prédio do Grupo de Redes de Computadores, Engenharia

40 Página web http://www.ufc.br/portal/ , Acessado em 28/10/2010.

43

de Software e Sistemas (GREat41

). O objetivo da aplicação é ajudar as pessoas que

frequentam o Campus do Pici e o GREat a se locomoverem nesses locais de forma melhor,

provendo informações sobre os locais e rotas para locais próximos de onde o usuários esteja,

fazendo uso de QR code. O DFind foi desenvolvido na plataforma Android e fez uso, via

Intent, da aplicação BarCodeScanner. Esta aplicação foi implementada com a biblioteca

ZXing, para decodificação dos símbolos QR. O reuso desse componente de leitura

proporcionou maior rapidez no desenvolvimento da aplicação.

Para o desenvolvimento foi utilizado como ambiente de programação um computador

desktop com o sistema operacional Ubuntu versão 9.04 e a IDE Eclipse Galileo com o plugin

ADT42

(Android Development Tools) instalado. O dispositivo móvel usado para os testes da

aplicação foi o LG-GW62043

com o sistema operacional Android versão 1.5. Para a

codificação dos símbolos QR Code de testes usou-se o gerador online da própria biblioteca

ZXing44

.

O processo básico da proposta é composto, resumidamente, por apenas quatro passos. O

primeiro passo é a Leitura de um código QR, nesse passo é onde o componente

BarCodeScanner é reusado para capturar através da câmera do dispositivo móvel um código

QR. Em seguida, o passo de decodificação das informações é executado, esse passo ainda é

executado no componente de leitura. O terceiro passo necessário é a extração dos dados

relevantes dos dados brutos que foram decodificados, nesse momento são lidas as

informações seguindo o formato JSON. Por fim, o último passo a ser executado é a exibição

da localização atual e das informações complementares (descrição, detalhes sobre o local,

locais próximos e rotas). A Figura 29 ilustra o processo descrito.

41 Página web http://www.great.ufc.br/ , Acessado em 28/10/2010.

42 Informações sobre o plugin do eclipse podem ser obtidas em http://developer.android.com/sdk/eclipse-adt.html

, acessado em 31/10/2010.

43 Mais informações em http://www.lge.com/br/celular/aparelhos/LG-GW620.jsp , acessado em 31/10/2010.

44 Disponível em http://zxing.appspot.com/generator/ , acessado em 31/10/2010.

44

Figura 29 - Fluxo básico da aplicação DFind.

As principais classes do componente de leitura reusado são apresentadas no diagrama

de classes da Figura 30. Já as classes criadas exclusivamente para a aplicação DFind são

ilustradas no diagrama de classes da Figura 31. Com o auxílio da ferramenta SLOCCount45

,

percebeu-se que para a construção da aplicação foi requerido a escrita de 893 linhas de código

(entre arquivos Java e XML, 68,65% e 31,35% respectivamente), distribuídas em oito Classes

Java e nove arquivos XML. O pequeno número de arquivos criados para a aplicação aponta

para uma ideia da facilidade em se construir a aplicação. Isso é explicável pelo fato de que

boa parte dos requisitos já estavam implementados nas bibliotecas reusadas, i.e. as

funcionalidades de captura e decodificação.

45 Uma ferramenta para contagem de linhas de código de um projeto, que além de apresentar o total de linhas

codificadas faz o cálculo de algumas estatísticas básicas. Disponível em http://www.dwheeler.com/sloccount/ ,

acessado em 31/11/2010.

45

Figura 30 - Diagrama de Classes com as principais classes do componente de leitura.

Figura 31 - Diagrama de Classes com as principais classes da aplicação DFind.

46

A Figura 32 exemplifica um fluxo básico de mensagens para realização do caso de uso

―Ver detalhes sobre o local‖, para proporcionar um melhor entendimento sobre o processo

básico do sistema e o fluxo de mensagens entre os componentes do sistema. No diagrama

apresentado, é possível perceber-se o isolamento das atividades de captura e decodificação,

representados pelas mensagens 1.1.1 e 1.1.2, executados somente no componente ZXing

Barcode Scanner.

Figura 32 - Diagrama de Sequências para um dos fluxos principais da aplicação.

Na Figura 33, é mostrada uma sequencia de telas que ilustra o processo de localização

indoor através do uso de símbolos QR code. Nesta sequência, pode-se observar o uso do

componente usado para leitura de códigos QR, bem como o cumprimento dos requisitos de

exibição de mapas e página web.

47

(a)

(b)

(c)

(d) (e)

Figura 33 – Sequência de telas do DFind capturadas durante o processo de localização indoor. (a)

Usuário captura código, (b,c) é mostrado o mapa e descrição breve do local, (d) o usuário acessa o

menu e seleciona detalhes, (e) é mostrado o conteúdo referente ao local atual.

Na Figura 34, é mostrada uma sequência de telas capturadas durante o processo de

localização outdoor. Nesta sequencia, pode-se observar o cumprimento de outros requisitos,

como a exibição de mapas usando serviços do Google, exibição de locais próximos, exibição

da rota e dos detalhes sobre o destino.

48

(a)

(b)

(c)

(d)

(e)

(f)

Figura 34 - Sequencia de telas do DFind capturadas durante o processo de localização outdoor. (a)

Usuário captura o código QR, (b) é carregado o mapa do local, (c) O usuário acessa o menu de

opções, (d) são mostrados os lugares próximos cadastrados, (e) é mostrado a rota para o destino

selecionado e (f) é possível visualizar detalhes, como foto e mapa, do destino selecioado.

Outra característica de implementação importante é que os dados codificados estão em

um formato JSON46

. Portanto, é possível utilizar sem problemas as ferramentas existentes de

criação de símbolos QR para localização, bastando seguir a estrutura JSON previamente

adotada.

46 Significa JavaScript Object Notation Mais informações estão disponíveis em http://www.json.org/ , acessado

em 28/10/2010.

49

5.3 Conclusão

Percebe-se que o Android é de fato uma plataforma robusta para o desenvolvimento de

aplicações móveis. Além disso, é muito rica em recursos que facilitam o desenvolvimento de

novos tipos de aplicações, garantindo melhor produtividade nesse processo. A realização do

estudo de caso proposto ajuda a delinear algumas possibilidades de uso dessa plataforma e

dos códigos QR. Os requisitos planejados para aplicação DFind, de mobilidade e

sensibilidade ao contexto, puderam ser atendidos através das tecnologias utilizadas.

A utilização de símbolos QR Code realmente trouxe diversas vantagens para a aplicação

de localização móvel, pois não houve a necessidade de utilização de sensores, GPS ou

sistemas de banco de dados para obterem-se as informações de localização. Usando QR Code

foi possível armazenar em um único símbolo impresso todas as informações necessárias para

localizar o usuário, descrição do ambiente, mostrar a lista de locais próximos e as respectivas

rotas. Em parte, confirma-se a suposição de que o padrão QR code é o mais adequado para

utilização em aplicações ubíquas e sensíveis ao contexto, já que se tivessem sido utilizados

outros tipos de códigos não seria possível atender a todos os requisitos de ubiquidade das

informações de localização exigidos na aplicação proposta.

50

CONCLUSÃO

A partir do levantamento bibliográfico deste trabalho, percebe-se que a utilização do

código QR Code está crescendo muito no domínio de aplicações móveis e que constantemente

surgem formas inovadoras desse código. Além disso, essa forma de codificação de

informações mostrou-se adequado para aplicações ubíquas, pois a característica de alta

densidade de dados dos símbolos QR Code permite a criação de aplicações móveis flexíveis e

independentes de uma infraestrutura custosa para sensoriamento de dados e obtenção de

informações relevantes para aplicação.

Neste trabalho, foram apresentados de forma detalhada os tipos de código de barras

existentes mais usados e as ferramentas disponíveis para criação de aplicações que usam QR

code. Foi explicado como é possível o uso dessa tecnologia em dispositivos móveis. Além

disso, foi realizada uma discussão entre o uso dos códigos de barra e os conceitos de

ubiquidade. Com essa discussão conclui-se que o uso dos códigos de barra, por si somente,

não pode em unanimidade ser definido como um sistema ubíquo, mas que a sua utilização

ajuda a construir sistemas e aplicações deste tipo. O principal benefício da utilização dessa

tecnologia em aplicações ubíquas seria a redução do custo de sensoriamento de informações

ou de obtenção de informações de contexto.

O estudo de caso realizado permitiu comprovar as características de alta densidade de

dados, rapidez na leitura e leitura independente de orientação (ou seja, em 360º), descritas

como vantagens do QR Code. Foi possível codificar em um único símbolo QR informações

de localização acrescidas de dados de locais próximos, rotas para essas localizações e uma

descrição do local atual. A quantidade de informações contidas em cada símbolo usados no

estudo de caso só foi possível por conta da alta densidade de dados do QR Code. Outra

observação importante sobre esse estudo foi a rapidez na leitura e decodificação dos símbolos

lidos pelos dispositivos móveis. Comprovou-se também a flexibilidade quanto à posição para

leitura do código, pois uma vez enquadrado no raio de captura da câmera do dispositivo

móvel a leitura e decodificação ocorriam sem problemas. No estudo de caso realizado,

51

utilizou-se o acesso a internet através de uma rede infraestruturada para acessar os mapas

outdoor, enriquecendo a aplicação com os mapas disponibilizados através do serviço Google

Maps. Entretanto, caso não fosse possível o acesso à internet os requisitos de localização

ainda seriam cumpridos, pois todas as informações necessárias para guiar o usuário estão

contidas nos símbolos QR Code.

No futuro, como extensão deste trabalho, pode ser realizado o desenvolvimento de

uma aplicação ubíqua, móvel e sensível ao contexto (através do uso de QR code) que permita

a criação de guias móveis personalizáveis. Além disso, se pensa em criar componentes

reusáveis, baseados no que já foi desenvolvido no estudo de caso, para serem integrados a

Linha de Produtos de Software MobiLine47

. Outra extensão deste trabalho pode ser a

utilização das tecnologias de QR Code e da plataforma Android nas aplicações de M-Learning

desenvolvidas pelo GREat.

47 O objetivo do MobiLine é investigar as características particulares existentes no desenvolvimento de software

móvel sensível ao contexto para a construção de uma linha de produtos para este domínio. Em especial, o projeto

considera como foco para o aumento da produtividade e qualidade no desenvolvimento desse tipo de software, a

aplicação de técnicas que possibilitem uma reutilização de forma sistemática. Este projeto, financiado pelo

CNPQ, foi uma parceria do grupo GREat, coordenado pela professora Rossana Andrade, com a equipe

coordenada pela professora Cláudia Werner da UFRJ.

52

REFERÊNCIAS BIBLIOGRÁFICAS

AL-KHALIFA, H. S. Utilizing QR Code and Mobile Phones for Blinds and Visually

Impaired People. Proceedings of the 11th international conference on Computers Helping

People with Special Needs, Linz, Austria, 2008. 1065-1069.

ASSOCIAÇÃO COMERCIAL DE PEDREIRA - ACEP. CMC7. Site da Associação

Comercial de Pedreira - ACEP. Disponivel em:

<http://www.acepedreira.com.br/cmc7.html>. Acesso em: 18 out. 2010.

BLOOMBERG L.P. Google Buys Android for Its Mobile Arsenal. Bloomberg

Businessweek, 2005. Disponivel em:

<http://www.businessweek.com/technology/content/aug2005/tc20050817_0949_tc024.htm>.

Acesso em: 28 out. 2010.

BARBOSA NETO, G. E; CAMPOS, A. A. S. Mobile Payment - Estudo comparativo entre

tecnologias de transações eletrônicas via dispositivos móveis. 2008. 93 f. Monografia

(Graduação) - Curso de Bacharelado em Informática, Departamento de Computação,

Universidade Católica do Salvador, Salvador, 2008. Disponível em:

<http://info.ucsal.br/banmon/Arquivos/Mono_040609.pdf>. Acesso em: 14 out. 2009.

CHU, Y.-L.; LIU, T.-Y. Handheld Computer Supported Context-aware learning with 2D

Barcodes. Seventh IEEE International Conference on Advanced Learning Technologies

(ICALT 2007), 2007. 485-486.

CONDE-LAGOA, D. et al. Secure eTickets based on QR-Codes with user-encrypted content.

International Conference on Consumer Electronics (ICCE), 2010. 257-258.

DENSO WAVE INC. QR Code Patent FAQ. Site da Denso Wave inc. Disponivel em:

<http://www.denso-wave.com/qrcode/faqpatent-e.html>. Acesso em: 20 out. 2010.

DENSO WAVE INC. QR Code Standardization. Site da Denso Wave inc. Disponivel em:

<http://www.denso-wave.com/qrcode/qrstandard-e.html>. Acesso em: 20 out. 2010.

DEY, A.; ABOWD, G. Towards a better understanding of context and context-awareness.

Proceedings of the 1st International Symposium on Handheld and Ubiquitous

Computing, Londres, Inglaterra, 2000. p.304-307.

53

EBLING, M.; CÁCERES, R. Bar Codes Everywhere You Look. IEEE Pervasive

Computing, v. 9, n. 2, p. 4-5, junho 2010.

FANG et al. Automatic Recognition of Noisy Code-39 Barcode. 16th International

Conference on Artificial Reality and Telexistence - Workshops (ICAT’06), novembro

2006. 79-82. doi:10.1109/ICAT.2006.45.

GOOGLE INC. Android Developers. Página Web Android Developers, 2010. Disponivel

em: <http://developer.android.com/>. Acesso em: 19 Abril 2010.

GOOGLE INC. What is Android? Android developers, 2010. Disponivel em:

<http://developer.android.com/guide/basics/what-is-android.html>. Acesso em: 28

out.FEBRABAN (FEDERAÇÃO BRASILEIRA DE BANCOS) (Brasil). “Layout” Padrão

de Arrecadação/Recebimento com Utilização do Código de Barras. Disponível

em:<http://www.febraban.org.br/p5a_52gt34++5cv8_4466+ff145afbb52ffrtg33fe36455li5411

pp+e/sitefebraban/Codbar4-v28052004.pdf>. Acesso em: 15 out. 2010.

HEE IL, H.; JOUNG KOO, J. Implementation of algorithm to decode two-dimensional

barcode PDF-417. 6th International Conference on Signal Processing, Vol.2, 2002. p.

1791-1794. DOI 10.1109/ICOSP.2002.1180150.

HUANG, Y.-P.; CHANG, Y.-T.; SANDNES, F. E. QR Code Data Type Encoding for

Ubiquitous Information Transfer Across Different Platforms. 2009 Symposia and

Workshops on Ubiquitous, Autonomic and Trusted Computing, 2009. 292-297. DOI:

10.1109/TMM.2008.917353.

IEEE. The 2D data matrix barcode. Computing & Control Engineering Journal, v. 16, n. 6,

p. 39, 2005. doi:10.1049/ccej:20050609.

INTERNATIONAL ORGANIZATION FOR STANDARDIZATION - ISO. ISO/IEC

15417:2007. Página Web da International Organization for Standardization. Disponivel

em:

<http://www.iso.org/iso/iso_catalogue/catalogue_tc/catalogue_detail.htm?csnumber=43896>.

Acesso em: 18 out. 2010.

INTERNATIONAL ORGANIZATION FOR STANDARDIZATION - ISO. ISO/IEC

15438:2006. Página Web da International Organization for Standardization. Disponivel

em:

<http://www.iso.org/iso/iso_catalogue/catalogue_tc/catalogue_detail.htm?csnumber=43816>.

Acesso em: 19 out. 2010.

54

INTERNATIONAL ORGANIZATION FOR STANDARDIZATION - ISO. ISO/IEC

16388:2007. Página Web da International Organization for Standardization. Disponivel

em:

<http://www.iso.org/iso/iso_catalogue/catalogue_tc/catalogue_detail.htm?csnumber=43897>.

Acesso em: 18 out. 2010.

INTERNATIONAL ORGANIZATION FOR STANDARDIZATION - ISO. ISO/IEC

18004:2006. Página Web da International Organization for Standardization. Disponivel

em:

<http://www.iso.org/iso/iso_catalogue/catalogue_tc/catalogue_detail.htm?csnumber=43655>.

Acesso em: 20 out. 2010.

KATO, H.; TAN, K. T. Pervasive 2D Barcodes for Camera Phone Applications. IEEE

Pervasive Computing, v. 6, n. 4, p. 76-85, dezembro 2007. DOI:

10.1109/TMM.2008.917353.

LIU, S. Anti-counterfeit System Based on Mobile Phone QR Code and Fingerprint. Second

International Conference on Intelligent Human-Machine Systems and Cybernetics,

Wuhan, China, 2010. p.236-240.

LIU, Y.; YANG, J.; LIU, M. Recognition of QR Code with Mobile Phones. Control and

Decision Conference, p. 2008-2011, 2008.

LIU, X.; DOERMANN, D.; LI, H. VCode—Pervasive Data Transfer Using Video Barcode.

IEEE Transactions on Multimedia, v. 10, n. 3, p. 361-371, abril 2008. DOI:

10.1109/TMM.2008.917353.

LIU, Y.; LIU, M. Automatic Recognition Algorithm of Quick Response Code Based on

Encoding of QR Code. International Conference on Inteligent Systems Design and

Applications (ISDA), 2006. p.783-788.

MARINHO, F. G. et al. An Architecture Proposal for Nested Software Product Lines in the

Domain of Mobile and Context-Aware Applications. Software Components, Architectures

And Reuse (SBCARS), Salvador, p. 51-60. 2010.

MEASUREMENT EQUIPMENT CORPORATION. Different Types of Barcodes.

makebarcode.com. Disponivel em: <http://www.makebarcode.com/specs/speclist.html>.

Acesso em: 14 out. 2010.

55

OPEN HANDSET ALLIANCE. Industry Leaders Announce Open Platform for Mobile

Devices. Página da Open Handset Alliance, 2007. Disponivel em:

<http://www.openhandsetalliance.com/press_110507.html>. Acesso em: 28 out. 2010.

PEAR GROUP. What is PEAR? Pagina do PEAR, 2010. Disponivel em:

<http://pear.php.net/manual/en/about.pear.php>. Acesso em: 28 out. 2010.

QUADROS, D. Código de Barras - Código 39. Página pessoal, 27 fev. 2008. Disponivel em:

<http://dqsoft.blogspot.com/2008/02/cdigo-de-barras-cdigo-39.html>. Acesso em: 18 out.

2010.

ROCHA, Lincoln Souza. AdaptiveRME e AspectCompose: Um Middleware Adaptativo e um

Processo de Composição Orientado a Aspectos para o Desenvolvimento de Software móvel e

Ubíquo. 2007. Dissertação (Mestrado em Mestrado em Ciência da Computação) -

Universidade Federal do Ceará. Fortaleza. Disponível em:

<http://great.ufc.br/~lincoln/file/LincolnMScThesis.pdf>. Acesso em: 25 out. 2010.

ROUILLARD, J.; LAROUSSI, M. PerZoovasive: contextual pervasive QR codes as tool to

provide an adaptive learning support. Proceedings of the 5th international conference on

Soft computing as transdisciplinary science and technology, Cergy-Pontoise, França,

2008. p.542-548.

STREITZ, N.; NIXON, P. The Disappearing Computer. Communication of the ACM, v. 48,

n. 3, p. 32-35, 2005.

UNIFORM CODE COUNCIL - GS1 US. Numbers in the History of the Universal Product

Code (U.P.C.). Site Institucional da GS1 US. Disponivel em:

<http://www.gs1us.org/about_us/numbers_in_the_upc>. Acesso em: 14 out. 2010.

UNIFORM CODE COUNCIL - GS1 US. The Universal Product Code. Site Institucional da

GS1 US. Disponivel em:

<http://www.gs1us.org/about_us/history/the_universal_product_code>. Acesso em: 14 out.

2010.

VIANA, W. et al. Towards the semantic and context-aware management of mobile

multimedia. Multimedia Tools and Applications, 2010. p.1-39. DOI: 10.1007/s11042-010-

0502-6.

VIANA, W.; ANDRADE, R. Uma proposta para a geração semi-automática de aplicações

adaptativas para dispositivos móveis. Simpósio Brasileiro de Engenharia de Software,

Florianópolis, SC, Brasil, 2006.

56

VICENTINI, C. F. et al. Emprego de Código de Barras Bidimensionais para Conferência da

Autenticidade de Certificados Digitais. VI Simpósio de Informática da Região Centro/RS,

Santa Maria - RS, Brasil, 2007.

WEISER, M. The Computer for the 21st Century. Scientific American, v. 265, n. 3, p. 94-

104, fev. 1991.

WOODLAND, N. J.; SILVER, B. Classifying apparatus and method. US2612994, 07

Outubro 1952.

YANBE, Y. Open Source QR Code Library. Página do projeto Open Source QR Code

Library, 2010. Disponivel em: <http://qrcode.sourceforge.jp/>. Acesso em: 27 out. 2010.

YU, G. et al. An application and implementation of two-dimensional symbols for circuit

board quality control system. 2nd IEEE International Conference on Industrial

Informatics, Berlin, junho 2004. 397-402. DOI: 10.1109/INDIN.2004.1417368.