Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Instrutor
Recursos da Aplicao
Viso Geral
Os recursos de uma aplicao, como strings e imagens, devem
estar sempre internacionalizados, de modo que se possa dar
manuteno mais facilmente.
.
Viso Geral
Para qualquer tipo de recurso, possvel definir um
arquivo padro e vrios outros alternativos:
O recurso alternativo utilizado sempre que corresponde
configurao do dispositivo.
O recurso padro utilizado quando nenhuma
configurao compatvel com o dispositivo.
.
Tipos de Recursos
Os seguintes recursos so suportados:
String
Drawable
Layout
Menu
Animation
Color/Color State
Style
ID
Bool
Integer/Integer Array
Dimension
Typed Array
.
Estrutura dos recursos
Na maioria so arquivos xml
So todos colocados no diretrio /res
Uma vez internacionalizados, os recursos podem
ser acessados por identificadores da classe R,
gerada automaticamente quando o projeto
compilado
Cada tipo de recurso tem uma subclasse dentro de R e para cada recurso um
inteiro criado:
Ex. R.drawable.icon
Exemplo:
Exemplo:
Exemplo:
<manifest android:versionCode="3" android:versionName="1.2">
....
<activity android:label="@string/app_name" android:name=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</manifest>
Recursos
Alguns atributos tm valores que sero exibidos ao usurio e por isso
devem estar localizados
Esses valores so expressos da seguinte maneira:
@[package:]type:name
O pacote pode ser omitido caso o recurso esteja definido no mesmo
pacote da aplicao
Exemplo:
<application android:icon="@drawable/icon_application"
android:label="@com.mypackage:string/app_name">
cones e Labels
Alguns elementos tm atributos de cone e label
cone e label definidos em um elemento se tornam padro para
todos seus filhos, quando aplicvel
Exemplo:
<application android:icon="@drawable/icon" android:label="@string/app_name">
<service android:name=".MyService" android:label="@string/service_name"/>
<activity android:name=".MyActivity"/>
<receiver android:name=".MyReceiver"/>
</application>
Exemplo:
<uses-feature android:required="true"
android:name="android.hardware.camera"/>
<uses-feature android:required="false"
android:name="android.hardware.camera.flash"/>
Suportando Diferentes Telas
As telas dos dispositivos Android tm diferentes
caractersticas de tamanho e densidade
O elemento <supports-screen> indica quais telas sua
aplicao suporta:
<supports-screens android:smallScreens="false"
android:normalScreens="true"
android:largeScreens="true"
android:xlargeScreens="true"
android:anyDensity="true" />
Suportando Diferentes Telas
Sua aplicao estar disponvel no Android Market/Google
Play somente para dispositivos suportados.
<uses-sdk android:minSdkVersion="7"
android:TargetSdkVersion="10"/>
Bibliotecas
Uma aplicao Android est ligada por padro biblioteca que contm
todos os pacotes android.*
Alguns pacotes esto em bibliotecas diferentes como Google Maps
Elemento <uses-library> indica que a aplicao necessita estar
ligada a uma biblioteca
Exemplo:
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="my.package" android:versionCode="1"
android:versionName="1.0">
<uses-library android:name="com.google.android.maps"/>
...
</manifest>
Exerccio rpido
Usem a Snippets View para adicionar a uma Activity:
Categoria: Web and Web Services
Snippet: Send an email
.
Enviando Intents
Activities:
permitem que Activities sejam carregadas ou exigem uma nova
ao para uma Activity j aberta
Formas de Acceso
startActivity() [sem retorno]
Entrega o controle para a Activity criada
Activity 1 Activity 2
Activity 1
setResult
Mtodo chamado:
onActivityResult
Enviando Intents
Services:
permitem iniciar um servio ou solicitar novas operaes para
um servio em execuo
ServiceConnection Service
onServiceConnected onServiceConnected
onServiceDisconnected
onServiceDisconnected
startService()
Cria um novo servio baseado no Intent enviado como
parmetro
Enviando Intents
Broadcast Receivers:
permitem iniciar a execuo de tarefas registradas em broadcast
receivers
Sistema
BroadcastReceivers
sendBroadcast() Mtodo
onReceive
chamado
Envia um Intent para broadcast receivers registrados
Action
Uma string que d nome ao que ser realizada pelo Intent
Qualquer string pode ser usada em Action mas costuma-se utilizar
como padro:
android.intent.action.VIEW
Objetos de Intent Aes
Alguns exemplos (constantes):
ACTION_CALL Iniciar chamada telefnica
ACTION_EDIT Mostrar dados que sero editados pelo usurio
ACTION_MAIN Iniciar a Activity inicial de uma tarefa, sem
entrada de dados de retorno
ACTION_SYNC Sincronizar dados do servidor para um
dispositivo mvel
ACTION_BATTERY_LOW Indicar bateria baixa
ACTION_HEADSET_PLUG Um headset foi conectado ou desconectado
Flags
Aes extras que permitem ao sistema definir um comportamento
especfico para cada Intent
FLAG_ACTIVITY_LAUNCHED_FROM_HISTORY
Resoluo de Intents
Intents Explcitos
Component Name determina quem ser notificado
Intents Implcitos
Sistema Android responsvel por determinar quem deve
receber o Intent utilizando Intent Filters
Component Name vazio
Ao
Dados (URI e MIME type)
Categoria
Resoluo de Intents Explcitos
Ativando uma Activity atravs de Intent Explcito (tem acesso Java)
//Activity destino definida atravs da classe do objeto
Intent iExplicity = new Intent(IntentTest.this, ExplicityActivity.class);
//Enviando solicitao
startActivity(iExplicity);
//Enviando solicitao
startActivity(iExplicity);
Filtros de Intents
Filtros que permitem decidir se um determinado Intent deve
acionar um componente
Tipos
Objeto IntentFilter (cdigo Java)
Elemento <intent-filter> (AndroidManifest.xml)
Dados Provados
Ao
Categoria
Dados
Filtros de Intents
Sistema Android Activity 1 disponvel
(Resoluo) (declarao intent-filter em
XML)
- Algumas aes
- Algumas categorias
(Chamada Java) - Alguns dados
Intent
-1 action -Se e somente se:
-Algumas categorias -Prova ao PASSA &&
- Alguns dados - Prova categoria PASSA && ...
-Prova dados PASSA = Activity N disponvel
Activity pode ser chamada (intent-filter XML)
O mesmo processo se
aplica a:
-Services
-Broadcast Receivers Filtra
1 ou mais Activities que cumpram
os requisitos
Filtros de Intents
Se mais de um filtro encontrado para um Intent, o usurio
ser questionado sobre qual deseja abrir
Exemplo de exceo:
android.content.ActivityNotFoundException:
No Activity found to handle Intent { act=android.intent.action.IMP_TEST
cat=[android.intent.category.TESTABLE] }
Filtros de Intents
Prova de Ao
<intent-filter . . . >
<action android:name="com.example.project.SHOW_CURRENT" />
<action android:name="com.example.project.SHOW_RECENT" />
<action android:name="com.example.project.SHOW_PENDING" />
. . .
</intent-filter>
Condies:
Condies:
Todas as categorias do Intent devem ter correspondncia no Filtro para
que a prova PASSE (subconjunto)
Filtro pode conter categorias adicionais
Filtros de Intents
Prova de Categoria
<intent-filter . . . >
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<category android:name="android.intent.category.PREFERENCE/>
. . .
</intent-filter>
startActivity(iImplicity);
Condies:
Todas as categorias do Intent devem ter correspondncia no Filtro para
que a prova PASSE (subconjunto)
Filtro pode conter categorias adicionais
Filtros de Intents
Prova de Categoria
Excees:
Activities que tm em seus filtros:
android.intent.action.MAIN
android.intent.category.LAUNCHER
no necessitam ter android.intent.category.DEFAULT
Filtros de Intents
Prova de Data (dados)
<intent-filter . . . >
<data android:mimeType="video/mpeg" android:scheme="https android:host="com.example/>
<data android:mimeType="audio/mp3" android:scheme="http android:host="com.example2 />
. . .
</intent-filter>
Condies:
Para que a prova PASSE s necessrio que os atributos mencionados no
Filtro correspondam ao Intent
Filtros de Intents
Tabela de casos de sucesso em provas do tipo Data (dados):
Cdigo Java
Intent iImplicity = new Intent();
iImplicity.setAction("android.intent.action.CALL_IMPLICITY");
iImplicity.addCategory("android.intent.category.TESTABLE");
iImplicity.setDataAndType(Uri.parse("http://com.example.project:200"),
"text/plain");
startActivity(iImplicity);
Exemplo
Abrir instncia do browser passando uma URL
String url = "http://www.eldorado.org.br";
Intent i = new Intent(Intent.ACTION_VIEW);
i.setData(Uri.parse(url));
startActivity(i); //chama como padro com categoria android.intent.category.DEFAULT
Intents Especiais
Aplicaes que podem ser carregadas atravs do Menu Principal tm
o intent-filter abaixo para sua Activity principal:
<intent-filter . . . >
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
.
Referncias
http://developer.android.com/guide/topics/resource
s/index.html
http://developer.android.com/guide/topics/manifest
/manifest-intro.html
http://developer.android.com/guide/practices/scree
ns_support.html