SlideShare uma empresa Scribd logo
1 de 39
Programação Para Dispositivos Moveis
Prof. Charles Fortes
PDM
Pitágoras
Programação Orientada a Objetos
Prof. Charles Fortes
Charles Fortes
Pitágoras
Programação Orientada a Objetos
Prof. Charles Fortes
Charles Fortes
Líder Técnico na Empresa Prime Systems.
Agilista, apaixonado por desenvolvimento
(Web, Desktop, Mobile, o que for), pai,
amante do Paintball e do Kenjutsu. MTAC -
Microsoft Technical Audience Contributor
100Loop - DotNetRaptors
Pitágoras
Programação Orientada a Objetos
Prof. Charles Fortes
Charles Fortes
Líder Técnico na Empresa Prime Systems.
Agilista, apaixonado por desenvolvimento
(Web, Desktop, Mobile, o que for), pai,
amante do Paintball e do Kenjutsu. MTAC -
Microsoft Technical Audience Contributor
100Loop - DotNetRaptors
SlideShare: http://pt.slideshare.net/charleswellingtonfortes
Linkedin: http://br.linkedin.com/in/charlesfortes/
Twitter: @CharlesFortes
Pitágoras
Programação Orientada a Objetos
Prof. Charles Fortes
Charles Fortes
Líder Técnico na Empresa Prime Systems.
Agilista, apaixonado por desenvolvimento
(Web, Desktop, Mobile, o que for), pai,
amante do Paintball e do Kenjutsu. MTAC -
Microsoft Technical Audience Contributor
100Loop - DotNetRaptors
Desenvolvimento Web – MVC – Angular.JS – JQuery – SQLServer – MySQL – HTML5 – NoSQL
Pitágoras
Programação Orientada a Objetos
Prof. Charles Fortes
Android Manifest
Pitágoras
Programação Orientada a Objetos
Prof. Charles Fortes
Manifest
tem a função de ser o principal arquivo de configuração do seu aplicativo
- Icone
- Nome
- Telas
- Permissões
- Dominio
Pitágoras
Programação Orientada a Objetos
Prof. Charles Fortes
Layout
Pitágoras
Programação Orientada a Objetos
Prof. Charles Fortes
Layout
A arquitetura de interface gráfica do Android é baseada no padrão de projetos MVC (Model – View –
Controller).
Onde a camada Model, é responsável pelas regras de negócio da aplicação. A Camada de View, é
responsável pela interface gráfica. E a camada de Controller gerencia os eventos de uma determinada
tela.
A grande vantagem proporcionada por este padrão é a modularidade. Ou seja, conseguimos alterar
todo um layout de uma determinada tela sem mexer no código que diz respeito ao comportamento da
mesma.
Pitágoras
Programação Orientada a Objetos
Prof. Charles Fortes
Layout
Imaginando uma tela de login, a cor da tela, o tamanho e a fonte dos botões, tudo que diz respeito a
interface gráfica é definido na camada View.
Já o que irá acontecer quando os botões forem clicados será ministrado pela camada de Controller.
No Android, os layouts XML assumem o papel de View.
As Activitys assumem o papel de Controller.
E a classe R, faz a ligação entre as duas camadas, permitindo o acesso de recursos encontrados na pasta
Res nas Activitys do projeto.
Pitágoras
Programação Orientada a Objetos
Prof. Charles Fortes
Layout
Nota: Você pode criar componentes gráficos diretamente na Activity, sem a necessidade da criação de
um layout.xml. No entanto a modularidade citada acima seria perdida.
Pitágoras
Programação Orientada a Objetos
Prof. Charles Fortes
Layout
LinearLayout: Este ViewGroup é um dos mais populares. Irá organizar os componentes com base na sua
característica orientation.
A tag orientation pode receber vertical ou horizontal.
Caso o orientation estiver configurado como vertical, os componentes serão exibidos um em cima do
outro.
Caso esteja horizontal, os componentes serão exibidos um ao lado do outro.
TableLayout: Esse layout organiza os componentes no formato de tabelas. Colunas e linhas.
RelativeLayout: Esse layout organiza os componentes de um modo mais livre. A definição de onde o
componente vai ficar, será definida no própria View.
Pitágoras
Programação Orientada a Objetos
Prof. Charles Fortes
Activities
Pitágoras
Programação Orientada a Objetos
Prof. Charles Fortes
Activity
A parte comportamental, como ações de um botão ficam a cargo do Controller no caso do Android
representado pela classe Activity.
Sobrescrevemos o método onCreate da Activity, é nele que vincularemos o layout xml que criamos
anteriormente.
Pitágoras
Programação Orientada a Objetos
Prof. Charles Fortes
Activity
Pitágoras
1
2
3
4
5
6
7
8
9
public class ExemploActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.exemplo_layout);
}
}
Programação Orientada a Objetos
Prof. Charles Fortes
Activity
Toda Activity é criada, fica em contato com o usuário, em algum momento pode ser interrompida
(como em um telefonema), em seguida pode ser restaurada ou destruída.
Este é o ciclo de vida de uma Activity, e cada etapa descrita acima é marcada por um método.
Assim que uma Activity é criada, o método onCreate(Bunde instanceSaved) é acionado. É neste
momento que o desenvolvedor deve criar a interface gráfica que irá ficar em contato com o usuário.
Daí a necessidade de chamar o método setContentView neste ponto, pois é ele que faz o vinculo
do Layout.xml com a Activity.
Quando uma Activity é totalmente destruída o método onDestroy() é acionado. Este é o momento
ideal para a liberação dos recursos que estavam sendo consumidos pela Activity.
Por exemplo: Caso esta Activity esteja exibindo um vídeo via streaming por exemplo, este é o momento
de cancelar a conexão e liberar o consumo de memória realizada pelo visualizador de vídeo.
Pitágoras
Programação Orientada a Objetos
Prof. Charles Fortes
Classe R
Pitágoras
Programação Orientada a Objetos
Prof. Charles Fortes
R
Responsável pelo acesso aos resources do projeto, sejam eles imagens, strings, ids, etc.
Pitágoras
Programação Orientada a Objetos
Prof. Charles Fortes
Intents
Pitágoras
http://developer.android.com/intl/pt-br/guide/components/intents-filters.html
Programação Orientada a Objetos
Prof. Charles Fortes
Intents
Intents são declarações de intenções para o sistema do dispositivo, que pode ser usada dentre outras
coisas, desde uma simples troca de tela, acesso a um componente do dispositivo ou a outros
aplicativos.
Pitágoras
Programação Orientada a Objetos
Prof. Charles Fortes
Intents
Intent intent = new Intent(this, OutraAtividade.class);
startActivity(intent);
------------------------------------
Uri uri = Uri.fromFile(new File("/sdcard/minhaaplicacao/hello_camera.jpg"));
Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
intent.putExtra(MediaStore.EXTRA_OUTPUT, uri);
startActivity(intent);
Pitágoras
Programação Orientada a Objetos
Prof. Charles Fortes
URI
https://pt.wikipedia.org/wiki/URI
A URI (um objeto Uri) que referencia os dados a serem aproveitados e/ou o tipo MIME desses
dados. O tipo dos dados fornecidos geralmente é determinado pela ação da intenção.
Ao criar uma intenção, em geral, é importante especificar o tipo de dados (seu tipo MIME) em
adição à URI.
Pitágoras
Programação Orientada a Objetos
Prof. Charles Fortes
URI
https://pt.wikipedia.org/wiki/URI
A sintaxe URI é essencialmente um nome de conjunto URI como "HTTP", "FTP", "mailto", "URN", "tel",
"rtsp", "file" etc, seguido de um caractere dois pontos e, por fim, a parte específica do conjunto.
Exemplos de URIs Absolutas[editar | editar código-fonte]
• http://example.org/absolute/URI/with/absolute/path/to/resource.txt
• ftp://example.org/resource.txt
• file:////home/example/example.org/resource.txt
• urn:issn:1535-3613
Pitágoras
Programação Orientada a Objetos
Prof. Charles Fortes
Extras - Bundles
Pares de valores-chave que carregam informações adicionais exigidas para realizar a ação solicitada.
Assim, como algumas ações usam determinados tipos de URIs de dados, outras também usam
determinados extras.
É possível adicionar dados extras com diversos métodos putExtra(), cada um aceitando dois
parâmetros: o nome principal e o valor. Também é possível criar um objeto Bundle com todos os
dados extras e, em seguida, inserir o Bundle na Intent com putExtras().
Pitágoras
Programação Orientada a Objetos
Prof. Charles Fortes
Extras - Bundles
Por exemplo: ao criar uma intenção para enviar um e-mail com ACTION_SEND, é possível especificar
o recipiente "para" com a chave EXTRA_EMAIL e especificar o "assunto" com a chave
EXTRA_SUBJECT.
A classe Intent especifica diversas constantes EXTRA_* para tipos de dados padronizados. Se for
necessário declarar chaves extras (para intenções que seu aplicativo receba), certifique-se de incluir
o nome do pacote do aplicativo como prefixo. Por exemplo:
Pitágoras
Programação Orientada a Objetos
Prof. Charles Fortes
Conexão com o Banco
Pitágoras
https://developer.android.com/training/basics/data-storage/databases.html#DeleteDbRow
Programação Orientada a Objetos
Prof. Charles Fortes
SQLite
Um dos princípios mais importantes de bancos de dados do SQL é o esquema: uma declaração formal
de como o banco de dados é organizado. O esquema é refletido nas declarações SQL usadas na criação
do banco de dados
Pitágoras
Programação Orientada a Objetos
Prof. Charles Fortes
SQLite
Um conjunto de APIs está disponível na classe SQLiteOpenHelper. Ao usar esta classe para obter
referências para seu banco de dados, o sistema realiza operações de possível longa execução para criar
e atualizar o banco de dados apenas quando necessário e não durante a inicialização do aplicativo.
Basta chamar getWritableDatabase() ou getReadableDatabase().
Pitágoras
Programação Orientada a Objetos
Prof. Charles Fortes
SQLite
Pitágoras
public HeroRepository(Context context){
ConexaoHelper cn = new ConexaoHelper(context);
db = cn.getWritableDatabase();
}
Programação Orientada a Objetos
Prof. Charles Fortes
SQLite
Para usar SQLiteOpenHelper, crie uma subclasse que substitua os métodos de retorno de chamada
onCreate(), onUpgrade() e onOpen(). Também é possível implementar onDowngrade(), mas não é
obrigatório.
Pitágoras
Programação Orientada a Objetos
Prof. Charles Fortes
SQLite
Pitágoras
import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
/**
* Created by charles.fortes on 11/05/2016.
*/
public class ConexaoHelper extends SQLiteOpenHelper {
public ConexaoHelper(Context context) {
super(context, "DBMarvel", null, 1);
}
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL("Create table herois (nome text, poder text)");
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
db.execSQL("drop table herois");
onCreate(db);
}
}
Programação Orientada a Objetos
Prof. Charles Fortes
SQLite
execSQL
executa um comando que não retorna resultado
rawQuery
recupera um cursor com os dados
Métodos da Canexão para Facilitar a Vida:
Insert Update Delete Query
db.insert("herois",null, valores);
dataBase.delete(NOME_TABELA, COLUNA_ID + " = ?", valoresParaSubstituir);
dataBase.update(NOME_TABELA, valores, COLUNA_ID + " = ?", valoresParaSubstituir);
Pitágoras
Programação Orientada a Objetos
Prof. Charles Fortes
SQLite
Cursor: Utilizado para percorrer os resultados da consulta e recuperar os itens
ContentValues: Lista de Chaves e Valores para Passagem de Parâmetros
Pitágoras
ContentValues values = new ContentValues();
values.put(COLUNA_MARCA, veiculo.getMarca());
values.put(COLUNA_MODELO, veiculo.getModelo());
values.put(COLUNA_PLACA, veiculo.getPlaca());
Programação Orientada a Objetos
Prof. Charles Fortes
SQLite
Pitágoras
private List<Veiculo> construirVeiculoPorCursor(Cursor cursor) {
List<Veiculo> veiculos = new ArrayList<Veiculo>();
if(cursor == null)
return veiculos;
try {
if (cursor.moveToFirst()) {
do {
int indexID = cursor.getColumnIndex(COLUNA_ID);
int indexMarca = cursor.getColumnIndex(COLUNA_MARCA);
int indexModelo = cursor.getColumnIndex(COLUNA_MODELO);
int indexPlaca = cursor.getColumnIndex(COLUNA_PLACA);
int id = cursor.getInt(indexID);
String marca = cursor.getString(indexMarca);
String modelo = cursor.getString(indexModelo);
String placa = cursor.getString(indexPlaca);
Veiculo veiculo = new Veiculo(id, marca, modelo, placa);
veiculos.add(veiculo);
} while (cursor.moveToNext());
}
} finally {
cursor.close();
}
return veiculos;
}
Programação Orientada a Objetos
Prof. Charles Fortes
Listas
Pitágoras
Programação Orientada a Objetos
Prof. Charles Fortes
Listas
Pitágoras
List<Heroi> avengers = repositorio.Listar();
List<String> valoresDaLista = new ArrayList<String>();
for(int i = 0; i < avengers.size(); i++) {
valoresDaLista.add("Nome: " + avengers.get(i).nome
+ " Poder: " + avengers.get(i).poder);
}
ArrayAdapter<String> adapter
= new ArrayAdapter<String>(
getApplicationContext(),
android.R.layout.simple_list_item_1,
android.R.id.text1,
valoresDaLista
);
listView.setAdapter(adapter);
Programação Orientada a Objetos
Prof. Charles Fortes
Notificações
Pitágoras
Programação Orientada a Objetos
Prof. Charles Fortes
Notifications
private static void showNotification(String title, String message) {
NotificationManager manager = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);
NotificationCompat.Builder notificationBuilder = new NotificationCompat.Builder(context.getApplicationContext())
.setSmallIcon(drawable)
.setPriority(Notification.PRIORITY_HIGH)
.setContentTitle(title)
.setContentText(message)
.setWhen(0)
.setTicker(context.getString(R.string.app_name));
PendingIntent pendingIntent = PendingIntent.getActivity(context, 0, intent, PendingIntent.FLAG_CANCEL_CURRENT);
notificationBuilder.setContentText(message);
notificationBuilder.setContentIntent(pendingIntent );
Notification notification = notificationBuilder.build();
manager.notify(notificationId, notification);
}
Pitágoras
Programação Orientada a Objetos
Prof. Charles Fortes
Dúvidas?
Pitágoras

