Desenvolvimento de
Apps e Games para Android




Por Erisvaldo Júnior.   Parte 4 (14/09/2011)
RECAPITULANDO…
Cada View tem propriedades de
Interface e também listeners de eventos
Não é necessário iniciar outra Activity, você
pode simplesmente mostrar uma Dialog
Se quiser iniciar outra Activity, basta usar o
        método startActivity(Intent intent)




Exemplo: startActivity( new Intent( this, OutraActivity.class ) );
Roteiro da Aula



       LOG E          SPLASH SCREEN        PERSISTÊNCIA
INTERNACIONALIZAÇÃO      E INTENT




                         Bem vindo ao mundo da mobilidade
LOG E
INTERNACIONALIZAÇÃO
android.util.Log

Classe de Log do Android. Permite armazenar logs de até cinco
tipos:
LogCat
Permite a visualização do Log. Disponível na perspectiva Debug do
ADT no Eclipse.
Internacionalização

1. Planejar como o App deve aparecer (imagens e textos) em
diferentes regiões e línguas, bem como um padrão.
Internacionalização

2. Organizar os recursos, mapeando as pastas values/ (strings.xml)
e res/ para cada região / linguagem suportada.
Internacionalização

3. Criar o strings.xml para cada linguagem.
Internacionalização

3. Criar o strings.xml para cada linguagem.
Internacionalização

4. Testar a aplicação no emulador.
SPLASH SCREEN E INTENT
Como criar uma Splash Screen
Activity em Tela Cheia (Full Screen)
Classe Intent
     Um objeto Intent é uma mensagem composta por duas partes: action e data.


• ACTION – ação a ser realizada.
       Exemplos: ACTION_VIEW, ACTION_EDIT, ACTION_DIAL, ACTION_MAIN, etc;

• DATA – dados a serem operados, geralmente expressado por uma URI (Identificador
  Uniforme de Recursos).


       Um objeto Intent pode ser usado de duas formas: Explícita ou Implícita.

• EXPLÍCITA – especifica o componente que provê a classe que será executada.
  Frequentemente não possui informações extras. Usado geralmente para navegar entre
  activities dentro da aplicação.

• IMPLÍCITA – não especifica o componente, apenas fornece as informações e o sistema se
  encarrega de utilizar o melhor componente para executar esse Intent.
Intent para Activity, Service ou Broadcast Receiver



              startActivity( Intent intent )


 startService( Intent intent )     bindService(Intent, …)



sendBroadcast( Intent intent )          registerReceiver(…)
E no caso de Activity, quais as ações possíveis?

As principais são ACTION_MAIN e ACTION_EDIT
Para Broadcast Receivers… ?
Exemplo Activity Implícita
(acessar uma URL no Browser)
PERSISTÊNCIA
Era da Computação Ubíqua
Computação Móvel / Pervasiva / Ubíqua
Computação Móvel / Pervasiva / Ubíqua
Computação em Nuvem (Cloud Computing)
Computação em Nuvem (Cloud Computing)
Armazenamento de Dados
O Android provê diversas opções para armazenar dados da
aplicação. A escolha da melhor opção deve ser feita de acordo
com a necessidade: dados privados ou públicos, quantidade de
espaço necessário, etc.

 • Shared Preferences – Armazena dados primitivos em um
 conjunto de pares do tipo chave – valor;
 • Internal Storage – Armazena dados privados na memória do
 dispositivo;
 • External Storage – Armazena dados públicos na mídia externa
 de armazenamento;
 • SQLite Databases – Armazena dados estruturados em um banco
 de dados privado;
 • Network Connection – Armazena dados na web com o seu
 próprio servidor de rede.
Shared Preferences
A classe SharedPreferences provê um framework geral que
permite salvar e recuperar pares de dados primitivos do tipo
chave-valor. Os dados ficam armazenados mesmo quando a
aplicação é finalizada.


Para obter uma instância de SharedPreferences para a sua aplicação,
usa-se um dos métodos abaixo:

