Escolar Documentos
Profissional Documentos
Cultura Documentos
Acesso a Rede
Para escrever uma aplicao que suporte
acesso rede, o manifesto deve ter as
permisses e filtros adequados.
android.permission.INTERNET
Permite abrir sockets de rede.
android.permission.ACCESS_NETWORK_STATE
permite para acessar informaes sobre redes.
ACTION_MANAGE_NETWORK_USAGE
(introduzido no Android 4.0) indica que seu
aplicativo define uma atividade que oferece
opes para controlar o uso de dados.
2
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.android.networkusage"
...>
<uses-sdk android:minSdkVersion="4"
android:targetSdkVersion="14" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<application
...>
...
<activity android:label="SettingsActivity" android:name=".SettingsActivity">
<intent-filter>
<action android:name="android.intent.action.MANAGE_NETWORK_USAGE" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
</application>
</manifest>
Acesso Internet
Sockets
Utilizar apenas quando for criado protocolo
prprio
Protocolo HTTP
Permite usar APIs prontas
java.net
Apache Jakarta Commons
WebServices
REST
SOAP
Sockets
Conexo com a Internet de baixo nvel.
DataOutputStream
DataInputStream
HTTP API
Classes
HttpClient
HttpGet, HttpPost
HttpResponse
HttpEntity
Exemplo: HttpClient
HTTP
DefaultHttpClient
Projeto Apache.
AndroidHttpClient:
subtipo do DefaultHttpClient j configurado
para valores otimizados no Android.
no mais recomendado utilizar estas
classes, porque a equipe do Google no d
manuteno a essa implementao.
HttpUrlConnection,
que desenvolvido e suportado pelo Google.
7
Exemplo
JSON x XML
JSON e XML so formatos para a notao de
dados a serem transmitidos;
A maior e mais importante diferena entre eles
nesse momento, que o XML acaba ocupando
muito mais espao que o JSON quando
representam o mesmo objeto.
XML usa uma tag para identificar o inicio e o
final de cada n.
O JSON fortemente recomendado quando
estamos falando de dispositivos mveis, por
consumir menos banda da conexo de internet
do usurio.
9
10
11
Transformando JSON em
Objetos Java (Native JSON)
{
"cpf": "111222333-00",
"endereco": "Rua das ruas, 9",
"id": "1",
"nome": "Alexandre Dumas"
}
12
Transformando JSON em
Objetos Java (Google GSON)
{
"cpf": "111222333-00",
"endereco": "Rua das ruas, 9",
"id": "1",
"nome": "Alexandre Dumas"
}
13
ExemploJSON
{
"id": "0001",
"name": "Curso de Android",
"about": "www.facom.ufu.br - contato: Prof. Bacal",
"info": "Programao para Dispositivos Mveis usando Android",
"location": {
"city": "Uberlndia",
"country": "Brasil",
"street": "Campus Santa Mnica - Lab B4 - Bloco B",
"zip": "38400.000"
},
"website": "http://www.facom.ufu.br/~bacala/ANDROID",
15
Exemplo
TextView nameText = ( TextView ) findViewById (R.id.name_text );
TextView siteText = ( TextView ) findViewById (R.id.site_text );
TextView addressText = ( TextView ) findViewById (R.id.address_text );
TextView cityText = ( TextView ) findViewById (R.id.city_text );
StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll()-.build();
StrictMode.setThreadPolicy ( policy );
String response = makeRequest ("http://www.facom.ufu.br/~bacala/ANDROID/exemploJSON);
try {
JSONObject json = new JSONObject ( response );
String name = json.getString ("name");
String site= json.getString (website");
String address = json.getJSONObject ("location").getString ("street");
String city = json.getJSONObject ("location").getString ("city");
nameText.setText ( name );
siteText.setText ( getString (R.string.website_label , site));
addressText.setText ( getString (R.string.address_label , address ));
cityText.setText ( getString (R.string.city_label , city ));
} catch ( JSONException e) {
e.printStackTrace ();
}
16
makeRequest
private String makeRequest ( String urlAddress ) {
HttpURLConnection con = null ;
URL url = null ;
String response = null ;
try {
url = new URL ( urlAddress );
con = ( HttpURLConnection ) url.openConnection ();
response = readStream ( con.getInputStream ());
} catch ( Exception e) {
e.printStackTrace ();
} finally {
con.disconnect ();
}
return response ;
}
17
readStream
private String readStream ( InputStream in) {
BufferedReader reader = null ;
StringBuilder builder = new StringBuilder ();
try {
reader = new BufferedReader (new InputStreamReader (in));
String line = null ;
while (( line = reader.readLine ()) != null ) {
builder.append ( line + "\n");
}
} catch ( IOException e) {
e.printStackTrace ();
} finally {
if ( reader != null ) {
try {
reader.close ();
} catch ( IOException e) {
e.printStackTrace ();
}
}
}
return builder.toString ();
}
18
19
AsyncTask
Encapsula em uma interface simples o uso de
threads.
Deve implementar obrigatoriamente o mtodo
doInBackground(), que exatamente a tarefa
que est sendo executada em background.
Caso necessrio alguma atualizao na
interface, s sobrescrever o mtodo
onPostExecute(). Tudo que estiver dentro deste
mtodo executado na UI thread.
O mtodo onPreExecute() executado antes do
doInBackground() e tambm executado na UI
thread.
20
Usando AsyncTask
No trecho a seguir, o myClickHandler()
chama DownloadWebpageTask().execute
(stringUrl)
DownloadWebpageTask uma subclasse
de AsyncTask e implementa as seguintes:
doInBackground(): chama downloadURL()
que obtm e processa o contedo da pgina
web, retornando uma String.
// Uses
//
//
//
//
AsyncTask to create a task away from the main UI thread. This task takes a
URL string and uses it to create an HttpUrlConnection. Once the connection
has been established, the AsyncTask downloads the contents of the webpage as
an InputStream. Finally, the InputStream is converted into a string, which is
displayed in the UI by the AsyncTask's onPostExecute method.
}
// onPostExecute displays the results of the AsyncTask.
@Override
protected void onPostExecute(String result) {
textView.setText(result);
}
}
...
23
24
26
No se esquea:
<uses-permission android:name ="android.permission.INTERNET"/> 27
28
WebServices
Soluo usada na integrao de sistemas e na
comunicao entre aplicaes diferentes.
Torna possvel que novas aplicaes possam
interagir com as j existentes e que sistemas
desenvolvidos em plataformas diferentes sejam
compatveis.
Componentes que permitem s aplicaes
enviar e receber dados em formato XML.
WebServices
REST
Requisio via URL (GET ou POST)
Resposta em JSON, XML, etc.
endereo do componente,
o nome do mtodo e
32
REST (Transferncia de
Estado Representativo)
REST
34
Implementando um simples
REST Client no Android
35
Implementando um simples
REST Client no Android
36
Implementando um simples
REST Client no Android
37
Mais Informaes
Utilizando Web Services no Google Android
http://www.cesar.org.br/site/files/file/
WM23_Android_WebServices.pdf
http://www.portalandroid.org/comunidade/viewtopic.php
?f=7&t=17465
38