Mais conteúdo relacionado

Destaque

Programação Genetica
Programação GeneticaProgramação Genetica
Programação GeneticaCharles Fortes
 
Sistemas Operacionais - Aula 7 - Processos e Threads
Sistemas Operacionais - Aula 7 - Processos e ThreadsSistemas Operacionais - Aula 7 - Processos e Threads
Sistemas Operacionais - Aula 7 - Processos e ThreadsCharles Fortes
 
inteligência artificial - fuzzy - mineração
inteligência artificial - fuzzy - mineraçãointeligência artificial - fuzzy - mineração
inteligência artificial - fuzzy - mineraçãoCharles Fortes
 
Conceitos – Do Homem à Máquina
Conceitos – Do Homem à MáquinaConceitos – Do Homem à Máquina
Conceitos – Do Homem à MáquinaCharles Fortes
 
PE-I - Apresentação Professor
PE-I - Apresentação ProfessorPE-I - Apresentação Professor
PE-I - Apresentação ProfessorCharles Fortes
 
IA - Apresentação do Professor
IA - Apresentação do ProfessorIA - Apresentação do Professor
IA - Apresentação do ProfessorCharles Fortes
 
Sistemas Operacionais - Aula 9 - Gerencia de Recursos
Sistemas Operacionais - Aula 9 - Gerencia de RecursosSistemas Operacionais - Aula 9 - Gerencia de Recursos
Sistemas Operacionais - Aula 9 - Gerencia de RecursosCharles Fortes
 
