Usando service em um APP

Propaganda
Usando service em
um APP
Serviços em Background



Avisar ao usuário sempre que chegar um SMS.
Para “escutar” o recebimento de SMSs, podemos usar
a classe BroadcastReceiver
Essa classe possui um método de callback que escuta
eventos do device:
public void onReceive(Context context, Intent intent);


Lembre-se que para escutar os eventos do device,
precisamos pedir autorização no AndroidManifest
Além disso, quando chegar o SMS, queremos tocar
um arquivo MP3. Coloque o arquivo mp3 na pasta
/res/raw/:
SMSReceiver

Crie a classe responsável por tratar SMSs
recebidos SMSReceiver
SMSReceiver.onReceive()
Recupera dados
do SMS
SMSReceiver.onReceive()
Usando o objeto
SmsMessage
CreateFromPdu()
transforma um byte [ ]
em SmsMessage
getDisplayOriginatingAddress()
retorna o número do telefone
remetente da mensagem
SMSReceiver.onReceive()
Tocar MP3
Autorização de escuta no manifesto
Integração com JSON

JSON é uma estrutura leve e fácil de trabalhar,
aderente ao ambiente mobile

Podemos representar facilmente dados de um Objeto
Java em um arquivo de formato amigável

A leitura e escrita de dados via JSON já é nativa da
maioria das linguagens de programação comerciais

Apesar de parecido com XML, o JSON ganhou
espaço por ser de fácil utilização com JavaScript
Componentes JSON

JSON é nativo do Android, que já traz as classe
necessárias à sua implementação:

JSONObject: Coleção de pares do tipo Chave/Valor

JSONArray: Sequencia ordenada de valores

JSONStringer: Objeto usado para criação de arquivos
com dados no formato JSON

JSONException: Exceção lançada quando falha na
estrutura de dados do JSON for detectada
Usando JSON

Vamos criar uma classe especialista em converter
uma Coleção de Alunos em um arquivo JSON:
AlunoConverter

O Converter deve oferecer o método toJSON(),
que recebe uma lista da alunos como parâmetro:
public String toJSON(List<Aluno> lista) {
…
}
AlunoConverter
Converte Alunos
em dados JSON
Criação de objeto
de escrita e
estrutura inicial
Conversão de
Tipos de dados
Fechamento da
Estrutura e retorno
do código gerado
String Gerada

O método toJSON() da
classe AlunoConverter gerar
uma string parecida com
essa aí ao lado

Temos uma array list

E outro array aluno

Você pode validar Strings
JSON no site:
http://jsonlint.com/
Comunicação com servidor remoto





Criaremos uma classe especialista em comunicação
com servidores WEB
Precisamos de um objeto DefaultHttpClient
Para envio dos dados, podemos escolher entre GET
ou POST
Vamos usar o POST, porque o arquivo a ser enviado
pode ser muito grande e o GET tem limitações de
número de parâmetros suportados
Precisamos de um HttpPost
Código para comunicação com Servidor
//Objeto para comunicacao com servidor remoto
DefaultHttpClient httpClient = new DefaultHttpClient();
//Objeto para encapsular a String gerada com JSON
HttpPost post = new HttpPost(url);
try {
post.setEntity(new StringEntity(json));
//Informa que o conteudo da requisicao eh JSON e
//Solicita que a resposta tambem seja em JSON
post.setHeader("Content-type", "application/json");
post.setHeader("Accept", "application/json");
//Execucao da requisicao
HttpResponse response = httpClient.execute(post);
//Verificacao da reposta
String jsonResposta = EntityUtils.toString(response.getEntity());
return jsonResposta;
} catch (Exception e) {
throw new RuntimeException(e);
}
Classe WebCLient
Definições da URL
rvidor
para comunicação
Método para envio
de dados JSON
Objetos para
comunicação
Processamento
Da resposta do
Servidor WEB
Retorna o IP solicitante:
{"ip": "189.48.181.194"}
ListaAlunosActivity.java
Ao rodar a app

Quando tentamos rodar a nossa App:

A operação de comunicação com um servidor remoto
é imprevisível, podendo demorar, travando a UIThread
A tarefa de sincronização deve rodar em outra thread

Envio Assíncrono de dados





Não podemos executar tarefas “possivelmente”
demoradas na thread principal UIThread
Precisamos utilizar uma tarefa assíncrona,
independente
Usamos a AsyncTask, onde podemos isolar o
processo de comunicação com o servidor remoto
Durante o processo, vamos exibir uma barra de
progresso
Ao final, vamos exibir a resposta enviada pelo servidor
web
EnviaAlunosTask
Tipo de
Retorno
Continuando
Executado ANTES
da sincronização
Método que executa
a sincronização
Executado DEPOIS
da sincronização
ListaAlunoActivity
Executando a App
Download