38
Desenvolvimento de Apps e Games para Android Por Erisvaldo Júnior. Parte 5 (20/09/2011)

Desenvolvimento de Apps e Games para Android - Parte 5

Embed Size (px)

Citation preview

Page 1: Desenvolvimento de Apps e Games para Android - Parte 5

Desenvolvimento de

Apps e Games para Android

Por Erisvaldo Júnior. Parte 5 (20/09/2011)

Page 2: Desenvolvimento de Apps e Games para Android - Parte 5

RECAPITULANDO…

Page 3: Desenvolvimento de Apps e Games para Android - Parte 5

android.util.Log Classe de Log do Android. Permite armazenar logs de até cinco tipos:

Page 4: Desenvolvimento de Apps e Games para Android - Parte 5

LogCat Permite a visualização do Log. Disponível na perspectiva Debug do ADT no Eclipse.

Page 5: Desenvolvimento de Apps e Games para Android - Parte 5

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

Page 6: Desenvolvimento de Apps e Games para Android - Parte 5

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

Page 7: Desenvolvimento de Apps e Games para Android - Parte 5

Internacionalização 4. Testar a aplicação no emulador.

Page 8: Desenvolvimento de Apps e Games para Android - Parte 5

Como criar uma Splash Screen

Page 9: Desenvolvimento de Apps e Games para Android - Parte 5

Activity em Tela Cheia (Full Screen)

Page 10: Desenvolvimento de Apps e Games para Android - Parte 5

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.

Page 11: Desenvolvimento de Apps e Games para Android - Parte 5

Exemplo Activity Implícita (acessar uma URL no Browser)

Page 12: Desenvolvimento de Apps e Games para Android - Parte 5

Computação Móvel / Pervasiva / Ubíqua

Page 13: Desenvolvimento de Apps e Games para Android - Parte 5

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.

Page 14: Desenvolvimento de Apps e Games para Android - Parte 5

Shared Preferences

Page 15: Desenvolvimento de Apps e Games para Android - Parte 5

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().

Page 16: Desenvolvimento de Apps e Games para Android - Parte 5

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:

Page 17: Desenvolvimento de Apps e Games para Android - Parte 5

Roteiro da Aula

Bem vindo ao mundo da mobilidade

PERSISTÊNCIA E COMUNICAÇÃO

Page 18: Desenvolvimento de Apps e Games para Android - Parte 5

PERSISTÊNCIA E COMUNICAÇÃO

Page 19: Desenvolvimento de Apps e Games para Android - Parte 5

BackupManager Android desde a API Level 8 permite armazenar dados na Cloud sem necessidade de banco de dados externo (perfeito para armazenar SharedPreferences ou arquivos de configuração/informação simples).

Como fazer isso com SharedPreferences?

Primeiro passo: criar uma chave de acesso em http://code.google.com/android/backup/signup.html

• Depois deve-se criar uma classe que herda de BackupAgentHelper e, no onCreate(), criar uma instância de SharedPreferencesBackupHelper;

• No AndroidManifest.xml deve-se colocar os atributos android:allowBackups=“true” e android:backupAgent=“NomeDaSuaClasseQueHerdaDeBackupAgentHelper” em <application> e, por fim, adicionar a seguinte tag dentro de <application>:

Page 20: Desenvolvimento de Apps e Games para Android - Parte 5

BackupManager Cada vez que você alterar um dado do grupo de SharedPreferences, você deve invocar o método dataChanged() da classe BackupManager.

E agora?

Está feito! Suas SharedPreferences serão armazenadas na nuvem, fazendo com que o usuário não perca a informação mesmo após

reinstalar o seu aplicativo.

Page 21: Desenvolvimento de Apps e Games para Android - Parte 5

Exemplo de BackupManager & SharedPreferences

Page 22: Desenvolvimento de Apps e Games para Android - Parte 5

Exemplo de BackupManager (BackupManagerTestActivity)

Page 23: Desenvolvimento de Apps e Games para Android - Parte 5

Exemplo de BackupManager (MyBackupAgent)

Page 24: Desenvolvimento de Apps e Games para Android - Parte 5

