SlideShare uma empresa Scribd logo
1 de 35
Baixar para ler offline
Desenvolvimento de
Apps e Games para Android




Por Erisvaldo Júnior.   Parte 8 (06/10/2011)
RECAPITULANDO…
TwitterHandler
NewsDroid - Controladores   Classe responsável por ler um arquivo XML e realizar o parsing
                            do mesmo, obtendo o seu conteúdo. Para isso, faz-se uso da
                            API SAX (Simple API for XML), nativa do Android SDK.

              http://twitter.com/status/user_timeline/yupistudiosBR.xml ( @yupistudiosBR )
TwitterHandler (Tweet)
NewsDroid - Controladores   No arquivo XML, cada tweet deve ser lido através dos métodos
                            startElement()   ,   characters()   e     endElement()    de
                            DefaultHandler.



                                 No arquivo XML, cada tweet está
                                 representado por uma tag <status>,
                                 possuindo um texto (<text>), uma
                                 data (<created_at>), contagem de
                                 retweets (<retweet_count>), entre
                                 outras informações.
TwitterHandler (Parsing)
NewsDroid - Controladores   A API SAX é bastante simples de ser utilizada. Basicamente, ao
                            analisar o trecho <text>Texto do Tweet</text>, o Handler
                            trabalha com a chamada de três métodos:


                                • startElement() – Essa função é chamada quando o parser
                                encontra um elemento. No exemplo acima, startElement() é
                                invocado com a passagem de “text” como parâmetro;

                                • characters() – Chamada logo após o startElement() e antes
                                de se encontrar o final do elemento. No exemplo acima,
                                characters() é invocado com a passagem de “Texto do
                                Tweet” como parâmetro;

                                • endElement() – Chamada quando o parser encontra o final
                                do elemento. No exemplo acima, endElement() é invocado
                                após characters() com a passagem de “text” como
                                parâmetro.
TwitterHandler – SAXParser
               A partir de um SAXParserFactory, cria-se um XMLParser e, a partir
               deste, um XMLReader. Por fim, define-se o ContentHandler e então
NewsDroid - Controladores
               inicia-se o parsing.

               Em código:
TwitterHandler – Técnica para leitura do XML
Cria-se um StringBuffer no startElement(). No characters(), adiciona-se os
   NewsDroid - Controladores
caracteres ao StringBuffer criado. Por fim, no endElement(), verifica-se a
tag que foi lida e a informação é repassada para a variável desejada.




                               Dessa forma, quando o endElement() é chamado,
                               descobre-se em que tag o parser se encontra e,
                               então, basta passar o conteúdo do StringBuffer
                               para a variável desejada.

                               No endElement(), uma vez que o tweet atual já foi
                               lido, pode-se armazenar os dados em um banco de
                               dados, se desejar.
Roteiro da Aula



WEBSERVICES EM       CONTENT
   ANDROID          PROVIDER E
                       SMS




                        Bem vindo ao mundo da mobilidade
WEBSERVICES EM
   ANDROID
RESTful Web Services

Serviços construídos para trabalhar melhor na Web. REST
(Representational State Transfer) é um estilo de arquitetura criado
em 2000 que provê uma interface uniforme que, aplicada a
serviços web, proporcionam desempenho, escalabilidade e
flexibilidade.

Os dados e funcionalidades em REST são considerados Resources,
sendo que cada recurso pode ser acessado por uma URI – um link
web. Um recurso possui uma série de operações bem definidas.
RESTful Web Services

Os Web Services RESTful mapeiam os quatro métodos de
requisições HTTP, conforme a tabela abaixo.
Jersey

Implementação da Oracle para a JSR 311 (JAX-RS): Java API para
RESTful Web Services.


Efetue o download em http://jersey.java.net (ZIP) e depois basta
incluir as bibliotecas da pasta lib/ no Build Path do seu projeto
Web no Eclipse.
Jersey

Após criar um novo projeto Web no Eclipse com o Jersey, basta
editar o web.xml adicionando este <servlet> dentro da tag <web-
app>.
Jersey

Vamos ver se está funcionando, implementando o seguinte Hello
WOrld:
Jersey

Vamos criar a classe Pessoa com dois atributos: id e nome.
Jersey

Agora o PessoaResource, que é justamente o nosso WebService
que vai retornar objetos do tipo Pessoa.
App Android

O arquivo será lido de 1024 em 1024 bytes.
App Android

O método getRESTFileContent(String url) vai ler o arquivo através
de HttpGet do org.apache.
App Android

A leitura das pessoas do nosso
Web Service é trivial.

O JSONObject da URI de pessoas
retorna um array de objetos
através do método
getJSONArray(). Basta iterar.

Para obter uma pessoa específica,
É só acessar a URI correspondente
Ao ID da pessoa e o JSONObject
Já trará como retorno o objeto
da pessoa desejada.
App Android
Obter as informações de um Web Service pode ser
feito através de uma AsyncTask.
CONTENT PROVIDER E SMS
Content Providers