Programação Estruturada 2 - Apresentação do Professor
Programação Estruturada 2 - Apresentação do ProfessorProgramação Estruturada 2 - Apresentação do Professor
Programação Estruturada 2 - Apresentação do ProfessorCharles Fortes
 
PE1 - Comandos de Decisão
PE1 - Comandos de DecisãoPE1 - Comandos de Decisão
PE1 - Comandos de DecisãoCharles Fortes
 
Sistemas Operacionais - Aula 8 - Sincronização e Comunicação entre Processos
Sistemas Operacionais - Aula 8 - Sincronização e Comunicação entre ProcessosSistemas Operacionais - Aula 8 - Sincronização e Comunicação entre Processos
Sistemas Operacionais - Aula 8 - Sincronização e Comunicação entre ProcessosCharles Fortes
 
LPC - Apresentação do Professor
LPC - Apresentação do ProfessorLPC - Apresentação do Professor
LPC - Apresentação do ProfessorCharles Fortes
 
IA - Introdução Inteligência Artificial
IA - Introdução Inteligência ArtificialIA - Introdução Inteligência Artificial
IA - Introdução Inteligência ArtificialCharles Fortes
 
C# 6.0 .net coders
C# 6.0   .net codersC# 6.0   .net coders
C# 6.0 .net codersRenato Groff
 
Medição de esforço - Como combrar meus freelas
Medição de esforço - Como combrar meus freelasMedição de esforço - Como combrar meus freelas
Medição de esforço - Como combrar meus freelasCharles Fortes
 
Apresentação monografia - Proposta de uma Arquitetura para Customização de Si...
Apresentação monografia - Proposta de uma Arquitetura para Customização de Si...Apresentação monografia - Proposta de uma Arquitetura para Customização de Si...
Apresentação monografia - Proposta de uma Arquitetura para Customização de Si...Charles Fortes
 
Construindo Apps Com SignalR
Construindo Apps Com SignalRConstruindo Apps Com SignalR
Construindo Apps Com SignalRIvan Paulovich
 

Destaque (20)

Programação Genetica
Programação GeneticaProgramação Genetica
Programação Genetica
 
Sistemas Operacionais - Aula 7 - Processos e Threads
Sistemas Operacionais - Aula 7 - Processos e ThreadsSistemas Operacionais - Aula 7 - Processos e Threads
Sistemas Operacionais - Aula 7 - Processos e Threads
 
inteligência artificial - fuzzy - mineração
inteligência artificial - fuzzy - mineraçãointeligência artificial - fuzzy - mineração
inteligência artificial - fuzzy - mineração
 
Conceitos – Do Homem à Máquina
Conceitos – Do Homem à MáquinaConceitos – Do Homem à Máquina
Conceitos – Do Homem à Máquina
 
PE-I - Apresentação Professor
PE-I - Apresentação ProfessorPE-I - Apresentação Professor
PE-I - Apresentação Professor
 
IA - Apresentação do Professor
IA - Apresentação do ProfessorIA - Apresentação do Professor
IA - Apresentação do Professor
 