• getSharedPreferences() – use se você precisar de múltiplos
arquivos de preferências identificados por um nome que é passado
como parâmetro;
• getPreferences() – use se você precisar de um único arquivo de
preferências para a sua Activity. Como se trata de um único arquivo,
não é necessário fornecer um nome.
Shared Preferences
Internal Storage
Para criar e escrever em um arquivo privado para a memória
interna, chama-se o método openFileOutput() com o nome do
arquivo e o tipo de operação, obtendo-se um
FileOutputStream. Em seguida, basta escrever com o write() e
finalizar com close().




Já para ler um arquivo da memória interna, chama-se o método
openFileInput() passando o nome do arquivo a ser lido como
parâmetro. Esse método retorna um FileInputStream. Assim, basta
ler com read() e finalizar com close().
Internal Storage
Também é possível armazenar arquivos como cache, usando o
método getCacheDir() para obter uma instância de File na qual
sua aplicação possa salvar arquivos temporários de cache.

Quando o dispositivo está com pouca memória, o Android
pode excluir os arquivos de cache para recuperar espaço.
Contudo, é responsabilidade do desenvolver manter seus
arquivos de cache e usar apenas um espaço razoável com os
mesmos, como 1MB. Ao desinstalar o aplicativo, os arquivos de
cache do mesmo são removidos.


Outros métodos interessantes:

• getFilesDir() – retorna o caminho absoluto dos arquivos salvos;
• getDir() – Cria ou abre um diretório para armazenamento interno;
• deleteFile() – Exclui um arquivo;
• fileList() – Lista de arquivos atualmente salvos por sua aplicação.
External Storage
  Todo dispositivo Android suporta uma mídia externa de
  armazenamento. Pode ser um cartão removível (como SD Card)
  ou um espaço de armazenamento interno (não removível). Em
  ambos os casos, os arquivos podem ser lidos e modificados por
  outras aplicações ou pelo usuário quando se conecta o
  dispositivo via USB para transferência de dados.
Antes de se trabalhar com o armazenamento externo, deve-se chamar o método
       getExternalStorageState() para verificar se a mídia está disponível:
Acessando arquivos em um External Storage
No caso da API Level 8 (Android 2.2) ou superior, usa-se o
método getExternalFilesDir() para obter um File que
representa o diretório da mídia externa em que se deve salvar
seus arquivos. Esse método recebe como parâmetro o tipo de
subdiretório desejado, tais como DIRECTORY_MUSIC ou
DIRECTORY_RINGTONES. Caso se deseje armazenar na raiz,
passa-se null como parâmetro.


Já no caso da API Level 7 (Android 2.1) ou inferior, usa-se o
getExternalStorageDirectory(). Os dados serão armazenados em
/Android/data/nome_do_pacote/files/. O nome do pacote é no
estilo Java, por exemplo: “com.example.android.app”. Caso o usuário
desinstale a aplicação, esse diretório e todo o seu conteúdo será
excluído.
Salvando arquivos que devem ser compartilhados
Caso se queira salvar arquivos que não são específicos da
aplicação e devem permanecer mesmo após a aplicação ser
desinstalada, basta salvá-los em diretórios de armazenamento
públicos, tais como Music/, Pictures/, Ringtones/ e outros.

Na      API      Level      8      ou      superior,   usa-se
getExternalStoragePublicDirectory() passando como parâmetro o
tipo de diretório público que se deseja, tais como:
DIRECTORY_MUSIC, DIRECTORY_PICTURES, etc.


 Já no caso da API Level 7 ou inferior, usa-se o
 getExternalStorageDirectory(). Em seguida, salva-se os arquivos
 compartilhados em algum desses diretórios: Music/, Podcasts/,
 Ringtones/, Alarms/, Notifications/, Pictures/, Movies/ e Download/.
Salvando arquivos externos de cache

Na API Level 8 ou superior, usa-se getExternalCacheDir().



 Já no caso da API Level 7 ou inferior, usa-se o
 getExternalStorageDirectory(). Em seguida, salva-se os dados de
 cache no seguinte diretório:

 /Android/data/nome_do_pacote/cache/

 O nome do pacote é           no   estilo   Java.   Por   exemplo:
 “com.example.android.app”.
obrigado
• e-mail: erisvaldo@yupistudios.com.br
• web: http://erisvaldojunior.com
• twitter: @erisvaldojunior