Única maneira de compartilhar dados entre aplicações. Android
vem com Content Providers nativos para áudio, vídeo, imagens,
contatos, etc. Eles estão disponíveis no pacote android.provider.

Para tornar os dados de sua aplicação públicos, pode-se criar um
Content Provider (herdando da classe ContentProvider) ou, ainda,
adicionar os dados a um Content Provider já existente, desde que
esse provedor controle o mesmo tipo de informação e você tenha
permissão de escrita.

 Todos os provedores de conteúdo implementam uma
 interface comum para adição, edição, remoção e consulta
 de dados. O cliente usa essa interface indiretamente,
 através de um ContentResolver. Um ContentProvider
 pode se comunicar com múltiplos objetos de
 ContentResolver, em diferentes aplicações e processos.
Content Providers - URIs

Cada Content Provider expõe uma URI pública que identifica o
conjunto de dados. Se um Content Provider controla múltiplos
grupos de dados (múltiplas tabelas), há uma URI para cada um. A
constante CONTENT_URI é padrão de todos os Content Providers
nativos da plataforma, conforme mostrado abaixo.




 A URI é utilizada em todas as interações com o provedor de
 conteúdo. Todos os métodos de um Content Resolver recebem a URI
 do provedor de conteúdo como parâmetro. É a URI que identifica
 com qual provedor o ContentResolver deve se comunicar e que
 tabela desse provedor está sendo acessada.
Consultando um Content Provider

Através do método query() de ContentResolver ou
managedQuery() de Activity. No caso da segunda opção, o Activity
gerencia o ciclo de vida do Cursor. A solicitação é feita através do
método startManagingCursor() de Activity.


O exemplo abaixo retorna o registro 23 dos contatos do usuário. Note que a URI
                             obtida fica similar a:
Consultando um Content Provider (Query)

Os argumentos de uma query() ou managedQuery() são os
seguintes:

Após o primeiro argumento (URI), existem outros quatro
argumentos, que são explicitados a seguir:

• O número de colunas que deve ser retornado. null retorna todas as
colunas. Os Content Providers definem constantes para as suas
colunas. Por exemplo, android.provider.Contatcs.Phones define as
seguintes constantes: _ID, NUMBER, NUMBER_KEY, NAME, etc;

• Um filtro detalhando que registros devem ser retornados,
formatado como um WHERE do SQL. null retorna todos os registros;

• Argumentos do WHERE (argumentos de seleção);

• Ordem em que os registros devem ser retornados, formatado como
um ORDER BY do SQL. null retorna uma ordem padrão.
Consultando um Content Provider (Query)

No exemplo abaixo, a consulta retorna uma lista de contatos com
os seus respectivos nomes e telefones (no caso o telefone
principal).
Consultando um Content Provider (Cursor)

O exemplo abaixo mostra como ler os nomes e telefones da lista
de contatos obtida pela Query mostrada anteriormente. Note que
o objeto cursor pode conter N registros e é necessário saber o tipo
de dado dos campos que estão sendo obtidos.
Modificando um Content Provider
(Adição de Registros)
Modificando um Content Provider
(Adicionando novos valores a um registro)
Modificando um Content Provider
(Atualizando e removendo registros)

É possível atualizar registros em lote (por exemplo, modificar uma
informação de todos os contatos) através do método update() de
ContentResolver, no qual se especifica as colunas e os valores que
devem ser alterados.


  Pode-se também excluir um registro, invocando o método
  delete() de ContentResolver, passando como parâmetro a URI
  do registro específico.

  Além disso, o método delete() também possibilita a exclusão de
  múltiplos registros, passando como URI o tipo de registro (por
  exemplo android.provider.Contacts.People.CONTENT_URI) e no
  terceiro argumento passando o filtro (“WHERE”) que fará com
  que um conjunto de registros seja excluído.
Criando um Content Provider

A maioria dos Content Providers armazenam seus dados em
SQLite, mas você também pode utilizar outro mecanismo de
persistência de sua preferência.

O procedimento para criação de um provedor de conteúdo é: criar
uma classe que herda de ContentProvider para prover acesso aos
dados e declará-lo no AndroidManifest.xml.

 Métodos que precisam ser implementados:

 • onCreate() – Preparação dos dados oferecidos;
 • getType() – Tipo de dado (MIME) que está sendo provido;
 • query() – retorna um Cursor que permite navegar pelos registros;
 • insert() – Inserção de novos dados;
 • update() – Atualização dos dados;
 • delete() – Exclusão de dados.
Criando um Content Provider

Além dos métodos que devem ser implementados, há uma série
de regras que devem ser seguidas para que o ContentProvider
possa ser devidamente aproveitado por outras aplicações.




 • CONTENT_URI – definir uma constante que especifica a URI do
 Content Provider, bem como uma constante para cada uma de suas
 tabelas;

 • definir uma constante para cada coluna, incluindo uma _ID do tipo
 inteiro;

 • Documentar cuidadosamente cada coluna. Os clientes precisam
 dessa informação para ler corretamente os dados.