Sistemas Operacionais - Aula 9 - Gerencia de Recursos
Sistemas Operacionais - Aula 9 - Gerencia de RecursosSistemas Operacionais - Aula 9 - Gerencia de Recursos
Sistemas Operacionais - Aula 9 - Gerencia de Recursos
 
Programação Estruturada 2 - Apresentação do Professor
Programação Estruturada 2 - Apresentação do ProfessorProgramação Estruturada 2 - Apresentação do Professor
Programação Estruturada 2 - Apresentação do Professor
 
PE1 - Comandos de Decisão
PE1 - Comandos de DecisãoPE1 - Comandos de Decisão
PE1 - Comandos de Decisão
 
Sistemas Operacionais - Aula 8 - Sincronização e Comunicação entre Processos
Sistemas Operacionais - Aula 8 - Sincronização e Comunicação entre ProcessosSistemas Operacionais - Aula 8 - Sincronização e Comunicação entre Processos
Sistemas Operacionais - Aula 8 - Sincronização e Comunicação entre Processos
 
LPC - Apresentação do Professor
LPC - Apresentação do ProfessorLPC - Apresentação do Professor
LPC - Apresentação do Professor
 
IA - Introdução Inteligência Artificial
IA - Introdução Inteligência ArtificialIA - Introdução Inteligência Artificial
IA - Introdução Inteligência Artificial
 
Introdução ao DDD
Introdução ao DDDIntrodução ao DDD
Introdução ao DDD
 
Introdução ao TDD
Introdução ao TDDIntrodução ao TDD
Introdução ao TDD
 
C# 6.0 .net coders
C# 6.0   .net codersC# 6.0   .net coders
C# 6.0 .net coders
 
MVC Pattern
MVC PatternMVC Pattern
MVC Pattern
 
Medição de esforço - Como combrar meus freelas
Medição de esforço - Como combrar meus freelasMedição de esforço - Como combrar meus freelas
Medição de esforço - Como combrar meus freelas
 
Apresentação monografia - Proposta de uma Arquitetura para Customização de Si...
Apresentação monografia - Proposta de uma Arquitetura para Customização de Si...Apresentação monografia - Proposta de uma Arquitetura para Customização de Si...
Apresentação monografia - Proposta de uma Arquitetura para Customização de Si...
 
Construindo Apps Com SignalR
Construindo Apps Com SignalRConstruindo Apps Com SignalR
Construindo Apps Com SignalR
 
Nacidos entre 1935 1960 pt
Nacidos entre 1935 1960 ptNacidos entre 1935 1960 pt
Nacidos entre 1935 1960 pt
 

Semelhante a Pdm -final

Dê seus primeiros passos no desenvolvimento com Android
Dê seus primeiros passos no desenvolvimento com AndroidDê seus primeiros passos no desenvolvimento com Android
Dê seus primeiros passos no desenvolvimento com AndroidRodolfo Faquin Della Justina
 
Computação Móvel 2012.2 - Android
Computação Móvel 2012.2 - AndroidComputação Móvel 2012.2 - Android
Computação Móvel 2012.2 - AndroidTiago Bencardino
 
Introdução ao Android (minicurso 4h)
Introdução ao Android (minicurso 4h)Introdução ao Android (minicurso 4h)
Introdução ao Android (minicurso 4h)Rodrigo Rocha
 
Desenvolvimento de Aplicações para o Google App Engine (CPBR5)
Desenvolvimento de Aplicações para o Google App Engine (CPBR5)Desenvolvimento de Aplicações para o Google App Engine (CPBR5)
Desenvolvimento de Aplicações para o Google App Engine (CPBR5)Carlos Duarte do Nascimento
 
Desenvolvimento de aplicações para o Google App Engine
Desenvolvimento de aplicações para o Google App EngineDesenvolvimento de aplicações para o Google App Engine
Desenvolvimento de aplicações para o Google App EngineCampus Party Brasil
 
Curso de Introdução ao Android Básico
Curso de Introdução ao Android BásicoCurso de Introdução ao Android Básico
Curso de Introdução ao Android BásicoLuiz Carvalho
 
Kyrios: Infra-estrutura livre para desenvolvimento de software
Kyrios: Infra-estrutura livre para desenvolvimento de softwareKyrios: Infra-estrutura livre para desenvolvimento de software
Kyrios: Infra-estrutura livre para desenvolvimento de softwareFábio Nogueira de Lucena
 
Workshop Elasticsearch - Android Dev Conference 2016
Workshop Elasticsearch - Android Dev Conference 2016Workshop Elasticsearch - Android Dev Conference 2016
Workshop Elasticsearch - Android Dev Conference 2016Thiago Barradas
 
Minicurso code igniter aula 2
Minicurso code igniter   aula 2Minicurso code igniter   aula 2
Minicurso code igniter aula 2lfernandomcj
 
TDC2016POA | Trilha Android - Testes no Android
TDC2016POA | Trilha Android - Testes no AndroidTDC2016POA | Trilha Android - Testes no Android
TDC2016POA | Trilha Android - Testes no Androidtdc-globalcode
 
TDC2016POA | Trilha Android - Testes no Android
TDC2016POA | Trilha Android - Testes no AndroidTDC2016POA | Trilha Android - Testes no Android
TDC2016POA | Trilha Android - Testes no Androidtdc-globalcode
 
Introdução a Big Data e Apache Solr
Introdução a Big Data e Apache SolrIntrodução a Big Data e Apache Solr
Introdução a Big Data e Apache SolrJuliano Martins
 
Android app communication
Android app communicationAndroid app communication
Android app communicationEloi Júnior
 
mbatarce,+Guilherme+Henrique+Vieira+Pereira+-+Reformulado.pdf
mbatarce,+Guilherme+Henrique+Vieira+Pereira+-+Reformulado.pdfmbatarce,+Guilherme+Henrique+Vieira+Pereira+-+Reformulado.pdf
mbatarce,+Guilherme+Henrique+Vieira+Pereira+-+Reformulado.pdfWilliam Almeida
 
Novidades do Django 1.2 e o que vem por ai
Novidades do Django 1.2 e o que vem por aiNovidades do Django 1.2 e o que vem por ai
Novidades do Django 1.2 e o que vem por aiMarcos Petry
 
Trabalho 4 Semestre e 5 Semestre 2015
Trabalho 4 Semestre e 5 Semestre 2015Trabalho 4 Semestre e 5 Semestre 2015
Trabalho 4 Semestre e 5 Semestre 2015Rodrigo Marinho
 