Desenvolvimento de Apps e Games para Android - Parte 4

  • 1.
    Desenvolvimento de Apps eGames para Android Por Erisvaldo Júnior. Parte 4 (14/09/2011)
  • 2.
  • 3.
    Cada View tempropriedades de Interface e também listeners de eventos
  • 4.
    Não é necessárioiniciar outra Activity, você pode simplesmente mostrar uma Dialog
  • 5.
    Se quiser iniciaroutra Activity, basta usar o método startActivity(Intent intent) Exemplo: startActivity( new Intent( this, OutraActivity.class ) );
  • 6.
    Roteiro da Aula LOG E SPLASH SCREEN PERSISTÊNCIA INTERNACIONALIZAÇÃO E INTENT Bem vindo ao mundo da mobilidade
  • 7.
  • 8.
    android.util.Log Classe de Logdo Android. Permite armazenar logs de até cinco tipos:
  • 9.
    LogCat Permite a visualizaçãodo Log. Disponível na perspectiva Debug do ADT no Eclipse.
  • 10.
    Internacionalização 1. Planejar comoo App deve aparecer (imagens e textos) em diferentes regiões e línguas, bem como um padrão.
  • 11.
    Internacionalização 2. Organizar osrecursos, mapeando as pastas values/ (strings.xml) e res/ para cada região / linguagem suportada.
  • 12.
    Internacionalização 3. Criar ostrings.xml para cada linguagem.
  • 13.
    Internacionalização 3. Criar ostrings.xml para cada linguagem.
  • 14.
    Internacionalização 4. Testar aaplicação no emulador.
  • 15.
  • 16.
    Como criar umaSplash Screen
  • 17.
    Activity em TelaCheia (Full Screen)
  • 18.
    Classe Intent Um objeto Intent é uma mensagem composta por duas partes: action e data. • ACTION – ação a ser realizada. Exemplos: ACTION_VIEW, ACTION_EDIT, ACTION_DIAL, ACTION_MAIN, etc; • DATA – dados a serem operados, geralmente expressado por uma URI (Identificador Uniforme de Recursos). Um objeto Intent pode ser usado de duas formas: Explícita ou Implícita. • EXPLÍCITA – especifica o componente que provê a classe que será executada. Frequentemente não possui informações extras. Usado geralmente para navegar entre activities dentro da aplicação. • IMPLÍCITA – não especifica o componente, apenas fornece as informações e o sistema se encarrega de utilizar o melhor componente para executar esse Intent.
  • 19.
    Intent para Activity,Service ou Broadcast Receiver startActivity( Intent intent ) startService( Intent intent ) bindService(Intent, …) sendBroadcast( Intent intent ) registerReceiver(…)
  • 20.
    E no casode Activity, quais as ações possíveis? As principais são ACTION_MAIN e ACTION_EDIT
  • 21.
  • 22.
  • 23.
  • 24.
  • 25.
    Computação Móvel /Pervasiva / Ubíqua
  • 26.
    Computação Móvel /Pervasiva / Ubíqua
  • 27.
    Computação em Nuvem(Cloud Computing)
  • 28.
    Computação em Nuvem(Cloud Computing)
  • 29.
    Armazenamento de Dados OAndroid provê diversas opções para armazenar dados da aplicação. A escolha da melhor opção deve ser feita de acordo com a necessidade: dados privados ou públicos, quantidade de espaço necessário, etc. • Shared Preferences – Armazena dados primitivos em um conjunto de pares do tipo chave – valor; • Internal Storage – Armazena dados privados na memória do dispositivo; • External Storage – Armazena dados públicos na mídia externa de armazenamento; • SQLite Databases – Armazena dados estruturados em um banco de dados privado; • Network Connection – Armazena dados na web com o seu próprio servidor de rede.
  • 30.
    Shared Preferences A classeSharedPreferences provê um framework geral que permite salvar e recuperar pares de dados primitivos do tipo chave-valor. Os dados ficam armazenados mesmo quando a aplicação é finalizada. Para obter uma instância de SharedPreferences para a sua aplicação, usa-se um dos métodos abaixo: • getSharedPreferences() – use se você precisar de múltiplos arquivos de preferências identificados por um nome que é passado como parâmetro; • getPreferences() – use se você precisar de um único arquivo de preferências para a sua Activity. Como se trata de um único arquivo, não é necessário fornecer um nome.
  • 31.
  • 32.
    Internal Storage Para criare escrever em um arquivo privado para a memória interna, chama-se o método openFileOutput() com o nome do arquivo e o tipo de operação, obtendo-se um FileOutputStream. Em seguida, basta escrever com o write() e finalizar com close(). Já para ler um arquivo da memória interna, chama-se o método openFileInput() passando o nome do arquivo a ser lido como parâmetro. Esse método retorna um FileInputStream. Assim, basta ler com read() e finalizar com close().
  • 33.
    Internal Storage Também épossível armazenar arquivos como cache, usando o método getCacheDir() para obter uma instância de File na qual sua aplicação possa salvar arquivos temporários de cache. Quando o dispositivo está com pouca memória, o Android pode excluir os arquivos de cache para recuperar espaço. Contudo, é responsabilidade do desenvolver manter seus arquivos de cache e usar apenas um espaço razoável com os mesmos, como 1MB. Ao desinstalar o aplicativo, os arquivos de cache do mesmo são removidos. Outros métodos interessantes: • getFilesDir() – retorna o caminho absoluto dos arquivos salvos; • getDir() – Cria ou abre um diretório para armazenamento interno; • deleteFile() – Exclui um arquivo; • fileList() – Lista de arquivos atualmente salvos por sua aplicação.
  • 34.
    External Storage Todo dispositivo Android suporta uma mídia externa de armazenamento. Pode ser um cartão removível (como SD Card) ou um espaço de armazenamento interno (não removível). Em ambos os casos, os arquivos podem ser lidos e modificados por outras aplicações ou pelo usuário quando se conecta o dispositivo via USB para transferência de dados. Antes de se trabalhar com o armazenamento externo, deve-se chamar o método getExternalStorageState() para verificar se a mídia está disponível:
  • 35.
    Acessando arquivos emum External Storage No caso da API Level 8 (Android 2.2) ou superior, usa-se o método getExternalFilesDir() para obter um File que representa o diretório da mídia externa em que se deve salvar seus arquivos. Esse método recebe como parâmetro o tipo de subdiretório desejado, tais como DIRECTORY_MUSIC ou DIRECTORY_RINGTONES. Caso se deseje armazenar na raiz, passa-se null como parâmetro. Já no caso da API Level 7 (Android 2.1) ou inferior, usa-se o getExternalStorageDirectory(). Os dados serão armazenados em /Android/data/nome_do_pacote/files/. O nome do pacote é no estilo Java, por exemplo: “com.example.android.app”. Caso o usuário desinstale a aplicação, esse diretório e todo o seu conteúdo será excluído.
  • 36.
    Salvando arquivos quedevem ser compartilhados Caso se queira salvar arquivos que não são específicos da aplicação e devem permanecer mesmo após a aplicação ser desinstalada, basta salvá-los em diretórios de armazenamento públicos, tais como Music/, Pictures/, Ringtones/ e outros. Na API Level 8 ou superior, usa-se getExternalStoragePublicDirectory() passando como parâmetro o tipo de diretório público que se deseja, tais como: DIRECTORY_MUSIC, DIRECTORY_PICTURES, etc. Já no caso da API Level 7 ou inferior, usa-se o getExternalStorageDirectory(). Em seguida, salva-se os arquivos compartilhados em algum desses diretórios: Music/, Podcasts/, Ringtones/, Alarms/, Notifications/, Pictures/, Movies/ e Download/.
  • 37.
    Salvando arquivos externosde cache Na API Level 8 ou superior, usa-se getExternalCacheDir(). Já no caso da API Level 7 ou inferior, usa-se o getExternalStorageDirectory(). Em seguida, salva-se os dados de cache no seguinte diretório: /Android/data/nome_do_pacote/cache/ O nome do pacote é no estilo Java. Por exemplo: “com.example.android.app”.
  • 38.
    obrigado • e-mail: erisvaldo@yupistudios.com.br •web: http://erisvaldojunior.com • twitter: @erisvaldojunior