Enviando um SMS
     android.telephony.SmsManager (API Level 5 ou superior)
    Android.telephony.gsm.SmsManager (API Level 4 ou inferior)
Enviando um SMS
  Faça uma aplicação que envie uma mensagem de texto (caso o texto tenha
 menos de 140 caracteres), envie uma mensagem em múltiplas partes (caso o
texto tenha mais de 140 caracteres) e envie uma mensagem SMS binária (caso
                  a opção Send bynary SMS esteja ativada).
obrigado
• e-mail: erisvaldo@yupistudios.com.br
• web: http://erisvaldojunior.com
• twitter: @erisvaldojunior

Mais conteúdo relacionado

Mais procurados

Android Banco de Dados
Android Banco de DadosAndroid Banco de Dados
Android Banco de DadosAlex Braz
 
Java EE 6 JPA 2.0, EJB 3.1 e CDI 1.0
Java EE 6 JPA 2.0, EJB 3.1 e CDI 1.0Java EE 6 JPA 2.0, EJB 3.1 e CDI 1.0
Java EE 6 JPA 2.0, EJB 3.1 e CDI 1.0Elvis Rocha
 
Silo.tips utilizando os-componentes-da-paleta-dbexpress-para-acesso-ao-banco-...
Silo.tips utilizando os-componentes-da-paleta-dbexpress-para-acesso-ao-banco-...Silo.tips utilizando os-componentes-da-paleta-dbexpress-para-acesso-ao-banco-...
Silo.tips utilizando os-componentes-da-paleta-dbexpress-para-acesso-ao-banco-...Edisio Nascimento
 
Android Core Aula 7 - Aplicações (Services, Broadcast Receivers, NDK/JNI)
Android Core Aula 7 - Aplicações (Services, Broadcast Receivers, NDK/JNI)Android Core Aula 7 - Aplicações (Services, Broadcast Receivers, NDK/JNI)
Android Core Aula 7 - Aplicações (Services, Broadcast Receivers, NDK/JNI)Felipe Silveira
 
xDocLet - Geração de código com xdoclet
xDocLet - Geração de código com xdocletxDocLet - Geração de código com xdoclet
xDocLet - Geração de código com xdocletDenis L Presciliano
 
UNIFAL - MySQL Triggers - 5.0/5.6
UNIFAL - MySQL Triggers - 5.0/5.6UNIFAL - MySQL Triggers - 5.0/5.6
UNIFAL - MySQL Triggers - 5.0/5.6Wagner Bianchi
 
Mini curso hibernate com anotações
Mini curso hibernate com anotaçõesMini curso hibernate com anotações
Mini curso hibernate com anotaçõesdieguinhomcz
 

Mais procurados (20)

Spring Data Jpa
Spring Data JpaSpring Data Jpa
Spring Data Jpa
 
Android Banco de Dados
Android Banco de DadosAndroid Banco de Dados
Android Banco de Dados
 
Java 14
Java 14Java 14
Java 14
 
Banco de Dados - Android
Banco de Dados - AndroidBanco de Dados - Android
Banco de Dados - Android
 
Fundamentos de JDBC
Fundamentos de JDBCFundamentos de JDBC
Fundamentos de JDBC
 
Java EE 6 JPA 2.0, EJB 3.1 e CDI 1.0
Java EE 6 JPA 2.0, EJB 3.1 e CDI 1.0Java EE 6 JPA 2.0, EJB 3.1 e CDI 1.0
Java EE 6 JPA 2.0, EJB 3.1 e CDI 1.0
 
Silo.tips utilizando os-componentes-da-paleta-dbexpress-para-acesso-ao-banco-...
Silo.tips utilizando os-componentes-da-paleta-dbexpress-para-acesso-ao-banco-...Silo.tips utilizando os-componentes-da-paleta-dbexpress-para-acesso-ao-banco-...
Silo.tips utilizando os-componentes-da-paleta-dbexpress-para-acesso-ao-banco-...
 
PowerShell e Active Directory
PowerShell e Active DirectoryPowerShell e Active Directory
PowerShell e Active Directory
 
Acessando o MySql com o Python
Acessando o MySql com o PythonAcessando o MySql com o Python
Acessando o MySql com o Python
 
J530 14 xdoclet
J530 14 xdocletJ530 14 xdoclet
J530 14 xdoclet
 
J530 3 jndi
J530 3 jndiJ530 3 jndi
J530 3 jndi
 
Spring Data Jpa
Spring Data JpaSpring Data Jpa
Spring Data Jpa
 