Semelhante a Pdm -final (20)

Dê seus primeiros passos no desenvolvimento com Android
Dê seus primeiros passos no desenvolvimento com AndroidDê seus primeiros passos no desenvolvimento com Android
Dê seus primeiros passos no desenvolvimento com Android
 
Computação Móvel 2012.2 - Android
Computação Móvel 2012.2 - AndroidComputação Móvel 2012.2 - Android
Computação Móvel 2012.2 - Android
 
Introdução ao Android (minicurso 4h)
Introdução ao Android (minicurso 4h)Introdução ao Android (minicurso 4h)
Introdução ao Android (minicurso 4h)
 
Desenvolvimento de Aplicações para o Google App Engine (CPBR5)
Desenvolvimento de Aplicações para o Google App Engine (CPBR5)Desenvolvimento de Aplicações para o Google App Engine (CPBR5)
Desenvolvimento de Aplicações para o Google App Engine (CPBR5)
 
Desenvolvimento de aplicações para o Google App Engine
Desenvolvimento de aplicações para o Google App EngineDesenvolvimento de aplicações para o Google App Engine
Desenvolvimento de aplicações para o Google App Engine
 
Curso de Introdução ao Android Básico
Curso de Introdução ao Android BásicoCurso de Introdução ao Android Básico
Curso de Introdução ao Android Básico
 
Kyrios: Infra-estrutura livre para desenvolvimento de software
Kyrios: Infra-estrutura livre para desenvolvimento de softwareKyrios: Infra-estrutura livre para desenvolvimento de software
Kyrios: Infra-estrutura livre para desenvolvimento de software
 
Curso Básico Android - Aula 02
Curso Básico Android - Aula 02Curso Básico Android - Aula 02
Curso Básico Android - Aula 02
 
Workshop Elasticsearch - Android Dev Conference 2016
Workshop Elasticsearch - Android Dev Conference 2016Workshop Elasticsearch - Android Dev Conference 2016
Workshop Elasticsearch - Android Dev Conference 2016
 
Minicurso code igniter aula 2
Minicurso code igniter   aula 2Minicurso code igniter   aula 2
Minicurso code igniter aula 2
 
TDC2016POA | Trilha Android - Testes no Android
TDC2016POA | Trilha Android - Testes no AndroidTDC2016POA | Trilha Android - Testes no Android
TDC2016POA | Trilha Android - Testes no Android
 
TDC2016POA | Trilha Android - Testes no Android
TDC2016POA | Trilha Android - Testes no AndroidTDC2016POA | Trilha Android - Testes no Android
TDC2016POA | Trilha Android - Testes no Android
 
Introdução a Big Data e Apache Solr
Introdução a Big Data e Apache SolrIntrodução a Big Data e Apache Solr
Introdução a Big Data e Apache Solr
 
Android app communication
Android app communicationAndroid app communication
Android app communication
 
Introdução aos Padrões Web e Tecnologias para o Ambiente Digital - Aula 02 - ...
Introdução aos Padrões Web e Tecnologias para o Ambiente Digital - Aula 02 - ...Introdução aos Padrões Web e Tecnologias para o Ambiente Digital - Aula 02 - ...
Introdução aos Padrões Web e Tecnologias para o Ambiente Digital - Aula 02 - ...
 
mbatarce,+Guilherme+Henrique+Vieira+Pereira+-+Reformulado.pdf
mbatarce,+Guilherme+Henrique+Vieira+Pereira+-+Reformulado.pdfmbatarce,+Guilherme+Henrique+Vieira+Pereira+-+Reformulado.pdf
mbatarce,+Guilherme+Henrique+Vieira+Pereira+-+Reformulado.pdf
 
Novidades do Django 1.2 e o que vem por ai
Novidades do Django 1.2 e o que vem por aiNovidades do Django 1.2 e o que vem por ai
Novidades do Django 1.2 e o que vem por ai
 
ava facul uva unijorge (146).pdf
ava facul uva unijorge (146).pdfava facul uva unijorge (146).pdf
ava facul uva unijorge (146).pdf
 
Trabalho 4 Semestre e 5 Semestre 2015
Trabalho 4 Semestre e 5 Semestre 2015Trabalho 4 Semestre e 5 Semestre 2015
Trabalho 4 Semestre e 5 Semestre 2015
 
Android
AndroidAndroid
Android
 

Mais de Charles Fortes

Acesso a banco de dados com entity framework
Acesso a banco de dados com entity frameworkAcesso a banco de dados com entity framework
Acesso a banco de dados com entity frameworkCharles Fortes
 
Introdução a Desenvolvimento de Jogos HTML 5 para Windows 8 com Html5Quintus
Introdução a Desenvolvimento de Jogos HTML 5 para Windows 8 com Html5QuintusIntrodução a Desenvolvimento de Jogos HTML 5 para Windows 8 com Html5Quintus
Introdução a Desenvolvimento de Jogos HTML 5 para Windows 8 com Html5QuintusCharles Fortes
 
Economia global: França e Inglaterra
Economia global: França e InglaterraEconomia global: França e Inglaterra
Economia global: França e InglaterraCharles Fortes
 
Sistemas Operacionais - Aula 6 - Estrutura do Sistema Operacional
Sistemas Operacionais - Aula 6 - Estrutura do Sistema OperacionalSistemas Operacionais - Aula 6 - Estrutura do Sistema Operacional
Sistemas Operacionais - Aula 6 - Estrutura do Sistema OperacionalCharles Fortes
 
Sistemas Operacionais - Aula 5 - Concorrência
Sistemas Operacionais - Aula 5 - ConcorrênciaSistemas Operacionais - Aula 5 - Concorrência
Sistemas Operacionais - Aula 5 - ConcorrênciaCharles Fortes
 
Sistemas Operacionais - Aula 4 - Revisão e Exercícios
Sistemas Operacionais - Aula 4 - Revisão e ExercíciosSistemas Operacionais - Aula 4 - Revisão e Exercícios
Sistemas Operacionais - Aula 4 - Revisão e ExercíciosCharles Fortes
 
Sistemas Operacionais - Aula 3 - Hardware e Software
Sistemas Operacionais - Aula 3 - Hardware e SoftwareSistemas Operacionais - Aula 3 - Hardware e Software
Sistemas Operacionais - Aula 3 - Hardware e SoftwareCharles Fortes
 