Exemplo de BackupManager (AndroidManifest.xml)

Page 25: Desenvolvimento de Apps e Games para Android - Parte 5

Banco de Dados SQLite Android provê suporte completo a bancos de dados SQLite. Os bancos criados serão acessíveis pelo nome para qualquer classe da aplicação, mas não poderão ser acessados externamente.

Para se criar um banco de dados, pode-se usar o método openOrCreateDatabase() do contexto. Contudo, a forma recomendada é criar uma subclasse de SQLiteOpenHelper e sobrescrever o método onCreate() para a criação das tabelas.

Page 26: Desenvolvimento de Apps e Games para Android - Parte 5

SQLiteOpenHelper O construtor de SQLiteOpenHelper recebe quatro parâmetros, conforme especificado abaixo. A versão do banco de dados é muito útil para o caso de o banco já existir e precisar ser atualizado (através da adição de novas tabelas e/ou colunas, por exemplo).

Page 27: Desenvolvimento de Apps e Games para Android - Parte 5

SQLiteOpenHelper Pode-se, então, obter uma instância dessa subclasse através do construtor criado. Com a instância, tem-se acesso a dois métodos que retornam um SQLiteDatabase: getWritableDatabase(), para inserção, edição e remoção de dados, e getReadableDatabase(), para consulta de dados.

Pode-se executar consultas no SQLite usando o método query() de SQLiteDatabase, que permite a passagem de diversos parâmetros, tais como: tabela a ser consultada, projeção, seleção, colunas, agrupamento e outros. Para consultas complexas, pode-se usar uma instância de SQLiteQueryBuilder. Cada consulta retorna um objeto Cursor que aponta para todos os registros encontrados pela query. É através do objeto Cursor que se navega entre os resultados. Por fim, usam-se os métodos insert() e delete() de SQLiteDatabase para inserção e remoção de registros, respectivamente.

Page 28: Desenvolvimento de Apps e Games para Android - Parte 5

SQLiteDatabase - query() As consultas com query() retornam um Cursor para navegação e recebem diversos parâmetros, cada qual com sua utilidade para a consulta, conforme explicitado abaixo.

Page 29: Desenvolvimento de Apps e Games para Android - Parte 5

Exemplo de Banco de Dados SQLite

Page 30: Desenvolvimento de Apps e Games para Android - Parte 5

ExemploBD (BancoActivity)

Page 31: Desenvolvimento de Apps e Games para Android - Parte 5

ExemploBD (DadosController)

Page 32: Desenvolvimento de Apps e Games para Android - Parte 5

ExemploBD (BancoHelper)

Page 33: Desenvolvimento de Apps e Games para Android - Parte 5

Network Connection Há, ainda, uma quinta forma de persistência em Android: o armazenamento remoto. Pode-se usar uma rede (quando disponível) para armazenar e recuperar dados de seus serviços baseados na Web.

Para realizar operações na rede, usam-se classes dos seguintes pacotes: • java.net; • android.net.

Page 34: Desenvolvimento de Apps e Games para Android - Parte 5

Android Networking Capabilities

Page 35: Desenvolvimento de Apps e Games para Android - Parte 5

org.apache.http.client.methods.HttpGet

Para adicionar parâmetros na sua requisição GET, basta inserí-los na URI. Exemplo: HttpGet request = new HttpGet(“http://erisvaldojunior.com/exemploget.php?tipo=2”); client.execute(request);

Page 36: Desenvolvimento de Apps e Games para Android - Parte 5

org.apache.http.client.methods.HttpPost

Page 37: Desenvolvimento de Apps e Games para Android - Parte 5

URLConnection java.net.URL url = new java.net.URL(“http://developer.android.com");

java.net.URLConnection uc = url.openConnection(); BufferedReader br = new BufferedReader( new InputStreamReader ( uc.getInputStream() ) );

Faça uma aplicação que exiba o código-fonte de uma página qualquer cujo endereço é digitado em um EditText.

Page 38: Desenvolvimento de Apps e Games para Android - Parte 5

obrigado

• e-mail: [email protected]

• web: http://erisvaldojunior.com

• twitter: @erisvaldojunior