Android Core Aula 7 - Aplicações (Services, Broadcast Receivers, NDK/JNI)
Android Core Aula 7 - Aplicações (Services, Broadcast Receivers, NDK/JNI)Android Core Aula 7 - Aplicações (Services, Broadcast Receivers, NDK/JNI)
Android Core Aula 7 - Aplicações (Services, Broadcast Receivers, NDK/JNI)
 
Java6
Java6Java6
Java6
 
Hibernate-consultas
Hibernate-consultasHibernate-consultas
Hibernate-consultas
 
xDocLet - Geração de código com xdoclet
xDocLet - Geração de código com xdocletxDocLet - Geração de código com xdoclet
xDocLet - Geração de código com xdoclet
 
Fundamentos de Objetos Remotos
Fundamentos de Objetos RemotosFundamentos de Objetos Remotos
Fundamentos de Objetos Remotos
 
UNIFAL - MySQL Triggers - 5.0/5.6
UNIFAL - MySQL Triggers - 5.0/5.6UNIFAL - MySQL Triggers - 5.0/5.6
UNIFAL - MySQL Triggers - 5.0/5.6
 
Mini curso hibernate com anotações
Mini curso hibernate com anotaçõesMini curso hibernate com anotações
Mini curso hibernate com anotações
 
Hibernate conceitos
Hibernate conceitosHibernate conceitos
Hibernate conceitos
 

Destaque (6)

A Era da Mobilidade
A Era da MobilidadeA Era da Mobilidade
A Era da Mobilidade
 
Android Aula 5
Android Aula 5Android Aula 5
Android Aula 5
 
Android Aula 2
Android Aula 2Android Aula 2
Android Aula 2
 
Android Aula 3
Android Aula 3Android Aula 3
Android Aula 3
 
Android Aula 4
Android Aula 4Android Aula 4
Android Aula 4
 
Android Aula 1
Android Aula 1Android Aula 1
Android Aula 1
 

Semelhante a Desenvolvimento de apps e games para android parte 8

TDC2016POA | Trilha PHP - Desenvolvendo um buscador com PHP e Elasticsearch
TDC2016POA | Trilha PHP - Desenvolvendo um buscador com PHP e ElasticsearchTDC2016POA | Trilha PHP - Desenvolvendo um buscador com PHP e Elasticsearch
TDC2016POA | Trilha PHP - Desenvolvendo um buscador com PHP e Elasticsearchtdc-globalcode
 
Desenvolvendo um buscador com PHP e Elasticsearch - Fernando Silva - Tchelinu...
Desenvolvendo um buscador com PHP e Elasticsearch - Fernando Silva - Tchelinu...Desenvolvendo um buscador com PHP e Elasticsearch - Fernando Silva - Tchelinu...
Desenvolvendo um buscador com PHP e Elasticsearch - Fernando Silva - Tchelinu...Tchelinux
 
Arquitetura: XML + RDF ate WebSemantica
Arquitetura: XML + RDF ate WebSemanticaArquitetura: XML + RDF ate WebSemantica
Arquitetura: XML + RDF ate WebSemanticaSergio Crespo
 
ASP.NET MVC 4 - Parte II - Views
ASP.NET MVC 4 - Parte II - Views ASP.NET MVC 4 - Parte II - Views
ASP.NET MVC 4 - Parte II - Views Carlos Atila Abreu
 
Consumindo dados via web service no android
Consumindo dados via web service no androidConsumindo dados via web service no android
Consumindo dados via web service no androidAlexandre Antunes
 
1 exercicio funcoes com string e manipulacao com arquivo
1 exercicio  funcoes com string e manipulacao com arquivo1 exercicio  funcoes com string e manipulacao com arquivo
1 exercicio funcoes com string e manipulacao com arquivoKievnny Mendonca
 
WebService Restful em Java
WebService Restful em JavaWebService Restful em Java
WebService Restful em Javaalexmacedo
 
Spring & Struts
Spring & StrutsSpring & Struts
Spring & Strutseduan
 

Semelhante a Desenvolvimento de apps e games para android parte 8 (20)

TDC2016POA | Trilha PHP - Desenvolvendo um buscador com PHP e Elasticsearch
TDC2016POA | Trilha PHP - Desenvolvendo um buscador com PHP e ElasticsearchTDC2016POA | Trilha PHP - Desenvolvendo um buscador com PHP e Elasticsearch
TDC2016POA | Trilha PHP - Desenvolvendo um buscador com PHP e Elasticsearch
 
Frameworks Ajax
Frameworks AjaxFrameworks Ajax
Frameworks Ajax
 
Desenvolvendo um buscador com PHP e Elasticsearch - Fernando Silva - Tchelinu...
Desenvolvendo um buscador com PHP e Elasticsearch - Fernando Silva - Tchelinu...Desenvolvendo um buscador com PHP e Elasticsearch - Fernando Silva - Tchelinu...
Desenvolvendo um buscador com PHP e Elasticsearch - Fernando Silva - Tchelinu...
 