Sistemas Operacionais - Aula 2 - Visão Geral de Sistemas Operacionais
Sistemas Operacionais - Aula 2 - Visão Geral de Sistemas OperacionaisSistemas Operacionais - Aula 2 - Visão Geral de Sistemas Operacionais
Sistemas Operacionais - Aula 2 - Visão Geral de Sistemas OperacionaisCharles Fortes
 
Sistemas Operacionais - Aula 1 - História e Introdução a SO
Sistemas Operacionais - Aula 1 - História e Introdução a SOSistemas Operacionais - Aula 1 - História e Introdução a SO
Sistemas Operacionais - Aula 1 - História e Introdução a SOCharles Fortes
 
Apresentação prof e materia
Apresentação prof e materiaApresentação prof e materia
Apresentação prof e materiaCharles Fortes
 
Desenvolvimento de software seguro
Desenvolvimento de software seguroDesenvolvimento de software seguro
Desenvolvimento de software seguroCharles Fortes
 

Mais de Charles Fortes (11)

Acesso a banco de dados com entity framework
Acesso a banco de dados com entity frameworkAcesso a banco de dados com entity framework
Acesso a banco de dados com entity framework
 
Introdução a Desenvolvimento de Jogos HTML 5 para Windows 8 com Html5Quintus
Introdução a Desenvolvimento de Jogos HTML 5 para Windows 8 com Html5QuintusIntrodução a Desenvolvimento de Jogos HTML 5 para Windows 8 com Html5Quintus
Introdução a Desenvolvimento de Jogos HTML 5 para Windows 8 com Html5Quintus
 
Economia global: França e Inglaterra
Economia global: França e InglaterraEconomia global: França e Inglaterra
Economia global: França e Inglaterra
 
Sistemas Operacionais - Aula 6 - Estrutura do Sistema Operacional
Sistemas Operacionais - Aula 6 - Estrutura do Sistema OperacionalSistemas Operacionais - Aula 6 - Estrutura do Sistema Operacional
Sistemas Operacionais - Aula 6 - Estrutura do Sistema Operacional
 
Sistemas Operacionais - Aula 5 - Concorrência
Sistemas Operacionais - Aula 5 - ConcorrênciaSistemas Operacionais - Aula 5 - Concorrência
Sistemas Operacionais - Aula 5 - Concorrência
 
Sistemas Operacionais - Aula 4 - Revisão e Exercícios
Sistemas Operacionais - Aula 4 - Revisão e ExercíciosSistemas Operacionais - Aula 4 - Revisão e Exercícios
Sistemas Operacionais - Aula 4 - Revisão e Exercícios
 
Sistemas Operacionais - Aula 3 - Hardware e Software
Sistemas Operacionais - Aula 3 - Hardware e SoftwareSistemas Operacionais - Aula 3 - Hardware e Software
Sistemas Operacionais - Aula 3 - Hardware e Software
 
Sistemas Operacionais - Aula 2 - Visão Geral de Sistemas Operacionais
Sistemas Operacionais - Aula 2 - Visão Geral de Sistemas OperacionaisSistemas Operacionais - Aula 2 - Visão Geral de Sistemas Operacionais
Sistemas Operacionais - Aula 2 - Visão Geral de Sistemas Operacionais
 
Sistemas Operacionais - Aula 1 - História e Introdução a SO
Sistemas Operacionais - Aula 1 - História e Introdução a SOSistemas Operacionais - Aula 1 - História e Introdução a SO
Sistemas Operacionais - Aula 1 - História e Introdução a SO
 
Apresentação prof e materia
Apresentação prof e materiaApresentação prof e materia
Apresentação prof e materia
 
Desenvolvimento de software seguro
Desenvolvimento de software seguroDesenvolvimento de software seguro
Desenvolvimento de software seguro
 

Último

Padrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemploPadrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemploDanilo Pinotti
 
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docxATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx2m Assessoria
 
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docxATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx2m Assessoria
 
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docxATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx2m Assessoria
 
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docxATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx2m Assessoria
 
Boas práticas de programação com Object Calisthenics
Boas práticas de programação com Object CalisthenicsBoas práticas de programação com Object Calisthenics
Boas práticas de programação com Object CalisthenicsDanilo Pinotti
 

Último (6)

Padrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemploPadrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemplo
 
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docxATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
 
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docxATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
 
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docxATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
 
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docxATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
 
Boas práticas de programação com Object Calisthenics
Boas práticas de programação com Object CalisthenicsBoas práticas de programação com Object Calisthenics
Boas práticas de programação com Object Calisthenics
 

