SlideShare uma empresa Scribd logo
1 de 18
INSTITUTO FEDERAL DE PERNAMBUCO (IFPE) - CAMPUS RECIFE
DEPARTAMENTO ACADÊMICO DE SISTEMAS, PROCESSOS E CONTROLES
ELETRO-ELETRÔNICO (DASE)
COORDENAÇÃO DO CURSO SUPERIOR TECNOLÓGO DE ANÁLISE E
DESENVOLVIMENTO DE SISTEMAS (CTADS)
RICHARDSON BRUNO DA SILVA ANDRADE
RELATÓRIO
Recife, PE
30 dez, 2015
RICHARDSON BRUNO DA SILVA ANDRADE
RELATÓRIO DE COMPLEMENTAÇÃO DE CARGA
HORÁRIA E/OU CONTEÚDOS DE COMPONENTE
CURRICULAR
Relatório de Programação de Dispositivos Movéis
do curso Tecnólogo em Análise e
Desenvolvimento de Sistemas, do Instituto
Federal de Pernambuco IFPE Campus Recife,
para a complementação de carga horária e/ou
conteúdos de componente curricular Aspecto
Avançado em Desenvolvimento.
Professor: Ramide Augusto Sales Dantas
Recife, PE
30 dez, 2015
LISTA DE FIGURAS
FIGURA 1 - CONFIGURAÇÃO DO ANDROIDMANISFEST.XML...................................................................................6
FIGURA 2 - CLASSE NFCFORGROUNDDISPATCHER.................................................................................................7
FIGURA 3 - ATIVAÇÃO E DESATIVAÇÃO NASATIVIDADESDE ESCRITA/LEITURADO
NFCFOREGROUNDDISPATCHER........................................................................................................................7
FIGURA 4 - READER ACTIVITY.....................................................................................................................................9
FIGURA 5 - NOVO INTENT AO APROXIMA READER E TAG......................................................................................10
FIGURA 6 - MÉTODO QUE EXTRAI A ESTRUTURA MESSAGES DA TAG.................................................................10
FIGURA 7 –PREPARANDO OS PARÂMETROS PARA PASSAR PARA O MÉTODO DE GRAVAÇÃO DATAG .....................................11
FIGURA 8 - MÉTODO DE GRAVAÇÃO NDEFMESSAGE NA ATIVIDADE WRITER/MÓDULO DE ESCRITA..........13
SUMÁRIO
Lista de Figuras.....................................................................................................................2
Sumário...............................................................................................................................1
1 Introdução.........................................................................................................................2
2 Desenvolvimento Técnico..................................................................................................3
2.1 NFC .....................................................................................................................3
2.1.1 Definição.......................................................................................................3
2.1.2 Tecnologia .....................................................................................................3
2.1.3 Especificação.................................................................................................3
2.1.4 Dispositivos ...................................................................................................4
2.1.5 Modo de Operação.........................................................................................4
2.1.6 Leitura/Escrita................................................................................................4
2.1.7 Aplicações.....................................................................................................5
2.2 DESENVOLVIMENTO DE APLICAÇÃO ANDROIDUSANDONFC NO MODO
DE OPERAÇÃO READER/WRITER ...............................................................................5
2.2.1 Descrição do desenvolvimento ........................................................................5
2.3 Biblioteca..............................................................................................................5
2.4 Restrições .............................................................................................................5
2.5 Configuração do AndroidManisfest.xml..................................................................5
2.6 Capturando o intent disparado na aplicação.............................................................6
2.7 Módulo de Leitura .................................................................................................8
2.7.1 Extraindo informação da Tag..........................................................................9
2.8 Módulo de Gravação............................................................................................11
Considerações Finais ..........................................................................................................14
Referências........................................................................................................................15
2
1 INTRODUÇÃO
O objetivo deste relatório consiste em demonstrar um estudo e descrição da
tecnologia Near Field Comunnication (NFC), comunicação de campo por
aproximidade e seu uso no Android. Também será abordado a construção de uma
aplicação Android usando NFC.
3
2 DESENVOLVIMENTOTÉCNICO
2.1 NFC
2.1.1 Definição
Segundo IGOE, COLEMAN e JEPSON (2014), NFC é construído sobre Radio-
Frequency IDentification (RFID) / IDentificação por RádioFrequência para permitir
trocas mais complexas entre os usuários. De forma complementar, conforme COSKUN,
OK e OZDENIZC (2013), é um dos ativadores da computação umbíqua. É projetado
para várias tecnologias como comunicação wireless, serviços mobile, aplicação mobile e
smart card. E também, orientado a programação server-side web, cloud services e
tecnologia Extensible Markup Language (XML) / Linguagem de Marcação
Extensível contribuem para seu melhoramento. De modo geral, a visão principal do
NFC é a integração de informação pessoal e privada para fones mobile.
2.1.2 Tecnologia
NFC nasce 2002 pela parceria Philips e Sony. A ECMA adotou tempo depois. A
IEC adota um ano mais tarde. Em 2004, promove-se o forum NFC criado pela Nokia,
Sony e Philips. Depois, ocorre e reconhecimento pelas instituições de padronização
como ISO, IEC, ETSI e ECMA (COSKUN, OK e OZDENIZC, 2013).
2.1.3 Especificação
O NFC atua por rádio frequência e seu sinal corresponde 13.56 MHz com uma
largura de banda de até 424 kpbs na forma bidirecional (COSKUN, OK e OZDENIZC,
4
2013).
2.1.4 Dispositivos
São três os serviços que NFC habilita: enabled mobile phone/fones móveis
ativados, reader/leitor, tag/etiqueta (COSKUN, OK e OZDENIZC, 2013).
2.1.5 Modo de Operação
O NFC permite três modos de interação, reader/writer, peer-to-peer e smart
card. Mas para obedecer o escopo do desenvolvimento dessa aplicação com Android, só
será descrito o modo de interação reader/writer.
2.1.6 Leitura/Escrita
Esse modelo de uso pode ser descrito numa interação entre reader/modo de
leitura ou writer/modo de escrita em uma tag/etiqueta: como se segue:
1. Requisição de leitura
2. Transferência dos dados
3. Processamento com despositivo
4. Uso do serviço adicional
5. Requisição de escrita
6. Conteúdo armazenado
5
2.1.7 Aplicações
As aplicações para esse modo de operação consiste transferir tipos de dados como
textos, Uniform Resource Locator (URL)/Localizador de Recurso Uniforme
(COSKUN, OK e OZDENIZC, 2013).
2.2 DESENVOLVIMENTO DE APLICAÇÃO ANDROID USANDO
NFC NO MODO DE OPERAÇÃO READER/WRITER
2.2.1 Descrição do desenvolvimento
A aplicação realiza a operação de escrita e leitura de conteúdo na tag. Logo após
selecionado a operação, aproxima-se o smartphone e a tag. O intent depois de lançado,
ou mostra o conteúdo lido ou a confirmação de gravação.
2.3 Biblioteca
API Android nativa possiblita o uso dos recursos por meio de interface a partir
do pacote “android.nfc”.
2.4 Restrições
O nível mínimo exigido é 9 da API. Mas para aproveitar de recursos adicionais o
nível 10 da API Android é considerada.
2.5 Configuração do AndroidManisfest.xml
O primeiro passo é verificar recurso de hardware no despositivo. Também não
se esquecer de dar permissão ao aplicativo para utilizar o recurso de hawdware. E antes
6
de mais nada, configurar a atribuição a versão mínima do SDK para dar suporte os
métodos da API de NFC :
Figura 1 - Configuração do AndroidManisfest.xml
2.6 Capturando o intent disparado na aplicação
Cria-se a classe que implementa ForegroundDispatcher para captura o intent
para ficar em stand-by no aguardo pelo escolanador da atividade ou sistema operacional
para ganhar a tela. Como aplicação captura, no construtor passa-se a instância de leitura
ou escrita a qual o chama. Atribui-se adapter e recebe o intent pendente iniciado antes
que possa ser mostrado na tela. No método enable, realizamos o filtro baseado na classe
adapter NFC para a tag qual ser lida. Uma vez realizado passando o intent pedente que
aguardou e em seguida repassa-se para o processamento.
publicclassNfcForegroundDispatcherimplementsForegroundDispatcher{
private staticfinal StringTAG= "NfcForegroundDispatcher";
private final NfcAdapternfcAdapter;
private final PendingIntentnfcPendingIntent;
private final ActivityreceivedActivity;
publicNfcForegroundDispatcher(Activityactivity) {
receivedActivity=activity;
nfcAdapter= NfcAdapter.getDefaultAdapter(activity);
nfcPendingIntent=PendingIntent.getActivity(activity,0,
newIntent(activity,
activity.getClass()).addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP),0);
}
publicvoidenable() {
7
Log.d(TAG,"enableForegroundMode");
IntentFiltertagDetected=new
IntentFilter(NfcAdapter.ACTION_TAG_DISCOVERED);
IntentFilter[]TagFilters=new IntentFilter[] { tagDetected};
nfcAdapter.enableForegroundDispatch(receivedActivity,nfcPendingIntent,
TagFilters,null);
}
publicvoiddisable() {
Log.d(TAG,"disableForegroundMode");
nfcAdapter.disableForegroundDispatch(receivedActivity);
}
}
Figura 2 - Classe NFCForgroundDispatcher
Ainda mais, realiza-se em alguns métods do ciclo de vida da atividade que
contém o NFCForgroundDispatcher, a ativação do seu método de ativação sobre
onResume e desativação no método onPause como é mostrado:
public void onResume() {
super.onResume();
foregroundDispatcher.enable();
}
@Override
public void onPause() {
super.onPause();
foregroundDispatcher.disable();
}
Figura 3 - Ativação e desativação nas atividades de escrita/leitura do NFCForegroundDispatcher
8
2.7 Módulo de Leitura
Agrega-se a classe que captura o intent e passa objeto da atividade. Criaremos
alguns widgets nas tela para quando lido a url repasse para ele o conteúdo e assim ao
clicar sobre o butão dispare para webview.
publicclassReaderActivityextendsActionBarActivity{
private NfcAdaptermyNfcAdapter;
private TextViewmyText;
private Stringpayload;
private SpinnerspSetor;
private TextViewtvPpi;
private ButtonbtVisitarUrl;
private byte payloadHeader;
private ForegroundDispatcherforegroundDispatcher;
private NdefMessage[] messages;
private Stringdestin= newString();
@Override
protectedvoidonCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_reader);
foregroundDispatcher=newNfcForegroundDispatcher(this);
tvPpi = (TextView) findViewById(R.id.tvPpi);
btVisitarUrl =(Button) findViewById(R.id.btVisitarUrl);
addListenerOnSpinnerItemSelection();
9
Toast.makeText(this,"Aproxime seuaparelhoaoetiquetainteligente
NFC",Toast.LENGTH_LONG).show();
btVisitarUrl.setOnClickListener(newView.OnClickListener() {
@Override
publicvoidonClick(Viewv) {
IntentwebViewIntent=newIntent(v.getContext(),WebViewActivity.class);
payload= payload.replace("u0001","");
webViewIntent.putExtra("url","http://"+payload+ destin);
startActivity(webViewIntent);
Figura 4 - Reader Activity
2.7.1 Extraindo informação da Tag
Implementaremos o método onNewIntent quando uma nova intent tente ganhar o
foreground haverá o filtro do dispachante que agregamos e repassamos para o método
getNdefMessages no intent. Como retorno, tem-se um conjunto do tipo NdefMessages
como array. Logo, pega-se as gravações contido nele, a recuperação do conteúdo
principal é obtido pelo método payload.
Tag detectedTag= intent.getParcelableExtra(NfcAdapter.EXTRA_TAG);
//PREPARETHE NDEF MESSAGE
byte[] uriField="1-dot-map-indoor-ifpe-recife-1021.appsppoot.com/bl-a-
t.html?ppi=e&destin=".getBytes(Charset.forName("US-ASCII"));
byte[] payload=newbyte[uriField.length+1];
payload[0] =0x01;
System.arraycopy(uriField,0,payload,1,uriField.length);
NdefRecorduriRecord=newNdefRecord(
NdefRecord.TNF_WELL_KNOWN,NdefRecord.RTD_URI,new byte[0],payload);
10
NdefMessagenewMessage=newNdefMessage(new NdefRecord[] { uriRecord});
writeNdefMessageToTag(newMessage,detectedTag);
Figura 5 - Novo Intent ao aproxima reader e tag
NdefMessage[] getNdefMessages(Intentintent) {
NdefMessage[]message=null;
if (NfcAdapter.ACTION_TAG_DISCOVERED.equals(intent.getAction())) {
Parcelable[] rawMessages=
intent.getParcelableArrayExtra(NfcAdapter.EXTRA_NDEF_MESSAGES);
if (rawMessages!=null) {
message = newNdefMessage[rawMessages.length];
for (inti = 0; i < rawMessages.length;i++) {
message[i] =(NdefMessage) rawMessages[i];
}
} else {
byte[] empty=newbyte[] {};
NdefRecordrecord= newNdefRecord( NdefRecord.TNF_WELL_KNOWN,empty,
empty,empty);
NdefMessage msg=newNdefMessage(new NdefRecord[]{ record} );
message = newNdefMessage[]{ msg};
}
}/*else {
Log.d("","Unknownintent.");
finish();
}*/
returnmessage;
}
Figura 6 - Método que extrai a estrutura messages da Tag
11
2.8 Módulo de Gravação
No médoto onCreate do classe Writer tem o link e atribuição da variável
ndefRecord. Depois ocorre o encapsulamento por NdefMessage. Logo em seguida
repassa a tag detectada e NdefMessage como mostrado:
byte[] uriField="1-dot-map-indoor-ifpe-recife-1021.appsppoot.com/bl-a-
t.html?ppi=e&destin=".getBytes(Charset.forName("US-ASCII"));
byte[] payload=newbyte[uriField.length+1];
payload[0] =0x01;
System.arraycopy(uriField,0, payload,1,uriField.length);
NdefRecorduriRecord=newNdefRecord(
NdefRecord.TNF_WELL_KNOWN,NdefRecord.RTD_URI,new byte[0],payload);
NdefMessagenewMessage=newNdefMessage(new NdefRecord[] { uriRecord});
// WRITE DATA TO TAG
writeNdefMessageToTag(newMessage,detectedTag);
Figura 7 - Preparando os parâmetros para passar para o método de gravação da tag
No método, pode-se observar a verificação da tag, liga antes de gravação, se não
está nula; se é apenas de leitura; se não houver mais espaço suficiente na tag; se ocorre
alguma falha ou se o formato das messages é reconhecido. Caso não entre em nenhuma
condição, a escrita é realizada com sucesso:
boolean writeNdefMessageToTag(NdefMessage message,TagdetectedTag) {
intsize = message.toByteArray().length;
try {
Ndef ndef =Ndef.get(detectedTag);
if (ndef !=null) {
ndef.connect();
12
if (!ndef.isWritable()) {
Toast.makeText(this,"Tagisread-only.",Toast.LENGTH_SHORT).show();
return false;
}
if (ndef.getMaxSize() <size) {
Toast.makeText(this,"The datacannotwrittentotag,Tag capacity is" +
ndef.getMaxSize()+" bytes,message is"
+ size + " bytes.",Toast.LENGTH_SHORT).show();
return false;
}
ndef.writeNdefMessage(message);
ndef.close();
Toast.makeText(this,"Message iswrittentag.",Toast.LENGTH_SHORT).show();
returntrue;
} else {
NdefFormatable ndefFormat=NdefFormatable.get(detectedTag);
if (ndefFormat!=null) {
try {
ndefFormat.connect();
ndefFormat.format(message);
ndefFormat.close();
Toast.makeText(this,"The dataiswrittentothe tag ",
Toast.LENGTH_SHORT).show();
returntrue;
} catch (IOExceptione) {
Toast.makeText(this,"Failedtoformattag",
Toast.LENGTH_SHORT).show();
returnfalse;
}
13
} else {
Toast.makeText(this,"NDEFisnotsupported",Toast.LENGTH_SHORT).show();
return false;
}
}
} catch (Exceptione) {
Toast.makeText(this,"Write opreationisfailed",Toast.LENGTH_SHORT).show();
}
returnfalse;
}
Figura 8 - Método de gravação NdefMessage na Atividade Writer/Módulo de escrita.
14
CONSIDERAÇÕES FINAIS
Este relatório apresentou as características do NFC, como : definição,
tecnologia, especificação, dispositivos e modo de operação, com destaque em leitura e
escrita e exemplos de uso.
Além disso, mostrou passo a passo o desenvolvimento de aplicação android com
NFC no modo leitura e escrita. Entre as etapas vistas constam o contexto de
desenvolvimento, o nível de biblioteca, as restrições, a configuração, a criação do
módulo de leitura e escrita.
15
REFERÊNCIAS
COSKUN,V.;OK,K.; OZDENIZC,B. Professional NFCApplicationDevelopmentforAndroid.
[S.l.]:JohnWiley&Sons,Ltd.,2013.
IGOE, T.; COLEMAN,D.; JEPSON,B. BeginningNFC.Califórnia:O’ReilllyMedica,Inc.,2014.

Mais conteúdo relacionado

Destaque

Sw owl rules-proposal
Sw owl rules-proposalSw owl rules-proposal
Sw owl rules-proposalokeee
 
Week02 answer
Week02 answerWeek02 answer
Week02 answerokeee
 
Tableof contents
Tableof contentsTableof contents
Tableof contentsokeee
 
Chapter2 maes
Chapter2 maesChapter2 maes
Chapter2 maesokeee
 
Dm week02 decision-trees-handout
Dm week02 decision-trees-handoutDm week02 decision-trees-handout
Dm week02 decision-trees-handoutokeee
 
Overfit10
Overfit10Overfit10
Overfit10okeee
 
Sw wordnet h1
Sw wordnet h1Sw wordnet h1
Sw wordnet h1okeee
 
Chapter3 black
Chapter3 blackChapter3 black
Chapter3 blackokeee
 
Sw 3 bizer etal-d bpedia-crystallization-point-jws-preprint
Sw 3 bizer etal-d bpedia-crystallization-point-jws-preprintSw 3 bizer etal-d bpedia-crystallization-point-jws-preprint
Sw 3 bizer etal-d bpedia-crystallization-point-jws-preprintokeee
 
Kbms video-app
Kbms video-appKbms video-app
Kbms video-appokeee
 
Sw 7 triple20
Sw 7 triple20Sw 7 triple20
Sw 7 triple20okeee
 
Kbms knowledge
Kbms knowledgeKbms knowledge
Kbms knowledgeokeee
 
Dm part03 neural-networks-handout
Dm part03 neural-networks-handoutDm part03 neural-networks-handout
Dm part03 neural-networks-handoutokeee
 

Destaque (13)

Sw owl rules-proposal
Sw owl rules-proposalSw owl rules-proposal
Sw owl rules-proposal
 
Week02 answer
Week02 answerWeek02 answer
Week02 answer
 
Tableof contents
Tableof contentsTableof contents
Tableof contents
 
Chapter2 maes
Chapter2 maesChapter2 maes
Chapter2 maes
 
Dm week02 decision-trees-handout
Dm week02 decision-trees-handoutDm week02 decision-trees-handout
Dm week02 decision-trees-handout
 
Overfit10
Overfit10Overfit10
Overfit10
 
Sw wordnet h1
Sw wordnet h1Sw wordnet h1
Sw wordnet h1
 
Chapter3 black
Chapter3 blackChapter3 black
Chapter3 black
 
Sw 3 bizer etal-d bpedia-crystallization-point-jws-preprint
Sw 3 bizer etal-d bpedia-crystallization-point-jws-preprintSw 3 bizer etal-d bpedia-crystallization-point-jws-preprint
Sw 3 bizer etal-d bpedia-crystallization-point-jws-preprint
 
Kbms video-app
Kbms video-appKbms video-app
Kbms video-app
 
Sw 7 triple20
Sw 7 triple20Sw 7 triple20
Sw 7 triple20
 
Kbms knowledge
Kbms knowledgeKbms knowledge
Kbms knowledge
 
Dm part03 neural-networks-handout
Dm part03 neural-networks-handoutDm part03 neural-networks-handout
Dm part03 neural-networks-handout
 

Semelhante a NFC

Relatorio de estagio tecnico em informatica
Relatorio de estagio tecnico em informaticaRelatorio de estagio tecnico em informatica
Relatorio de estagio tecnico em informaticaLucianaFerreira163
 
Plano de Projeto de Software para produtos da Lacertae SW
Plano de Projeto de Software para produtos da Lacertae SWPlano de Projeto de Software para produtos da Lacertae SW
Plano de Projeto de Software para produtos da Lacertae SWrafahreis
 
UFPA PPGCC LPRAD 2014-02 - Edinaldo La-Roque - OPNET - Tutorial Rede LTE Basi...
UFPA PPGCC LPRAD 2014-02 - Edinaldo La-Roque - OPNET - Tutorial Rede LTE Basi...UFPA PPGCC LPRAD 2014-02 - Edinaldo La-Roque - OPNET - Tutorial Rede LTE Basi...
UFPA PPGCC LPRAD 2014-02 - Edinaldo La-Roque - OPNET - Tutorial Rede LTE Basi...Edinaldo La-Roque
 
Postfix
PostfixPostfix
PostfixTiago
 
Plano do projeto de software SIGEM - Sistema de gestão de materiais
Plano do projeto de software SIGEM - Sistema de gestão de materiaisPlano do projeto de software SIGEM - Sistema de gestão de materiais
Plano do projeto de software SIGEM - Sistema de gestão de materiaisMarcos Pessoa
 
Ppt pd
Ppt pdPpt pd
Ppt pdTiago
 
Apostila Visual Basic
Apostila Visual BasicApostila Visual Basic
Apostila Visual BasicKratos879
 
Gestao contexto qos_qoe
Gestao contexto qos_qoeGestao contexto qos_qoe
Gestao contexto qos_qoeIP10
 
O uso de programação reflexiva para o desenvolvimento de aplicações comerciai...
O uso de programação reflexiva para o desenvolvimento de aplicações comerciai...O uso de programação reflexiva para o desenvolvimento de aplicações comerciai...
O uso de programação reflexiva para o desenvolvimento de aplicações comerciai...Jefferson Simão Gonçalves
 
Monitoramento
MonitoramentoMonitoramento
MonitoramentoTiago
 
Relatorio andrest
Relatorio andrestRelatorio andrest
Relatorio andrestVasco Silva
 
ThingProvider-Proposal
ThingProvider-ProposalThingProvider-Proposal
ThingProvider-ProposalKevin Martins
 
Open vpn
Open vpnOpen vpn
Open vpnTiago
 

Semelhante a NFC (20)

Relatório de estágio
Relatório de estágioRelatório de estágio
Relatório de estágio
 
Relatorio de estagio tecnico em informatica
Relatorio de estagio tecnico em informaticaRelatorio de estagio tecnico em informatica
Relatorio de estagio tecnico em informatica
 
Plano de Projeto de Software para produtos da Lacertae SW
Plano de Projeto de Software para produtos da Lacertae SWPlano de Projeto de Software para produtos da Lacertae SW
Plano de Projeto de Software para produtos da Lacertae SW
 
UFPA PPGCC LPRAD 2014-02 - Edinaldo La-Roque - OPNET - Tutorial Rede LTE Basi...
UFPA PPGCC LPRAD 2014-02 - Edinaldo La-Roque - OPNET - Tutorial Rede LTE Basi...UFPA PPGCC LPRAD 2014-02 - Edinaldo La-Roque - OPNET - Tutorial Rede LTE Basi...
UFPA PPGCC LPRAD 2014-02 - Edinaldo La-Roque - OPNET - Tutorial Rede LTE Basi...
 
Postfix
PostfixPostfix
Postfix
 
Mrtg
MrtgMrtg
Mrtg
 
Plano do projeto de software SIGEM - Sistema de gestão de materiais
Plano do projeto de software SIGEM - Sistema de gestão de materiaisPlano do projeto de software SIGEM - Sistema de gestão de materiais
Plano do projeto de software SIGEM - Sistema de gestão de materiais
 
Ppt pd
Ppt pdPpt pd
Ppt pd
 
Apostila Visual Basic
Apostila Visual BasicApostila Visual Basic
Apostila Visual Basic
 
Gestao contexto qos_qoe
Gestao contexto qos_qoeGestao contexto qos_qoe
Gestao contexto qos_qoe
 
Xdmcp
XdmcpXdmcp
Xdmcp
 
O uso de programação reflexiva para o desenvolvimento de aplicações comerciai...
O uso de programação reflexiva para o desenvolvimento de aplicações comerciai...O uso de programação reflexiva para o desenvolvimento de aplicações comerciai...
O uso de programação reflexiva para o desenvolvimento de aplicações comerciai...
 
Servidor de Help Desk Ocomon
Servidor de Help Desk OcomonServidor de Help Desk Ocomon
Servidor de Help Desk Ocomon
 
Monitoramento
MonitoramentoMonitoramento
Monitoramento
 
Relatorio andrest
Relatorio andrestRelatorio andrest
Relatorio andrest
 
ThingProvider-Proposal
ThingProvider-ProposalThingProvider-Proposal
ThingProvider-Proposal
 
Android juliana-mono
Android juliana-monoAndroid juliana-mono
Android juliana-mono
 
Open vpn
Open vpnOpen vpn
Open vpn
 
Plano de Projeto SGS
Plano de Projeto SGSPlano de Projeto SGS
Plano de Projeto SGS
 
Jdbc
JdbcJdbc
Jdbc
 

Último

Nova BNCC Atualizada para novas pesquisas
Nova BNCC Atualizada para novas pesquisasNova BNCC Atualizada para novas pesquisas
Nova BNCC Atualizada para novas pesquisasraveccavp
 
A Arte de Escrever Poemas - Dia das Mães
A Arte de Escrever Poemas - Dia das MãesA Arte de Escrever Poemas - Dia das Mães
A Arte de Escrever Poemas - Dia das MãesMary Alvarenga
 
COMPETÊNCIA 1 DA REDAÇÃO DO ENEM - REDAÇÃO ENEM
COMPETÊNCIA 1 DA REDAÇÃO DO ENEM - REDAÇÃO ENEMCOMPETÊNCIA 1 DA REDAÇÃO DO ENEM - REDAÇÃO ENEM
COMPETÊNCIA 1 DA REDAÇÃO DO ENEM - REDAÇÃO ENEMVanessaCavalcante37
 
ALMANANHE DE BRINCADEIRAS - 500 atividades escolares
ALMANANHE DE BRINCADEIRAS - 500 atividades escolaresALMANANHE DE BRINCADEIRAS - 500 atividades escolares
ALMANANHE DE BRINCADEIRAS - 500 atividades escolaresLilianPiola
 
Bullying - Texto e cruzadinha
Bullying        -     Texto e cruzadinhaBullying        -     Texto e cruzadinha
Bullying - Texto e cruzadinhaMary Alvarenga
 
trabalho wanda rocha ditadura
trabalho wanda rocha ditaduratrabalho wanda rocha ditadura
trabalho wanda rocha ditaduraAdryan Luiz
 
Modelos de Desenvolvimento Motor - Gallahue, Newell e Tani
Modelos de Desenvolvimento Motor - Gallahue, Newell e TaniModelos de Desenvolvimento Motor - Gallahue, Newell e Tani
Modelos de Desenvolvimento Motor - Gallahue, Newell e TaniCassio Meira Jr.
 
Slides Lição 04, Central Gospel, O Tribunal De Cristo, 1Tr24.pptx
Slides Lição 04, Central Gospel, O Tribunal De Cristo, 1Tr24.pptxSlides Lição 04, Central Gospel, O Tribunal De Cristo, 1Tr24.pptx
Slides Lição 04, Central Gospel, O Tribunal De Cristo, 1Tr24.pptxLuizHenriquedeAlmeid6
 
Bullying - Atividade com caça- palavras
Bullying   - Atividade com  caça- palavrasBullying   - Atividade com  caça- palavras
Bullying - Atividade com caça- palavrasMary Alvarenga
 
ABRIL VERDE.pptx Slide sobre abril ver 2024
ABRIL VERDE.pptx Slide sobre abril ver 2024ABRIL VERDE.pptx Slide sobre abril ver 2024
ABRIL VERDE.pptx Slide sobre abril ver 2024Jeanoliveira597523
 
Pedologia- Geografia - Geologia - aula_01.pptx
Pedologia- Geografia - Geologia - aula_01.pptxPedologia- Geografia - Geologia - aula_01.pptx
Pedologia- Geografia - Geologia - aula_01.pptxleandropereira983288
 
1.ª Fase do Modernismo Brasileira - Contexto histórico, autores e obras.
1.ª Fase do Modernismo Brasileira - Contexto histórico, autores e obras.1.ª Fase do Modernismo Brasileira - Contexto histórico, autores e obras.
1.ª Fase do Modernismo Brasileira - Contexto histórico, autores e obras.MrPitobaldo
 
William J. Bennett - O livro das virtudes para Crianças.pdf
William J. Bennett - O livro das virtudes para Crianças.pdfWilliam J. Bennett - O livro das virtudes para Crianças.pdf
William J. Bennett - O livro das virtudes para Crianças.pdfAdrianaCunha84
 
AULA SOBRE AMERICA LATINA E ANGLO SAXONICA.pptx
AULA SOBRE AMERICA LATINA E ANGLO SAXONICA.pptxAULA SOBRE AMERICA LATINA E ANGLO SAXONICA.pptx
AULA SOBRE AMERICA LATINA E ANGLO SAXONICA.pptxLaurindo6
 
LEMBRANDO A MORTE E CELEBRANDO A RESSUREIÇÃO
LEMBRANDO A MORTE E CELEBRANDO A RESSUREIÇÃOLEMBRANDO A MORTE E CELEBRANDO A RESSUREIÇÃO
LEMBRANDO A MORTE E CELEBRANDO A RESSUREIÇÃOColégio Santa Teresinha
 
“Sobrou pra mim” - Conto de Ruth Rocha.pptx
“Sobrou pra mim” - Conto de Ruth Rocha.pptx“Sobrou pra mim” - Conto de Ruth Rocha.pptx
“Sobrou pra mim” - Conto de Ruth Rocha.pptxthaisamaral9365923
 
Programa de Intervenção com Habilidades Motoras
Programa de Intervenção com Habilidades MotorasPrograma de Intervenção com Habilidades Motoras
Programa de Intervenção com Habilidades MotorasCassio Meira Jr.
 
Livro O QUE É LUGAR DE FALA - Autora Djamila Ribeiro
Livro O QUE É LUGAR DE FALA  - Autora Djamila RibeiroLivro O QUE É LUGAR DE FALA  - Autora Djamila Ribeiro
Livro O QUE É LUGAR DE FALA - Autora Djamila RibeiroMarcele Ravasio
 
CRÔNICAS DE UMA TURMA - TURMA DE 9ºANO - EASB
CRÔNICAS DE UMA TURMA - TURMA DE 9ºANO - EASBCRÔNICAS DE UMA TURMA - TURMA DE 9ºANO - EASB
CRÔNICAS DE UMA TURMA - TURMA DE 9ºANO - EASBAline Santana
 
11oC_-_Mural_de_Portugues_4m35.pptxTrabalho do Ensino Profissional turma do 1...
11oC_-_Mural_de_Portugues_4m35.pptxTrabalho do Ensino Profissional turma do 1...11oC_-_Mural_de_Portugues_4m35.pptxTrabalho do Ensino Profissional turma do 1...
11oC_-_Mural_de_Portugues_4m35.pptxTrabalho do Ensino Profissional turma do 1...licinioBorges
 

Último (20)

Nova BNCC Atualizada para novas pesquisas
Nova BNCC Atualizada para novas pesquisasNova BNCC Atualizada para novas pesquisas
Nova BNCC Atualizada para novas pesquisas
 
A Arte de Escrever Poemas - Dia das Mães
A Arte de Escrever Poemas - Dia das MãesA Arte de Escrever Poemas - Dia das Mães
A Arte de Escrever Poemas - Dia das Mães
 
COMPETÊNCIA 1 DA REDAÇÃO DO ENEM - REDAÇÃO ENEM
COMPETÊNCIA 1 DA REDAÇÃO DO ENEM - REDAÇÃO ENEMCOMPETÊNCIA 1 DA REDAÇÃO DO ENEM - REDAÇÃO ENEM
COMPETÊNCIA 1 DA REDAÇÃO DO ENEM - REDAÇÃO ENEM
 
ALMANANHE DE BRINCADEIRAS - 500 atividades escolares
ALMANANHE DE BRINCADEIRAS - 500 atividades escolaresALMANANHE DE BRINCADEIRAS - 500 atividades escolares
ALMANANHE DE BRINCADEIRAS - 500 atividades escolares
 
Bullying - Texto e cruzadinha
Bullying        -     Texto e cruzadinhaBullying        -     Texto e cruzadinha
Bullying - Texto e cruzadinha
 
trabalho wanda rocha ditadura
trabalho wanda rocha ditaduratrabalho wanda rocha ditadura
trabalho wanda rocha ditadura
 
Modelos de Desenvolvimento Motor - Gallahue, Newell e Tani
Modelos de Desenvolvimento Motor - Gallahue, Newell e TaniModelos de Desenvolvimento Motor - Gallahue, Newell e Tani
Modelos de Desenvolvimento Motor - Gallahue, Newell e Tani
 
Slides Lição 04, Central Gospel, O Tribunal De Cristo, 1Tr24.pptx
Slides Lição 04, Central Gospel, O Tribunal De Cristo, 1Tr24.pptxSlides Lição 04, Central Gospel, O Tribunal De Cristo, 1Tr24.pptx
Slides Lição 04, Central Gospel, O Tribunal De Cristo, 1Tr24.pptx
 
Bullying - Atividade com caça- palavras
Bullying   - Atividade com  caça- palavrasBullying   - Atividade com  caça- palavras
Bullying - Atividade com caça- palavras
 
ABRIL VERDE.pptx Slide sobre abril ver 2024
ABRIL VERDE.pptx Slide sobre abril ver 2024ABRIL VERDE.pptx Slide sobre abril ver 2024
ABRIL VERDE.pptx Slide sobre abril ver 2024
 
Pedologia- Geografia - Geologia - aula_01.pptx
Pedologia- Geografia - Geologia - aula_01.pptxPedologia- Geografia - Geologia - aula_01.pptx
Pedologia- Geografia - Geologia - aula_01.pptx
 
1.ª Fase do Modernismo Brasileira - Contexto histórico, autores e obras.
1.ª Fase do Modernismo Brasileira - Contexto histórico, autores e obras.1.ª Fase do Modernismo Brasileira - Contexto histórico, autores e obras.
1.ª Fase do Modernismo Brasileira - Contexto histórico, autores e obras.
 
William J. Bennett - O livro das virtudes para Crianças.pdf
William J. Bennett - O livro das virtudes para Crianças.pdfWilliam J. Bennett - O livro das virtudes para Crianças.pdf
William J. Bennett - O livro das virtudes para Crianças.pdf
 
AULA SOBRE AMERICA LATINA E ANGLO SAXONICA.pptx
AULA SOBRE AMERICA LATINA E ANGLO SAXONICA.pptxAULA SOBRE AMERICA LATINA E ANGLO SAXONICA.pptx
AULA SOBRE AMERICA LATINA E ANGLO SAXONICA.pptx
 
LEMBRANDO A MORTE E CELEBRANDO A RESSUREIÇÃO
LEMBRANDO A MORTE E CELEBRANDO A RESSUREIÇÃOLEMBRANDO A MORTE E CELEBRANDO A RESSUREIÇÃO
LEMBRANDO A MORTE E CELEBRANDO A RESSUREIÇÃO
 
“Sobrou pra mim” - Conto de Ruth Rocha.pptx
“Sobrou pra mim” - Conto de Ruth Rocha.pptx“Sobrou pra mim” - Conto de Ruth Rocha.pptx
“Sobrou pra mim” - Conto de Ruth Rocha.pptx
 
Programa de Intervenção com Habilidades Motoras
Programa de Intervenção com Habilidades MotorasPrograma de Intervenção com Habilidades Motoras
Programa de Intervenção com Habilidades Motoras
 
Livro O QUE É LUGAR DE FALA - Autora Djamila Ribeiro
Livro O QUE É LUGAR DE FALA  - Autora Djamila RibeiroLivro O QUE É LUGAR DE FALA  - Autora Djamila Ribeiro
Livro O QUE É LUGAR DE FALA - Autora Djamila Ribeiro
 
CRÔNICAS DE UMA TURMA - TURMA DE 9ºANO - EASB
CRÔNICAS DE UMA TURMA - TURMA DE 9ºANO - EASBCRÔNICAS DE UMA TURMA - TURMA DE 9ºANO - EASB
CRÔNICAS DE UMA TURMA - TURMA DE 9ºANO - EASB
 
11oC_-_Mural_de_Portugues_4m35.pptxTrabalho do Ensino Profissional turma do 1...
11oC_-_Mural_de_Portugues_4m35.pptxTrabalho do Ensino Profissional turma do 1...11oC_-_Mural_de_Portugues_4m35.pptxTrabalho do Ensino Profissional turma do 1...
11oC_-_Mural_de_Portugues_4m35.pptxTrabalho do Ensino Profissional turma do 1...
 

NFC

  • 1. INSTITUTO FEDERAL DE PERNAMBUCO (IFPE) - CAMPUS RECIFE DEPARTAMENTO ACADÊMICO DE SISTEMAS, PROCESSOS E CONTROLES ELETRO-ELETRÔNICO (DASE) COORDENAÇÃO DO CURSO SUPERIOR TECNOLÓGO DE ANÁLISE E DESENVOLVIMENTO DE SISTEMAS (CTADS) RICHARDSON BRUNO DA SILVA ANDRADE RELATÓRIO Recife, PE 30 dez, 2015
  • 2. RICHARDSON BRUNO DA SILVA ANDRADE RELATÓRIO DE COMPLEMENTAÇÃO DE CARGA HORÁRIA E/OU CONTEÚDOS DE COMPONENTE CURRICULAR Relatório de Programação de Dispositivos Movéis do curso Tecnólogo em Análise e Desenvolvimento de Sistemas, do Instituto Federal de Pernambuco IFPE Campus Recife, para a complementação de carga horária e/ou conteúdos de componente curricular Aspecto Avançado em Desenvolvimento. Professor: Ramide Augusto Sales Dantas Recife, PE 30 dez, 2015
  • 3. LISTA DE FIGURAS FIGURA 1 - CONFIGURAÇÃO DO ANDROIDMANISFEST.XML...................................................................................6 FIGURA 2 - CLASSE NFCFORGROUNDDISPATCHER.................................................................................................7 FIGURA 3 - ATIVAÇÃO E DESATIVAÇÃO NASATIVIDADESDE ESCRITA/LEITURADO NFCFOREGROUNDDISPATCHER........................................................................................................................7 FIGURA 4 - READER ACTIVITY.....................................................................................................................................9 FIGURA 5 - NOVO INTENT AO APROXIMA READER E TAG......................................................................................10 FIGURA 6 - MÉTODO QUE EXTRAI A ESTRUTURA MESSAGES DA TAG.................................................................10 FIGURA 7 –PREPARANDO OS PARÂMETROS PARA PASSAR PARA O MÉTODO DE GRAVAÇÃO DATAG .....................................11 FIGURA 8 - MÉTODO DE GRAVAÇÃO NDEFMESSAGE NA ATIVIDADE WRITER/MÓDULO DE ESCRITA..........13
  • 4. SUMÁRIO Lista de Figuras.....................................................................................................................2 Sumário...............................................................................................................................1 1 Introdução.........................................................................................................................2 2 Desenvolvimento Técnico..................................................................................................3 2.1 NFC .....................................................................................................................3 2.1.1 Definição.......................................................................................................3 2.1.2 Tecnologia .....................................................................................................3 2.1.3 Especificação.................................................................................................3 2.1.4 Dispositivos ...................................................................................................4 2.1.5 Modo de Operação.........................................................................................4 2.1.6 Leitura/Escrita................................................................................................4 2.1.7 Aplicações.....................................................................................................5 2.2 DESENVOLVIMENTO DE APLICAÇÃO ANDROIDUSANDONFC NO MODO DE OPERAÇÃO READER/WRITER ...............................................................................5 2.2.1 Descrição do desenvolvimento ........................................................................5 2.3 Biblioteca..............................................................................................................5 2.4 Restrições .............................................................................................................5 2.5 Configuração do AndroidManisfest.xml..................................................................5 2.6 Capturando o intent disparado na aplicação.............................................................6 2.7 Módulo de Leitura .................................................................................................8 2.7.1 Extraindo informação da Tag..........................................................................9 2.8 Módulo de Gravação............................................................................................11 Considerações Finais ..........................................................................................................14 Referências........................................................................................................................15
  • 5. 2 1 INTRODUÇÃO O objetivo deste relatório consiste em demonstrar um estudo e descrição da tecnologia Near Field Comunnication (NFC), comunicação de campo por aproximidade e seu uso no Android. Também será abordado a construção de uma aplicação Android usando NFC.
  • 6. 3 2 DESENVOLVIMENTOTÉCNICO 2.1 NFC 2.1.1 Definição Segundo IGOE, COLEMAN e JEPSON (2014), NFC é construído sobre Radio- Frequency IDentification (RFID) / IDentificação por RádioFrequência para permitir trocas mais complexas entre os usuários. De forma complementar, conforme COSKUN, OK e OZDENIZC (2013), é um dos ativadores da computação umbíqua. É projetado para várias tecnologias como comunicação wireless, serviços mobile, aplicação mobile e smart card. E também, orientado a programação server-side web, cloud services e tecnologia Extensible Markup Language (XML) / Linguagem de Marcação Extensível contribuem para seu melhoramento. De modo geral, a visão principal do NFC é a integração de informação pessoal e privada para fones mobile. 2.1.2 Tecnologia NFC nasce 2002 pela parceria Philips e Sony. A ECMA adotou tempo depois. A IEC adota um ano mais tarde. Em 2004, promove-se o forum NFC criado pela Nokia, Sony e Philips. Depois, ocorre e reconhecimento pelas instituições de padronização como ISO, IEC, ETSI e ECMA (COSKUN, OK e OZDENIZC, 2013). 2.1.3 Especificação O NFC atua por rádio frequência e seu sinal corresponde 13.56 MHz com uma largura de banda de até 424 kpbs na forma bidirecional (COSKUN, OK e OZDENIZC,
  • 7. 4 2013). 2.1.4 Dispositivos São três os serviços que NFC habilita: enabled mobile phone/fones móveis ativados, reader/leitor, tag/etiqueta (COSKUN, OK e OZDENIZC, 2013). 2.1.5 Modo de Operação O NFC permite três modos de interação, reader/writer, peer-to-peer e smart card. Mas para obedecer o escopo do desenvolvimento dessa aplicação com Android, só será descrito o modo de interação reader/writer. 2.1.6 Leitura/Escrita Esse modelo de uso pode ser descrito numa interação entre reader/modo de leitura ou writer/modo de escrita em uma tag/etiqueta: como se segue: 1. Requisição de leitura 2. Transferência dos dados 3. Processamento com despositivo 4. Uso do serviço adicional 5. Requisição de escrita 6. Conteúdo armazenado
  • 8. 5 2.1.7 Aplicações As aplicações para esse modo de operação consiste transferir tipos de dados como textos, Uniform Resource Locator (URL)/Localizador de Recurso Uniforme (COSKUN, OK e OZDENIZC, 2013). 2.2 DESENVOLVIMENTO DE APLICAÇÃO ANDROID USANDO NFC NO MODO DE OPERAÇÃO READER/WRITER 2.2.1 Descrição do desenvolvimento A aplicação realiza a operação de escrita e leitura de conteúdo na tag. Logo após selecionado a operação, aproxima-se o smartphone e a tag. O intent depois de lançado, ou mostra o conteúdo lido ou a confirmação de gravação. 2.3 Biblioteca API Android nativa possiblita o uso dos recursos por meio de interface a partir do pacote “android.nfc”. 2.4 Restrições O nível mínimo exigido é 9 da API. Mas para aproveitar de recursos adicionais o nível 10 da API Android é considerada. 2.5 Configuração do AndroidManisfest.xml O primeiro passo é verificar recurso de hardware no despositivo. Também não se esquecer de dar permissão ao aplicativo para utilizar o recurso de hawdware. E antes
  • 9. 6 de mais nada, configurar a atribuição a versão mínima do SDK para dar suporte os métodos da API de NFC : Figura 1 - Configuração do AndroidManisfest.xml 2.6 Capturando o intent disparado na aplicação Cria-se a classe que implementa ForegroundDispatcher para captura o intent para ficar em stand-by no aguardo pelo escolanador da atividade ou sistema operacional para ganhar a tela. Como aplicação captura, no construtor passa-se a instância de leitura ou escrita a qual o chama. Atribui-se adapter e recebe o intent pendente iniciado antes que possa ser mostrado na tela. No método enable, realizamos o filtro baseado na classe adapter NFC para a tag qual ser lida. Uma vez realizado passando o intent pedente que aguardou e em seguida repassa-se para o processamento. publicclassNfcForegroundDispatcherimplementsForegroundDispatcher{ private staticfinal StringTAG= "NfcForegroundDispatcher"; private final NfcAdapternfcAdapter; private final PendingIntentnfcPendingIntent; private final ActivityreceivedActivity; publicNfcForegroundDispatcher(Activityactivity) { receivedActivity=activity; nfcAdapter= NfcAdapter.getDefaultAdapter(activity); nfcPendingIntent=PendingIntent.getActivity(activity,0, newIntent(activity, activity.getClass()).addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP),0); } publicvoidenable() {
  • 10. 7 Log.d(TAG,"enableForegroundMode"); IntentFiltertagDetected=new IntentFilter(NfcAdapter.ACTION_TAG_DISCOVERED); IntentFilter[]TagFilters=new IntentFilter[] { tagDetected}; nfcAdapter.enableForegroundDispatch(receivedActivity,nfcPendingIntent, TagFilters,null); } publicvoiddisable() { Log.d(TAG,"disableForegroundMode"); nfcAdapter.disableForegroundDispatch(receivedActivity); } } Figura 2 - Classe NFCForgroundDispatcher Ainda mais, realiza-se em alguns métods do ciclo de vida da atividade que contém o NFCForgroundDispatcher, a ativação do seu método de ativação sobre onResume e desativação no método onPause como é mostrado: public void onResume() { super.onResume(); foregroundDispatcher.enable(); } @Override public void onPause() { super.onPause(); foregroundDispatcher.disable(); } Figura 3 - Ativação e desativação nas atividades de escrita/leitura do NFCForegroundDispatcher
  • 11. 8 2.7 Módulo de Leitura Agrega-se a classe que captura o intent e passa objeto da atividade. Criaremos alguns widgets nas tela para quando lido a url repasse para ele o conteúdo e assim ao clicar sobre o butão dispare para webview. publicclassReaderActivityextendsActionBarActivity{ private NfcAdaptermyNfcAdapter; private TextViewmyText; private Stringpayload; private SpinnerspSetor; private TextViewtvPpi; private ButtonbtVisitarUrl; private byte payloadHeader; private ForegroundDispatcherforegroundDispatcher; private NdefMessage[] messages; private Stringdestin= newString(); @Override protectedvoidonCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_reader); foregroundDispatcher=newNfcForegroundDispatcher(this); tvPpi = (TextView) findViewById(R.id.tvPpi); btVisitarUrl =(Button) findViewById(R.id.btVisitarUrl); addListenerOnSpinnerItemSelection();
  • 12. 9 Toast.makeText(this,"Aproxime seuaparelhoaoetiquetainteligente NFC",Toast.LENGTH_LONG).show(); btVisitarUrl.setOnClickListener(newView.OnClickListener() { @Override publicvoidonClick(Viewv) { IntentwebViewIntent=newIntent(v.getContext(),WebViewActivity.class); payload= payload.replace("u0001",""); webViewIntent.putExtra("url","http://"+payload+ destin); startActivity(webViewIntent); Figura 4 - Reader Activity 2.7.1 Extraindo informação da Tag Implementaremos o método onNewIntent quando uma nova intent tente ganhar o foreground haverá o filtro do dispachante que agregamos e repassamos para o método getNdefMessages no intent. Como retorno, tem-se um conjunto do tipo NdefMessages como array. Logo, pega-se as gravações contido nele, a recuperação do conteúdo principal é obtido pelo método payload. Tag detectedTag= intent.getParcelableExtra(NfcAdapter.EXTRA_TAG); //PREPARETHE NDEF MESSAGE byte[] uriField="1-dot-map-indoor-ifpe-recife-1021.appsppoot.com/bl-a- t.html?ppi=e&destin=".getBytes(Charset.forName("US-ASCII")); byte[] payload=newbyte[uriField.length+1]; payload[0] =0x01; System.arraycopy(uriField,0,payload,1,uriField.length); NdefRecorduriRecord=newNdefRecord( NdefRecord.TNF_WELL_KNOWN,NdefRecord.RTD_URI,new byte[0],payload);
  • 13. 10 NdefMessagenewMessage=newNdefMessage(new NdefRecord[] { uriRecord}); writeNdefMessageToTag(newMessage,detectedTag); Figura 5 - Novo Intent ao aproxima reader e tag NdefMessage[] getNdefMessages(Intentintent) { NdefMessage[]message=null; if (NfcAdapter.ACTION_TAG_DISCOVERED.equals(intent.getAction())) { Parcelable[] rawMessages= intent.getParcelableArrayExtra(NfcAdapter.EXTRA_NDEF_MESSAGES); if (rawMessages!=null) { message = newNdefMessage[rawMessages.length]; for (inti = 0; i < rawMessages.length;i++) { message[i] =(NdefMessage) rawMessages[i]; } } else { byte[] empty=newbyte[] {}; NdefRecordrecord= newNdefRecord( NdefRecord.TNF_WELL_KNOWN,empty, empty,empty); NdefMessage msg=newNdefMessage(new NdefRecord[]{ record} ); message = newNdefMessage[]{ msg}; } }/*else { Log.d("","Unknownintent."); finish(); }*/ returnmessage; } Figura 6 - Método que extrai a estrutura messages da Tag
  • 14. 11 2.8 Módulo de Gravação No médoto onCreate do classe Writer tem o link e atribuição da variável ndefRecord. Depois ocorre o encapsulamento por NdefMessage. Logo em seguida repassa a tag detectada e NdefMessage como mostrado: byte[] uriField="1-dot-map-indoor-ifpe-recife-1021.appsppoot.com/bl-a- t.html?ppi=e&destin=".getBytes(Charset.forName("US-ASCII")); byte[] payload=newbyte[uriField.length+1]; payload[0] =0x01; System.arraycopy(uriField,0, payload,1,uriField.length); NdefRecorduriRecord=newNdefRecord( NdefRecord.TNF_WELL_KNOWN,NdefRecord.RTD_URI,new byte[0],payload); NdefMessagenewMessage=newNdefMessage(new NdefRecord[] { uriRecord}); // WRITE DATA TO TAG writeNdefMessageToTag(newMessage,detectedTag); Figura 7 - Preparando os parâmetros para passar para o método de gravação da tag No método, pode-se observar a verificação da tag, liga antes de gravação, se não está nula; se é apenas de leitura; se não houver mais espaço suficiente na tag; se ocorre alguma falha ou se o formato das messages é reconhecido. Caso não entre em nenhuma condição, a escrita é realizada com sucesso: boolean writeNdefMessageToTag(NdefMessage message,TagdetectedTag) { intsize = message.toByteArray().length; try { Ndef ndef =Ndef.get(detectedTag); if (ndef !=null) { ndef.connect();
  • 15. 12 if (!ndef.isWritable()) { Toast.makeText(this,"Tagisread-only.",Toast.LENGTH_SHORT).show(); return false; } if (ndef.getMaxSize() <size) { Toast.makeText(this,"The datacannotwrittentotag,Tag capacity is" + ndef.getMaxSize()+" bytes,message is" + size + " bytes.",Toast.LENGTH_SHORT).show(); return false; } ndef.writeNdefMessage(message); ndef.close(); Toast.makeText(this,"Message iswrittentag.",Toast.LENGTH_SHORT).show(); returntrue; } else { NdefFormatable ndefFormat=NdefFormatable.get(detectedTag); if (ndefFormat!=null) { try { ndefFormat.connect(); ndefFormat.format(message); ndefFormat.close(); Toast.makeText(this,"The dataiswrittentothe tag ", Toast.LENGTH_SHORT).show(); returntrue; } catch (IOExceptione) { Toast.makeText(this,"Failedtoformattag", Toast.LENGTH_SHORT).show(); returnfalse; }
  • 16. 13 } else { Toast.makeText(this,"NDEFisnotsupported",Toast.LENGTH_SHORT).show(); return false; } } } catch (Exceptione) { Toast.makeText(this,"Write opreationisfailed",Toast.LENGTH_SHORT).show(); } returnfalse; } Figura 8 - Método de gravação NdefMessage na Atividade Writer/Módulo de escrita.
  • 17. 14 CONSIDERAÇÕES FINAIS Este relatório apresentou as características do NFC, como : definição, tecnologia, especificação, dispositivos e modo de operação, com destaque em leitura e escrita e exemplos de uso. Além disso, mostrou passo a passo o desenvolvimento de aplicação android com NFC no modo leitura e escrita. Entre as etapas vistas constam o contexto de desenvolvimento, o nível de biblioteca, as restrições, a configuração, a criação do módulo de leitura e escrita.
  • 18. 15 REFERÊNCIAS COSKUN,V.;OK,K.; OZDENIZC,B. Professional NFCApplicationDevelopmentforAndroid. [S.l.]:JohnWiley&Sons,Ltd.,2013. IGOE, T.; COLEMAN,D.; JEPSON,B. BeginningNFC.Califórnia:O’ReilllyMedica,Inc.,2014.