Curso de Servlets
Curso de ServletsCurso de Servlets
Curso de Servlets
 
Iniciando com action script 3
Iniciando com action script 3Iniciando com action script 3
Iniciando com action script 3
 
Arquitetura: XML + RDF ate WebSemantica
Arquitetura: XML + RDF ate WebSemanticaArquitetura: XML + RDF ate WebSemantica
Arquitetura: XML + RDF ate WebSemantica
 
ASP.NET MVC 4 - Parte II - Views
ASP.NET MVC 4 - Parte II - Views ASP.NET MVC 4 - Parte II - Views
ASP.NET MVC 4 - Parte II - Views
 
Consumindo dados via web service no android
Consumindo dados via web service no androidConsumindo dados via web service no android
Consumindo dados via web service no android
 
1 exercicio funcoes com string e manipulacao com arquivo
1 exercicio  funcoes com string e manipulacao com arquivo1 exercicio  funcoes com string e manipulacao com arquivo
1 exercicio funcoes com string e manipulacao com arquivo
 
Php Básico - Parte 2
Php Básico - Parte 2Php Básico - Parte 2
Php Básico - Parte 2
 
Aplicações web parte 2
Aplicações web parte 2Aplicações web parte 2
Aplicações web parte 2
 
eXtensible Markup Language (XML)
eXtensible Markup Language (XML)eXtensible Markup Language (XML)
eXtensible Markup Language (XML)
 
WebService Restful em Java
WebService Restful em JavaWebService Restful em Java
WebService Restful em Java
 
Tutorial struts
Tutorial strutsTutorial struts
Tutorial struts
 
Spring & Struts
Spring & StrutsSpring & Struts
Spring & Struts
 
Aula1web html
Aula1web htmlAula1web html
Aula1web html
 
A Web é uma API
A Web é uma APIA Web é uma API
A Web é uma API
 
Contextos
ContextosContextos
Contextos
 
Java13
Java13Java13
Java13
 
Apostila de-vb-net
Apostila de-vb-netApostila de-vb-net
Apostila de-vb-net
 

Mais de Erisvaldo Junior

Desenvolvimento de Apps e Games para iOS - Parte 2
Desenvolvimento de Apps e Games para iOS - Parte 2Desenvolvimento de Apps e Games para iOS - Parte 2
Desenvolvimento de Apps e Games para iOS - Parte 2Erisvaldo Junior
 
Desenvolvimento de Apps e Games para iOS - Parte 1
Desenvolvimento de Apps e Games para iOS - Parte 1Desenvolvimento de Apps e Games para iOS - Parte 1
Desenvolvimento de Apps e Games para iOS - Parte 1Erisvaldo Junior
 
Desenvolvimento de Apps e Games para Android - Parte 3
Desenvolvimento de Apps e Games para Android - Parte 3Desenvolvimento de Apps e Games para Android - Parte 3
Desenvolvimento de Apps e Games para Android - Parte 3Erisvaldo Junior
 
Desenvolvimento de Apps e Games para Android - Parte 2
Desenvolvimento de Apps e Games para Android - Parte 2Desenvolvimento de Apps e Games para Android - Parte 2
Desenvolvimento de Apps e Games para Android - Parte 2Erisvaldo Junior
 
Desenvolvimento de Apps e Games para Android - Parte 1
Desenvolvimento de Apps e Games para Android - Parte 1Desenvolvimento de Apps e Games para Android - Parte 1
Desenvolvimento de Apps e Games para Android - Parte 1Erisvaldo Junior
 
Java me record management system
Java me   record management systemJava me   record management system
Java me record management systemErisvaldo Junior
 
Java me material complementar
Java me   material complementarJava me   material complementar
Java me material complementarErisvaldo Junior
 
Java me material complementar
Java me   material complementarJava me   material complementar
Java me material complementarErisvaldo Junior
 
Java me record management system
Java me   record management systemJava me   record management system
Java me record management systemErisvaldo Junior
 
Java me generic connection framework
Java me   generic connection frameworkJava me   generic connection framework
Java me generic connection frameworkErisvaldo Junior
 
Introdução a api de baixo nível do java me
Introdução a api de baixo nível do java meIntrodução a api de baixo nível do java me
Introdução a api de baixo nível do java meErisvaldo Junior
 
Introdução a game api do java me
Introdução a game api do java meIntrodução a game api do java me
Introdução a game api do java meErisvaldo Junior
 
Ginga-J Emulator: uma Ferramenta de Execução de Aplicações Imperativas para o...
Ginga-J Emulator: uma Ferramenta de Execução de Aplicações Imperativas para o...Ginga-J Emulator: uma Ferramenta de Execução de Aplicações Imperativas para o...
Ginga-J Emulator: uma Ferramenta de Execução de Aplicações Imperativas para o...Erisvaldo Junior
 