Pdm -final

  • 1. Programação Para Dispositivos Moveis Prof. Charles Fortes PDM Pitágoras
  • 2. Programação Orientada a Objetos Prof. Charles Fortes Charles Fortes Pitágoras
  • 3. Programação Orientada a Objetos Prof. Charles Fortes Charles Fortes Líder Técnico na Empresa Prime Systems. Agilista, apaixonado por desenvolvimento (Web, Desktop, Mobile, o que for), pai, amante do Paintball e do Kenjutsu. MTAC - Microsoft Technical Audience Contributor 100Loop - DotNetRaptors Pitágoras
  • 4. Programação Orientada a Objetos Prof. Charles Fortes Charles Fortes Líder Técnico na Empresa Prime Systems. Agilista, apaixonado por desenvolvimento (Web, Desktop, Mobile, o que for), pai, amante do Paintball e do Kenjutsu. MTAC - Microsoft Technical Audience Contributor 100Loop - DotNetRaptors SlideShare: http://pt.slideshare.net/charleswellingtonfortes Linkedin: http://br.linkedin.com/in/charlesfortes/ Twitter: @CharlesFortes Pitágoras
  • 5. Programação Orientada a Objetos Prof. Charles Fortes Charles Fortes Líder Técnico na Empresa Prime Systems. Agilista, apaixonado por desenvolvimento (Web, Desktop, Mobile, o que for), pai, amante do Paintball e do Kenjutsu. MTAC - Microsoft Technical Audience Contributor 100Loop - DotNetRaptors Desenvolvimento Web – MVC – Angular.JS – JQuery – SQLServer – MySQL – HTML5 – NoSQL Pitágoras
  • 6. Programação Orientada a Objetos Prof. Charles Fortes Android Manifest Pitágoras
  • 7. Programação Orientada a Objetos Prof. Charles Fortes Manifest tem a função de ser o principal arquivo de configuração do seu aplicativo - Icone - Nome - Telas - Permissões - Dominio Pitágoras
  • 8. Programação Orientada a Objetos Prof. Charles Fortes Layout Pitágoras
  • 9. Programação Orientada a Objetos Prof. Charles Fortes Layout A arquitetura de interface gráfica do Android é baseada no padrão de projetos MVC (Model – View – Controller). Onde a camada Model, é responsável pelas regras de negócio da aplicação. A Camada de View, é responsável pela interface gráfica. E a camada de Controller gerencia os eventos de uma determinada tela. A grande vantagem proporcionada por este padrão é a modularidade. Ou seja, conseguimos alterar todo um layout de uma determinada tela sem mexer no código que diz respeito ao comportamento da mesma. Pitágoras
  • 10. Programação Orientada a Objetos Prof. Charles Fortes Layout Imaginando uma tela de login, a cor da tela, o tamanho e a fonte dos botões, tudo que diz respeito a interface gráfica é definido na camada View. Já o que irá acontecer quando os botões forem clicados será ministrado pela camada de Controller. No Android, os layouts XML assumem o papel de View. As Activitys assumem o papel de Controller. E a classe R, faz a ligação entre as duas camadas, permitindo o acesso de recursos encontrados na pasta Res nas Activitys do projeto. Pitágoras
  • 11. Programação Orientada a Objetos Prof. Charles Fortes Layout Nota: Você pode criar componentes gráficos diretamente na Activity, sem a necessidade da criação de um layout.xml. No entanto a modularidade citada acima seria perdida. Pitágoras
  • 12. Programação Orientada a Objetos Prof. Charles Fortes Layout LinearLayout: Este ViewGroup é um dos mais populares. Irá organizar os componentes com base na sua característica orientation. A tag orientation pode receber vertical ou horizontal. Caso o orientation estiver configurado como vertical, os componentes serão exibidos um em cima do outro. Caso esteja horizontal, os componentes serão exibidos um ao lado do outro. TableLayout: Esse layout organiza os componentes no formato de tabelas. Colunas e linhas. RelativeLayout: Esse layout organiza os componentes de um modo mais livre. A definição de onde o componente vai ficar, será definida no própria View. Pitágoras
  • 13. Programação Orientada a Objetos Prof. Charles Fortes Activities Pitágoras
  • 14. Programação Orientada a Objetos Prof. Charles Fortes Activity A parte comportamental, como ações de um botão ficam a cargo do Controller no caso do Android representado pela classe Activity. Sobrescrevemos o método onCreate da Activity, é nele que vincularemos o layout xml que criamos anteriormente. Pitágoras
  • 15. Programação Orientada a Objetos Prof. Charles Fortes Activity Pitágoras 1 2 3 4 5 6 7 8 9 public class ExemploActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.exemplo_layout); } }
  • 16. Programação Orientada a Objetos Prof. Charles Fortes Activity Toda Activity é criada, fica em contato com o usuário, em algum momento pode ser interrompida (como em um telefonema), em seguida pode ser restaurada ou destruída. Este é o ciclo de vida de uma Activity, e cada etapa descrita acima é marcada por um método. Assim que uma Activity é criada, o método onCreate(Bunde instanceSaved) é acionado. É neste momento que o desenvolvedor deve criar a interface gráfica que irá ficar em contato com o usuário. Daí a necessidade de chamar o método setContentView neste ponto, pois é ele que faz o vinculo do Layout.xml com a Activity. Quando uma Activity é totalmente destruída o método onDestroy() é acionado. Este é o momento ideal para a liberação dos recursos que estavam sendo consumidos pela Activity. Por exemplo: Caso esta Activity esteja exibindo um vídeo via streaming por exemplo, este é o momento de cancelar a conexão e liberar o consumo de memória realizada pelo visualizador de vídeo. Pitágoras
  • 17. Programação Orientada a Objetos Prof. Charles Fortes Classe R Pitágoras
  • 18. Programação Orientada a Objetos Prof. Charles Fortes R Responsável pelo acesso aos resources do projeto, sejam eles imagens, strings, ids, etc. Pitágoras
  • 19. Programação Orientada a Objetos Prof. Charles Fortes Intents Pitágoras http://developer.android.com/intl/pt-br/guide/components/intents-filters.html
  • 20. Programação Orientada a Objetos Prof. Charles Fortes Intents Intents são declarações de intenções para o sistema do dispositivo, que pode ser usada dentre outras coisas, desde uma simples troca de tela, acesso a um componente do dispositivo ou a outros aplicativos. Pitágoras
  • 21. Programação Orientada a Objetos Prof. Charles Fortes Intents Intent intent = new Intent(this, OutraAtividade.class); startActivity(intent); ------------------------------------ Uri uri = Uri.fromFile(new File("/sdcard/minhaaplicacao/hello_camera.jpg")); Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); intent.putExtra(MediaStore.EXTRA_OUTPUT, uri); startActivity(intent); Pitágoras
  • 22. Programação Orientada a Objetos Prof. Charles Fortes URI https://pt.wikipedia.org/wiki/URI A URI (um objeto Uri) que referencia os dados a serem aproveitados e/ou o tipo MIME desses dados. O tipo dos dados fornecidos geralmente é determinado pela ação da intenção. Ao criar uma intenção, em geral, é importante especificar o tipo de dados (seu tipo MIME) em adição à URI. Pitágoras
  • 23. Programação Orientada a Objetos Prof. Charles Fortes URI https://pt.wikipedia.org/wiki/URI A sintaxe URI é essencialmente um nome de conjunto URI como "HTTP", "FTP", "mailto", "URN", "tel", "rtsp", "file" etc, seguido de um caractere dois pontos e, por fim, a parte específica do conjunto. Exemplos de URIs Absolutas[editar | editar código-fonte] • http://example.org/absolute/URI/with/absolute/path/to/resource.txt • ftp://example.org/resource.txt • file:////home/example/example.org/resource.txt • urn:issn:1535-3613 Pitágoras
  • 24. Programação Orientada a Objetos Prof. Charles Fortes Extras - Bundles Pares de valores-chave que carregam informações adicionais exigidas para realizar a ação solicitada. Assim, como algumas ações usam determinados tipos de URIs de dados, outras também usam determinados extras. É possível adicionar dados extras com diversos métodos putExtra(), cada um aceitando dois parâmetros: o nome principal e o valor. Também é possível criar um objeto Bundle com todos os dados extras e, em seguida, inserir o Bundle na Intent com putExtras(). Pitágoras
  • 25. Programação Orientada a Objetos Prof. Charles Fortes Extras - Bundles Por exemplo: ao criar uma intenção para enviar um e-mail com ACTION_SEND, é possível especificar o recipiente "para" com a chave EXTRA_EMAIL e especificar o "assunto" com a chave EXTRA_SUBJECT. A classe Intent especifica diversas constantes EXTRA_* para tipos de dados padronizados. Se for necessário declarar chaves extras (para intenções que seu aplicativo receba), certifique-se de incluir o nome do pacote do aplicativo como prefixo. Por exemplo: Pitágoras
  • 26. Programação Orientada a Objetos Prof. Charles Fortes Conexão com o Banco Pitágoras https://developer.android.com/training/basics/data-storage/databases.html#DeleteDbRow
  • 27. Programação Orientada a Objetos Prof. Charles Fortes SQLite Um dos princípios mais importantes de bancos de dados do SQL é o esquema: uma declaração formal de como o banco de dados é organizado. O esquema é refletido nas declarações SQL usadas na criação do banco de dados Pitágoras
  • 28. Programação Orientada a Objetos Prof. Charles Fortes SQLite Um conjunto de APIs está disponível na classe SQLiteOpenHelper. Ao usar esta classe para obter referências para seu banco de dados, o sistema realiza operações de possível longa execução para criar e atualizar o banco de dados apenas quando necessário e não durante a inicialização do aplicativo. Basta chamar getWritableDatabase() ou getReadableDatabase(). Pitágoras
  • 29. Programação Orientada a Objetos Prof. Charles Fortes SQLite Pitágoras public HeroRepository(Context context){ ConexaoHelper cn = new ConexaoHelper(context); db = cn.getWritableDatabase(); }
  • 30. Programação Orientada a Objetos Prof. Charles Fortes SQLite Para usar SQLiteOpenHelper, crie uma subclasse que substitua os métodos de retorno de chamada onCreate(), onUpgrade() e onOpen(). Também é possível implementar onDowngrade(), mas não é obrigatório. Pitágoras
  • 31. Programação Orientada a Objetos Prof. Charles Fortes SQLite Pitágoras import android.content.Context; import android.database.sqlite.SQLiteDatabase; import android.database.sqlite.SQLiteOpenHelper; /** * Created by charles.fortes on 11/05/2016. */ public class ConexaoHelper extends SQLiteOpenHelper { public ConexaoHelper(Context context) { super(context, "DBMarvel", null, 1); } @Override public void onCreate(SQLiteDatabase db) { db.execSQL("Create table herois (nome text, poder text)"); } @Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { db.execSQL("drop table herois"); onCreate(db); } }
  • 32. Programação Orientada a Objetos Prof. Charles Fortes SQLite execSQL executa um comando que não retorna resultado rawQuery recupera um cursor com os dados Métodos da Canexão para Facilitar a Vida: Insert Update Delete Query db.insert("herois",null, valores); dataBase.delete(NOME_TABELA, COLUNA_ID + " = ?", valoresParaSubstituir); dataBase.update(NOME_TABELA, valores, COLUNA_ID + " = ?", valoresParaSubstituir); Pitágoras
  • 33. Programação Orientada a Objetos Prof. Charles Fortes SQLite Cursor: Utilizado para percorrer os resultados da consulta e recuperar os itens ContentValues: Lista de Chaves e Valores para Passagem de Parâmetros Pitágoras ContentValues values = new ContentValues(); values.put(COLUNA_MARCA, veiculo.getMarca()); values.put(COLUNA_MODELO, veiculo.getModelo()); values.put(COLUNA_PLACA, veiculo.getPlaca());
  • 34. Programação Orientada a Objetos Prof. Charles Fortes SQLite Pitágoras private List<Veiculo> construirVeiculoPorCursor(Cursor cursor) { List<Veiculo> veiculos = new ArrayList<Veiculo>(); if(cursor == null) return veiculos; try { if (cursor.moveToFirst()) { do { int indexID = cursor.getColumnIndex(COLUNA_ID); int indexMarca = cursor.getColumnIndex(COLUNA_MARCA); int indexModelo = cursor.getColumnIndex(COLUNA_MODELO); int indexPlaca = cursor.getColumnIndex(COLUNA_PLACA); int id = cursor.getInt(indexID); String marca = cursor.getString(indexMarca); String modelo = cursor.getString(indexModelo); String placa = cursor.getString(indexPlaca); Veiculo veiculo = new Veiculo(id, marca, modelo, placa); veiculos.add(veiculo); } while (cursor.moveToNext()); } } finally { cursor.close(); } return veiculos; }
  • 35. Programação Orientada a Objetos Prof. Charles Fortes Listas Pitágoras
  • 36. Programação Orientada a Objetos Prof. Charles Fortes Listas Pitágoras List<Heroi> avengers = repositorio.Listar(); List<String> valoresDaLista = new ArrayList<String>(); for(int i = 0; i < avengers.size(); i++) { valoresDaLista.add("Nome: " + avengers.get(i).nome + " Poder: " + avengers.get(i).poder); } ArrayAdapter<String> adapter = new ArrayAdapter<String>( getApplicationContext(), android.R.layout.simple_list_item_1, android.R.id.text1, valoresDaLista ); listView.setAdapter(adapter);
  • 37. Programação Orientada a Objetos Prof. Charles Fortes Notificações Pitágoras
  • 38. Programação Orientada a Objetos Prof. Charles Fortes Notifications private static void showNotification(String title, String message) { NotificationManager manager = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE); NotificationCompat.Builder notificationBuilder = new NotificationCompat.Builder(context.getApplicationContext()) .setSmallIcon(drawable) .setPriority(Notification.PRIORITY_HIGH) .setContentTitle(title) .setContentText(message) .setWhen(0) .setTicker(context.getString(R.string.app_name)); PendingIntent pendingIntent = PendingIntent.getActivity(context, 0, intent, PendingIntent.FLAG_CANCEL_CURRENT); notificationBuilder.setContentText(message); notificationBuilder.setContentIntent(pendingIntent ); Notification notification = notificationBuilder.build(); manager.notify(notificationId, notification); } Pitágoras
  • 39. Programação Orientada a Objetos Prof. Charles Fortes Dúvidas? Pitágoras