Desenvolvendo para iOS em linux
Desenvolvendo para iOS em linuxDesenvolvendo para iOS em linux
Desenvolvendo para iOS em linuxErisvaldo Junior
 
Arquitetura de apis gráficas do java dtv - lwuit e dtv-ui
Arquitetura de apis gráficas do java dtv - lwuit e dtv-uiArquitetura de apis gráficas do java dtv - lwuit e dtv-ui
Arquitetura de apis gráficas do java dtv - lwuit e dtv-uiErisvaldo Junior
 
Arquitetura De Ap Is GráFicas Do Java Dtv Lwuit E Dtv Ui
Arquitetura De Ap Is GráFicas Do Java Dtv   Lwuit E Dtv UiArquitetura De Ap Is GráFicas Do Java Dtv   Lwuit E Dtv Ui
Arquitetura De Ap Is GráFicas Do Java Dtv Lwuit E Dtv UiErisvaldo Junior
 

Mais de Erisvaldo Junior (19)

Desenvolvimento de Apps e Games para iOS - Parte 2
Desenvolvimento de Apps e Games para iOS - Parte 2Desenvolvimento de Apps e Games para iOS - Parte 2
Desenvolvimento de Apps e Games para iOS - Parte 2
 
Desenvolvimento de Apps e Games para iOS - Parte 1
Desenvolvimento de Apps e Games para iOS - Parte 1Desenvolvimento de Apps e Games para iOS - Parte 1
Desenvolvimento de Apps e Games para iOS - Parte 1
 
Desenvolvimento de Apps e Games para Android - Parte 3
Desenvolvimento de Apps e Games para Android - Parte 3Desenvolvimento de Apps e Games para Android - Parte 3
Desenvolvimento de Apps e Games para Android - Parte 3
 
Desenvolvimento de Apps e Games para Android - Parte 2
Desenvolvimento de Apps e Games para Android - Parte 2Desenvolvimento de Apps e Games para Android - Parte 2
Desenvolvimento de Apps e Games para Android - Parte 2
 
Desenvolvimento de Apps e Games para Android - Parte 1
Desenvolvimento de Apps e Games para Android - Parte 1Desenvolvimento de Apps e Games para Android - Parte 1
Desenvolvimento de Apps e Games para Android - Parte 1
 
Nokia SDK for Java
Nokia SDK for JavaNokia SDK for Java
Nokia SDK for Java
 
Java me record management system
Java me   record management systemJava me   record management system
Java me record management system
 
Java me material complementar
Java me   material complementarJava me   material complementar
Java me material complementar
 
Java me material complementar
Java me   material complementarJava me   material complementar
Java me material complementar
 
Java me record management system
Java me   record management systemJava me   record management system
Java me record management system
 
Java me generic connection framework
Java me   generic connection frameworkJava me   generic connection framework
Java me generic connection framework
 
Introdução a api de baixo nível do java me
Introdução a api de baixo nível do java meIntrodução a api de baixo nível do java me
Introdução a api de baixo nível do java me
 
Introdução a game api do java me
Introdução a game api do java meIntrodução a game api do java me
Introdução a game api do java me
 
O futuro do Android
O futuro do AndroidO futuro do Android
O futuro do Android
 
Ginga-J Emulator: uma Ferramenta de Execução de Aplicações Imperativas para o...
Ginga-J Emulator: uma Ferramenta de Execução de Aplicações Imperativas para o...Ginga-J Emulator: uma Ferramenta de Execução de Aplicações Imperativas para o...
Ginga-J Emulator: uma Ferramenta de Execução de Aplicações Imperativas para o...
 
Desenvolvendo para iOS em linux
Desenvolvendo para iOS em linuxDesenvolvendo para iOS em linux
Desenvolvendo para iOS em linux
 
WebProtocolo 2.0
WebProtocolo 2.0WebProtocolo 2.0
WebProtocolo 2.0
 
Arquitetura de apis gráficas do java dtv - lwuit e dtv-ui
Arquitetura de apis gráficas do java dtv - lwuit e dtv-uiArquitetura de apis gráficas do java dtv - lwuit e dtv-ui
Arquitetura de apis gráficas do java dtv - lwuit e dtv-ui
 
Arquitetura De Ap Is GráFicas Do Java Dtv Lwuit E Dtv Ui
Arquitetura De Ap Is GráFicas Do Java Dtv   Lwuit E Dtv UiArquitetura De Ap Is GráFicas Do Java Dtv   Lwuit E Dtv Ui
Arquitetura De Ap Is GráFicas Do Java Dtv Lwuit E Dtv Ui
 

Desenvolvimento de apps e games para android parte 8

  • 1. Desenvolvimento de Apps e Games para Android Por Erisvaldo Júnior. Parte 8 (06/10/2011)
  • 3. TwitterHandler NewsDroid - Controladores Classe responsável por ler um arquivo XML e realizar o parsing do mesmo, obtendo o seu conteúdo. Para isso, faz-se uso da API SAX (Simple API for XML), nativa do Android SDK. http://twitter.com/status/user_timeline/yupistudiosBR.xml ( @yupistudiosBR )
  • 4. TwitterHandler (Tweet) NewsDroid - Controladores No arquivo XML, cada tweet deve ser lido através dos métodos startElement() , characters() e endElement() de DefaultHandler. No arquivo XML, cada tweet está representado por uma tag <status>, possuindo um texto (<text>), uma data (<created_at>), contagem de retweets (<retweet_count>), entre outras informações.
  • 5. TwitterHandler (Parsing) NewsDroid - Controladores A API SAX é bastante simples de ser utilizada. Basicamente, ao analisar o trecho <text>Texto do Tweet</text>, o Handler trabalha com a chamada de três métodos: • startElement() – Essa função é chamada quando o parser encontra um elemento. No exemplo acima, startElement() é invocado com a passagem de “text” como parâmetro; • characters() – Chamada logo após o startElement() e antes de se encontrar o final do elemento. No exemplo acima, characters() é invocado com a passagem de “Texto do Tweet” como parâmetro; • endElement() – Chamada quando o parser encontra o final do elemento. No exemplo acima, endElement() é invocado após characters() com a passagem de “text” como parâmetro.
  • 6. TwitterHandler – SAXParser A partir de um SAXParserFactory, cria-se um XMLParser e, a partir deste, um XMLReader. Por fim, define-se o ContentHandler e então NewsDroid - Controladores inicia-se o parsing. Em código:
  • 7. TwitterHandler – Técnica para leitura do XML Cria-se um StringBuffer no startElement(). No characters(), adiciona-se os NewsDroid - Controladores caracteres ao StringBuffer criado. Por fim, no endElement(), verifica-se a tag que foi lida e a informação é repassada para a variável desejada. Dessa forma, quando o endElement() é chamado, descobre-se em que tag o parser se encontra e, então, basta passar o conteúdo do StringBuffer para a variável desejada. No endElement(), uma vez que o tweet atual já foi lido, pode-se armazenar os dados em um banco de dados, se desejar.
  • 8. Roteiro da Aula WEBSERVICES EM CONTENT ANDROID PROVIDER E SMS Bem vindo ao mundo da mobilidade
  • 9. WEBSERVICES EM ANDROID
  • 10. RESTful Web Services Serviços construídos para trabalhar melhor na Web. REST (Representational State Transfer) é um estilo de arquitetura criado em 2000 que provê uma interface uniforme que, aplicada a serviços web, proporcionam desempenho, escalabilidade e flexibilidade. Os dados e funcionalidades em REST são considerados Resources, sendo que cada recurso pode ser acessado por uma URI – um link web. Um recurso possui uma série de operações bem definidas.
  • 11. RESTful Web Services Os Web Services RESTful mapeiam os quatro métodos de requisições HTTP, conforme a tabela abaixo.
  • 12. Jersey Implementação da Oracle para a JSR 311 (JAX-RS): Java API para RESTful Web Services. Efetue o download em http://jersey.java.net (ZIP) e depois basta incluir as bibliotecas da pasta lib/ no Build Path do seu projeto Web no Eclipse.
  • 13. Jersey Após criar um novo projeto Web no Eclipse com o Jersey, basta editar o web.xml adicionando este <servlet> dentro da tag <web- app>.
  • 14. Jersey Vamos ver se está funcionando, implementando o seguinte Hello WOrld:
  • 15. Jersey Vamos criar a classe Pessoa com dois atributos: id e nome.
  • 16. Jersey Agora o PessoaResource, que é justamente o nosso WebService que vai retornar objetos do tipo Pessoa.
  • 17. App Android O arquivo será lido de 1024 em 1024 bytes.
  • 18. App Android O método getRESTFileContent(String url) vai ler o arquivo através de HttpGet do org.apache.
  • 19. App Android A leitura das pessoas do nosso Web Service é trivial. O JSONObject da URI de pessoas retorna um array de objetos através do método getJSONArray(). Basta iterar. Para obter uma pessoa específica, É só acessar a URI correspondente Ao ID da pessoa e o JSONObject Já trará como retorno o objeto da pessoa desejada.
  • 20. App Android Obter as informações de um Web Service pode ser feito através de uma AsyncTask.
  • 22. Content Providers Única maneira de compartilhar dados entre aplicações. Android vem com Content Providers nativos para áudio, vídeo, imagens, contatos, etc. Eles estão disponíveis no pacote android.provider. Para tornar os dados de sua aplicação públicos, pode-se criar um Content Provider (herdando da classe ContentProvider) ou, ainda, adicionar os dados a um Content Provider já existente, desde que esse provedor controle o mesmo tipo de informação e você tenha permissão de escrita. Todos os provedores de conteúdo implementam uma interface comum para adição, edição, remoção e consulta de dados. O cliente usa essa interface indiretamente, através de um ContentResolver. Um ContentProvider pode se comunicar com múltiplos objetos de ContentResolver, em diferentes aplicações e processos.
  • 23. Content Providers - URIs Cada Content Provider expõe uma URI pública que identifica o conjunto de dados. Se um Content Provider controla múltiplos grupos de dados (múltiplas tabelas), há uma URI para cada um. A constante CONTENT_URI é padrão de todos os Content Providers nativos da plataforma, conforme mostrado abaixo. A URI é utilizada em todas as interações com o provedor de conteúdo. Todos os métodos de um Content Resolver recebem a URI do provedor de conteúdo como parâmetro. É a URI que identifica com qual provedor o ContentResolver deve se comunicar e que tabela desse provedor está sendo acessada.
  • 24. Consultando um Content Provider Através do método query() de ContentResolver ou managedQuery() de Activity. No caso da segunda opção, o Activity gerencia o ciclo de vida do Cursor. A solicitação é feita através do método startManagingCursor() de Activity. O exemplo abaixo retorna o registro 23 dos contatos do usuário. Note que a URI obtida fica similar a:
  • 25. Consultando um Content Provider (Query) Os argumentos de uma query() ou managedQuery() são os seguintes: Após o primeiro argumento (URI), existem outros quatro argumentos, que são explicitados a seguir: • O número de colunas que deve ser retornado. null retorna todas as colunas. Os Content Providers definem constantes para as suas colunas. Por exemplo, android.provider.Contatcs.Phones define as seguintes constantes: _ID, NUMBER, NUMBER_KEY, NAME, etc; • Um filtro detalhando que registros devem ser retornados, formatado como um WHERE do SQL. null retorna todos os registros; • Argumentos do WHERE (argumentos de seleção); • Ordem em que os registros devem ser retornados, formatado como um ORDER BY do SQL. null retorna uma ordem padrão.
  • 26. Consultando um Content Provider (Query) No exemplo abaixo, a consulta retorna uma lista de contatos com os seus respectivos nomes e telefones (no caso o telefone principal).
  • 27. Consultando um Content Provider (Cursor) O exemplo abaixo mostra como ler os nomes e telefones da lista de contatos obtida pela Query mostrada anteriormente. Note que o objeto cursor pode conter N registros e é necessário saber o tipo de dado dos campos que estão sendo obtidos.
  • 28. Modificando um Content Provider (Adição de Registros)
  • 29. Modificando um Content Provider (Adicionando novos valores a um registro)
  • 30. Modificando um Content Provider (Atualizando e removendo registros) É possível atualizar registros em lote (por exemplo, modificar uma informação de todos os contatos) através do método update() de ContentResolver, no qual se especifica as colunas e os valores que devem ser alterados. Pode-se também excluir um registro, invocando o método delete() de ContentResolver, passando como parâmetro a URI do registro específico. Além disso, o método delete() também possibilita a exclusão de múltiplos registros, passando como URI o tipo de registro (por exemplo android.provider.Contacts.People.CONTENT_URI) e no terceiro argumento passando o filtro (“WHERE”) que fará com que um conjunto de registros seja excluído.
  • 31. Criando um Content Provider A maioria dos Content Providers armazenam seus dados em SQLite, mas você também pode utilizar outro mecanismo de persistência de sua preferência. O procedimento para criação de um provedor de conteúdo é: criar uma classe que herda de ContentProvider para prover acesso aos dados e declará-lo no AndroidManifest.xml. Métodos que precisam ser implementados: • onCreate() – Preparação dos dados oferecidos; • getType() – Tipo de dado (MIME) que está sendo provido; • query() – retorna um Cursor que permite navegar pelos registros; • insert() – Inserção de novos dados; • update() – Atualização dos dados; • delete() – Exclusão de dados.
  • 32. Criando um Content Provider Além dos métodos que devem ser implementados, há uma série de regras que devem ser seguidas para que o ContentProvider possa ser devidamente aproveitado por outras aplicações. • CONTENT_URI – definir uma constante que especifica a URI do Content Provider, bem como uma constante para cada uma de suas tabelas; • definir uma constante para cada coluna, incluindo uma _ID do tipo inteiro; • Documentar cuidadosamente cada coluna. Os clientes precisam dessa informação para ler corretamente os dados.
  • 33. Enviando um SMS android.telephony.SmsManager (API Level 5 ou superior) Android.telephony.gsm.SmsManager (API Level 4 ou inferior)
  • 34. Enviando um SMS Faça uma aplicação que envie uma mensagem de texto (caso o texto tenha menos de 140 caracteres), envie uma mensagem em múltiplas partes (caso o texto tenha mais de 140 caracteres) e envie uma mensagem SMS binária (caso a opção Send bynary SMS esteja ativada).
  • 35. obrigado • e-mail: erisvaldo@yupistudios.com.br • web: http://erisvaldojunior.com • twitter: @erisvaldojunior