Desenvolvimento de Soluções Móveis - Android

Fábio Sobreira Coriolano Filho

Principais Plataformas
Windows Mobile  J2ME  Brew  Apple  Android

Android
 

Plataforma desenvolvida pela Google. Essa plataforma é mantida pela OHA (Open Handset Alliance), um grupo formado por mais de 40 empresas. Primeira plataforma Open Source de desenvolvimento para dispositivos moveis baseada na plataforma Java com sistema operacional Linux. Pode-se dizer que a plataforma Android é a primeira plataforma móvel completa, aberta e livre.

Android

www.portalandroid.org

http://developer.android.com/index.html

Sumário



 


Estrutura da Plataforma; Configurando o Ambiente de Desenvolvimento; Hello World; Conhecendo os principais componentes; Trabalhando com Layout; Desenvolvendo menu; Propriedades comuns; Criando uma arquitetura para Desenvolvimento; Trabalhando com SQLite;

ESTRUTURA DA PLATAFORMA

Estrutura da Plataforma
   


   

Application framework: proporciona a reutilização e substituição de componentes; Dalvik virtual machine: otimizada para dispositivos móveis; Browser Integrado: baseado no webkit engine; Gráficos Otimizados: possui uma biblioteca 2D; e 3D baseada na especificação OpenGL ES 1.0 (aceleração de hardware é opcional); SQLite: para guardar dados estruturados; Suporte multimídia: para áudio, vídeo e formatos de imagem (MPEG4,H.264, MP3, AAC, AMR, JPG, PNG, GIF); Bluetooth, EDGE, 3G, e WiFi (dependente de hardware); Câmera, GPS, compasso, e acelerômetro (dependente de hardware); Rico ambiente de desenvolvimento, incluindo um emulador de dispositivo, ferramentas de depuração, memória, performance e um plugin para o Eclipse (ADT).

Arquitetura da Plataforma

Bibliotecas
 

  


System C library – uma implementação derivada da biblioteca C padrão sistema (libc) do BSD sintonizada para dispositivos rodando Linux; Media Libraries – baseado no PacketVideo’s OpenCORE; as bibliotecas suportam os mais populares formatos de áudio e vídeo, bem como imagens estáticas; Surface Manager – gera acesso ao subsistema de exibição bem como as múltiplas camadas de aplicações 2D e 3D; LibWebCore – browser engine utilizado tanto no Android Browser quanto para exibições web; SGL – o engine de gráficos 2D - 3D libraries – uma implementação baseada no OpenGL ES 1.0 APIs; as bibliotecas utilizam aceleração 3D via hardware (quando disponível) ou o software de renderização 3D altamente otimizado incluído no Android; FreeType – renderização de fontes bitmap e vector; SQLite – um poderoso e leve engine de banco de dados relacional disponível para todas as aplicações;

Kernel linux
Utiliza a versão 2,6 do kernel do Linux para os serviços centrais do sistema, tais como segurança, gestão de memória, gestão de processos, etc.  O kernel também atua como uma camada de abstração entre o hardware e o resto do software.

Android Runtime
 

O Android inclui um grupo de bibliotecas que fornece a maioria das funcionalidades disponíveis nas principais bibliotecas da linguagem Java. Toda aplicação Android roda em seu próprio processo, com sua própria instância da máquina virtual Dalvik. O Dalvik foi escrito para executar várias VMs. Essa máquina virtual executa arquivos .dex, que é otimizado para consumo mínimo de memória. A VM é baseada em registros e roda classes compiladas pela linguagem Java, que foram transformadas em arquivos .dex, através da ferramenta “dx” incluída no SDK. O Dalvik VM baseia-se no kernel do Linux para funcionalidades subjacentes como o encadeamento e a gestão de baixo nível de memória.

Porque Desenvolver para Android ?

Plataforma open source.
◦ Interessante para fabricantes de Aparelhos; sistema open source utilizado sem custo e bem construído, portável para diferentes plataformas.

Desenvolvimento simples, com serviços Google que rodam nativamente sem problemas.  Plataforma que já se tornou a 2° maior do mercado de Smartphones.

CONFIGURANDO O AMBIENTE DE DESENVOLVIMENTO

Configurando o Ambiente de Desenvolvimento

Ferramentas:

Java SDK:

http://java.sun.com/javase/downloads/index.jsp

ECLIPSE IDE:

http://www.eclipse.org/downloads/

Android SDK:

http://developer.android.com/sdk/index.html

Plugin ADT para eclipse:

https://dl-ssl.google.com/android/eclipse/

Android SDK
Descompacte o sdk no C:/ Clique em sdk manager

Android SDK
Será feito a atualização do repositório

Android SDK
Pacotes instalados
Será realizada a atualização do repositório

Pacotes selecionados para instalação

Android SDK

Caso tenha algum problema na tela anterior, basta ir em settings e selecionar o campo marcado

Android SDK
Criando a Android Virtual Device Em virtual devices clique em New...

Android SDK – Android Virtual Device
Criando a Android Virtual Device Depois de selecionar sistema e a API, skin,resolução, e os componetes de hardware Clique em Create AVD.

Eclipse IDE
Instalando o plugin ADT
help -> install new software

Eclipse IDE
Instalando o plugin ADT

Clique em add...

Eclipse IDE
Instalando o plugin ADT Name: nome do plugin; Location: url para instalação;

Eclipse IDE
Instalando o plugin ADT Selecione os plugins para instalação e next.

Eclipse IDE
Instalando o plugin ADT Aceite os termos da licença, clique em Next e Finish. Assim que terminar a instalação do plugin, o Eclipse vai pedir sua reinicialização.

Eclipse IDE
Instalando o plugin ADT
No eclipse: windows -> Preferences -> Android. Escolha o local de instalação do sdk do Android.

Eclipse IDE
Instalando o plugin ADT AVD(s) criadas serão listadas. Clique Apply e OK.

CRIANDO PRIMEIRA APLICAÇÃO

Primeira Aplicação

Para criar a nossa primeira aplicação clique em File New Project - Android - Android Project e clique Next.

Primeira Aplicação

Primeira Aplicação
Estrutura do projeto.

Primeira Aplicação
Agora vá em Run as Android Aplication

Estrutura das Aplicações

Estrutura das Aplicações
Android Library – local de referencia da biblioteca Android, onde está o android.jar. AndroidManifest.xml – Arquivo central de configuração da aplicação, informando ao sistema o que deve fazer para instalação em um celular o no emulador, tendo um editor especializado.

Estrutura das Aplicações
default .properties – Arquivo gerado pelo plugin ADT que não pode ser alterado. Src – Onde se encontra o arquivos de classe .java Gen – Neste local existe um arquivo chamado R.java ; não pode ser modifica, pois ele serve de interface entre o XML e Java.

Estrutura das Aplicações
assets – Arquivo que serão empacotados junto com o projeto. res – Local onde estão os gráficos , imagens, layouts, strings e recursos do aplicativo são gerenciados. res/drawable – Local onde ficam as imagens,ícones etc.. res/layout – Aqui ficam guardados os arquivos.xml , que representam o layout de uma tela.

Estrutura das Aplicações

res/values – Local onde estão os arquivos de texto no qual pode se modificar a depender da necessidade.

Estrutura das Aplicações
Como instalar um arquivo .apk no celular android.
1) Baixar os driver Faça o download dos drivers do aparelho em: http://dl.google.com/android/android_usb_windows.zip Descompacte o arquivo em algum lugar da sua máquina. 2) Conecte o aparelho ao PC O windows detectará o aparelho, selecione o local onde você extraiu os drivers para instalar o telefone no PC. 3) Gerar o APK No Eclipse, clique com o botão direito no projeto, selecione "Android Tools | Export Unsigned Application Package". Selecione o local onde deseja salvar o arquivo APK

Estrutura das Aplicações
4) Gerar a chave (esse passo só é preciso fazer uma vez) No prompt de comando, digite o seguinte comando:
keytool -genkey -v -keystore "C:\Documents and Settings\[seu usuário]\Local Settings\Application Data\Android\debug.keystore" alias meuAlias -keyalg RSA -validity 10000 Se for solicitado, uma senha, digite: android. Será feita várias perguntas para gerar a chave. Responda cada uma delas. Citação: keytool é uma ferramenta do Java SDK (está na pasta bin).

Estrutura das Aplicações
Como instalar um arquivo .apk no celular android.
5) Assinar a aplicação jarsigner -verbose -keystore "C:\Documents and Settings\[seu usuário]\Local Settings\Application Data\Android\debug.keystore" MinhaApp.apk meuAlias jar signer é uma ferramenta do Java SDK (está na pasta bin). 6) Instalar a aplicação Se você não estiver com o emulador aberto, digite: adb install -r MinhaApp.apk Caso esteja com o emulador aberto, você precisará saber o serial de qual dos dispositivos você quer instalar (emulador ou aparelho). Digite o seguinte comando para listar os seriais: adb devices

Estrutura das Aplicações
Como instalar um arquivo .apk no celular android.
Adicione o serial no comando: adb install -s SERIAL -r MinhaApp.apk adb é uma ferramenta do Android SDK (está na pasta tools).

PRINCIPAIS COMPONENTES

Widgets

As aplicações Android são constituídas por widgets. Seguem os principais:
◦ TextView, EditText, Button, CheckBox, RadioButton, Spinner, ListView, ImageView, Gallery, ProgressBar, DatePicker, TimePicker.

Exemplo 1 – TextView, EditText, Button

Exemplo 1
//Crie o atributos da classe EditText ednumero1,ednumero2; //Acessando os componentes ednumero1 = (EditText) findViewById(R.id.numero1); ednumero2 = (EditText) findViewById(R.id.numero2); Button btsomar = (Button) findViewById(R.id.btsomar);

Exemplo 1
Ação do clique do button
btsomar.setOnClickListener( new View.OnClickListener(){ public void onClick(View arg0) { double num1 = Double.parseDouble(ednumero1.getText().toString()); double num2 = Double.parseDouble(ednumero2.getText().toString()); double res = num1 + num2; AlertDialog.Builder dialogo = new AlertDialog.Builder(AppSoma.this); dialogo.setTitle("Aviso"); dialogo.setMessage("Soma:" + res); dialogo.setNeutralButton("OK", null); dialogo.show(); } });

Exemplo 1
Ação do clique do button – Outra forma
//No método: onCreate Button btsomar = (Button) findViewById(R.id.btsomar); btsomar.setOnClickListener(btSomarAction); //Criar um novo método private OnClickListener btSomarAction = new OnClickListener() { public void onClick(View v) { //lógica } };

Exercício 1

Crie um calculadora.
◦ Utilize os componentes:
 Button btn0, btn1, btn2, btn3, btn4, btn5, btn6, btn7, btn8, btn9;  Button btnPonto, btnDividido, btnVezes, btnMenos, btnMais, Button btnIgual.  TextView mostrador, viewOperacao;

Exemplo 2 – CheckBox

Exemplo 2
// Criar os atributos CheckBox chkarroz,chkleite,chkcarne,chkfeijao; //Acessando os componentes chkarroz = (CheckBox) findViewById(R.id.chkarroz); chkleite = (CheckBox) findViewById(R.id.chkleite); chkcarne = (CheckBox) findViewById(R.id.chkcarne); chkfeijao = (CheckBox) findViewById(R.id.chkfeijao); Button bttotal = (Button) findViewById(R.id.bttotal);

Exemplo 2

//No método: onCreate Button bttotal = (Button) findViewById(R.id.bttotal); bttotal.setOnClickListener(bttotalAction); //Criar um novo método private OnClickListener bttotalAction= new OnClickListener() { public void onClick(View v) { //lógica } };

Exemplo 2
//lógica double total =0; //Teste para saber se está selecionado if(chkarroz.isChecked()) total += 2.69; if(chkleite.isChecked()) total += 5.00; if(chkcarne.isChecked()) total += 9.7; if(chkfeijao.isChecked()) total += 2.30; AlertDialog.Builder dialogo = new AlertDialog.Builder(AppCompra.this); //Defino o título dialogo.setTitle("Aviso"); //colocando a mensagem que vai ter dentro do Dialog dialogo.setMessage("Valor total da compra :" + String.valueOf(total)); //adicionando o botão de OK dialogo.setNeutralButton("OK", null); //mostrando o Dialog dialogo.show();

Exercício 2
Cadastre de forma dinâmica vários produtos.  Crie duas telas separadas.

◦ Tela 1 – Cadastro do produto ◦ Tela 2 – Listagem do produto

Utilize: Button, TextView, checkBox

Exemplo 3 – RadioButton RadioGroup

Exemplo 3
Adicione um RadioGroup  No outline, selecione o RadioGroup com o botão direito do mouse , escolha a opção Add.  Escolha a opção RadioButton  Dica:

◦ RadioGroup rg = (RadioGroup) findViewById(R.id.rgopcoes); ◦ int op = rg.getCheckedRadioButtonId(); ◦ if(op==R.id.rb40)

Exemplo 4 – Spinner (ComboBox)

Exemplo 4

Dicas:
private static final String[] percentual = {"De 40%","De 45%","De 50%"};

 

aPercentual = new ArrayAdapter<String>(this,android.R.layout.simple_s pinner_item, percentual); spnsal.setAdapter(aPercentual); spnsal.getSelectedItemPosition()

Exemplo 5 - ListView

Adicionem um TextView e um ListView (se encontra na guia Layouts)

Exemplo 5

Criando o vetor para povoar o ArrayAdapter

static final String[] contatos = new String[] { "Alline","Lucas","Rafael","Gabriela","Silvana" };

 Criando o ArrayAdapter ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,android.R.layout. simple_list_item_1, contatos); //Adicionando o ArrayAdapter no ListView lista.setAdapter(adapter);

Exemplo 5

Implementando o Onclick do ListView

lista.setOnItemClickListener(new OnItemClickListener(){ public void onItemClick(AdapterView arg0, View arg1, int arg2,long arg3) { if(lista.getSelectedItem()!=null){ AlertDialog.Builder dialogo = new AlertDialog.Builder(AppLista.this); dialogo.setTitle("Contato selecionado"); dialogo.setMessage(lista.getSelectedItem().toString()); dialogo.setNeutralButton("OK", null); dialogo.show(); } } });

Exemplo 6 - ImageView
Adicione a imagem escolhida na pasta “res/drawablemdpi”.  Para importar a imagem, clique com o botão direito do mouse sobre a pasta “res/drawable-mdpi” e selecione “Import”, depois selecione File System (Que se encontra dentro da pasta “General”). Agora é só setar o caminho da imagem.  Apague o componente TextView que se encontra na tela do dispositivo.

◦ Selecione o componente, clique com o botão direito do mouse e escolha a opção Remove.

Exemplo 6
Vá na seção “OutLine” e clique com o botão direito sobre o LinearLayout e selecione a opção “Add”.  Adicione um outro “LinearLayout” dentro do criado anteriormente.

Exemplo 6
  

Altera a propriedade do LinearLayout
◦ Orientation: horizontal

Adicione um ImageView e um TextView dentro do LinearLayout. No ImageView:
◦ Id: @+id/imagem ◦ Src: @drawable/foto1

No TextView
◦ Id: @+id/txtinfo ◦ Text: Foto 1

Exemplo 6

Adicione mais dois botões, dentro da estrutura do primeiro Linear_Layout
◦ Na propriedade Layout_width sete o valor fill_parent.

Código:  Para setar a imagem:

◦ imagem.setImageResource(R.drawable.f oto1);

Setar o texto da imagem
◦ txt.setText("Foto 1");

Exemplo 7 - Gallery
Crie um novo projeto  Adicione três imagens na pasta res/drawable-mdpi.  Crie uma classe chamada ImageAdapter.  Segue código no slide seguinte

import android.content.Context; import android.view.*; import android.widget.*; public class ImageAdapter extends BaseAdapter { private Context myContext; // Neste array são colocadas as imagens a serem exidas no componente Gallery . private int[] myImageIds = { R.drawable.imagem1, R.drawable.imagem2, R.drawable.imagem3, }; public ImageAdapter(Context c) { this.myContext = c;} public int getCount() { return this.myImageIds.length; } public Object getItem(int position) { return position; } public long getItemId(int position) {return position;} public View getView(int position, View convertView, ViewGroup parent) { ImageView i = new ImageView(this.myContext); i.setImageResource(this.myImageIds[position]); i.setScaleType(ImageView.ScaleType.FIT_XY); i.setLayoutParams(new Gallery.LayoutParams(150, 150)); return i;} public float getScale(boolean focused, int offset) { return Math.max(0, 1.0f / (float) Math.pow(2, Math.abs(offset)));} }

Exemplo 7

No TextView Altere
◦ Text: Galeria de Imagens ◦ Id: @+id/gallery ◦ Layout_width: fill_parent

Na classe principal: public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); ((Gallery) findViewById(R.id.gallery)) .setAdapter(new ImageAdapter(this)); }

Exemplo 7

Primeiro resultado

Exemplo 7

Vamos implementar um onclick na nossa galeria, para isso:
◦ Adicione no main.xml um TextView e um ImageView.

import android.app.Activity; import android.os.Bundle; import android.view.*; import android.widget.*; public class AppGallery extends Activity { Gallery g; ImageView imagem; private int[] myImageIds = { R.drawable.imagem1, R.drawable.imagem2, R.drawable.imagem3, }; public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); g = (Gallery) findViewById(R.id.gallery); g.setAdapter(new ImageAdapter(this)); imagem = (ImageView) findViewById(R.id.imagem); g.setOnItemClickListener(new AdapterView.OnItemClickListener() { public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) { imagem.setImageResource(myImageIds[arg2]); Toast.makeText(getBaseContext(), "Figura " + (arg2 + 1) + " selecionada", Toast.LENGTH_SHORT).show();}});}}

Exemplo7

Entendendo:

imagem.setImageResource(myIma geIds[arg2]); Toast.makeText(getBaseContext(), "Figura " + (arg2 + 1) + " selecionada", Toast.LENGTH_SHORT).show();

Exemplo 8 - ProgressBar
Crie um novo projeto  Altera o conteúdo do TextView para “Status do Download”  ProgressBar

◦ Id: @+id/progresso ◦ Layout_width: fill_parent ◦ Style: ?android:attr/progressBarStyleHorizontal ◦ Max: 100

Button

Exemplo 8

import android.app.Activity; import android.os.Bundle; import android.os.Handler; import android.view.View; import android.widget.*; public class AppProgressBar extends Activity implements Runnable { ProgressBar p;Button b; Thread t; Handler h; int i; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); p = (ProgressBar) findViewById(R.id.progresso); b = (Button) findViewById(R.id.btdownload); b.setOnClickListener(new View.OnClickListener() { public void onClick(View v) { h = new Handler(); t = new Thread(AppProgressBar.this); t.start(); } });} public void run() { i = 1;try { while (i <= 100) { Thread.sleep(100); h.post(new Runnable() { public void run() { p.setProgress(i++); } }); }} catch (Exception e) {}}}

Exemplo 8

Exemplo 9 - DatePicker

Crie um novo projeto

Exemplo 9
No onCreate super.onCreate(savedInstanceState); setContentView(R.layout.main); Button b = (Button) findViewById(R.id.btdata); dp = (DatePicker) findViewById(R.id.data); dp.updateDate(2009, 04, 23); b.setOnClickListener(new View.OnClickListener(){ public void onClick(View v) { AlertDialog.Builder dialogo = new AlertDialog.Builder(AppCalendario.this); dialogo.setMessage("Data selecionada : " + String.valueOf(dp.getDayOfMonth()) + "/" + String.valueOf(dp.getMonth() + 1) + "/" + String.valueOf(dp.getYear())); dialogo.setNeutralButton("OK", null); dialogo.setTitle("Data"); dialogo.show();}});}

Exemplo 10 - TimePicker

Crie um novo projeto

Exemplo 10
No onCreate: super.onCreate(savedInstanceState); setContentView(R.layout.main); Button btmostrar = (Button) findViewById(R.id.btmostrar); tp = (TimePicker) findViewById(R.id.hora); btmostrar.setOnClickListener(new View.OnClickListener(){ public void onClick(View v) { AlertDialog.Builder dialogo = new AlertDialog.Builder(AppTime.this); dialogo.setMessage("Hora selecionada : " + String.valueOf(tp.getCurrentHour() + 1) + ":" + String.valueOf(tp.getCurrentMinute())); dialogo.setNeutralButton("OK", null); dialogo.setTitle("Hora"); dialogo.show();}});}

Exemplo 10

Trabalhando com layouts
Crie um novo projeto  No main.xml

Dentro da pasta layout”, crie um novo arquivo chamado tela2.xml.

Trabalhando com layouts
Na tela2.xml:  Adicione um LinearLayout

◦ Orientation: vertical

Adicione um TextView e um Button

Trabalhando com layouts

Crie os métodos:

public void CarregaTelaPrincipal() { setContentView(R.layout.main); Button bttela2 = (Button) findViewById(R.id.bttela2); bttela2.setOnClickListener(new View.OnClickListener(){ public void onClick(View arg0) { CarregaTela2();}});}

public void CarregaTela2() { setContentView(R.layout.tela2); Button bttelaprincipal = (Button) findViewById(R.id.bttelaprincipal); bttelaprincipal.setOnClickListener(new View.OnClickListener(){ public void onClick(View arg0) { CarregaTelaPrincipal();}});}

Trabalhando com layouts
@Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); CarregaTelaPrincipal(); }

Exercício 3
Trabalhando com diferentes Layouts faça:  O layout principal: Esse layout dará acesso ao layout de cadastro e o layout de visualização de dados.  O layout de cadastro: Nesse layout é onde será efetuado o cadastro dos dados da pessoa.  O layout de visualização de dados: Nesse layout é onde serão visualizados os dados cadastrados. Se nenhum dado foi cadastrado, será exibida uma mensagem informando essa situação.

Exercício 3

Crie um classe pessoa com os atributos:
◦ ◦ ◦ ◦ ◦ String nome; String profissao; String idade; Pessoa Prox; Pessoa Ant;

Exercício 3

Entendendo os menus

Crie um novo projeto

import android.app.Activity; import android.os.Bundle; import android.view.*; public class AppMenu extends Activity { private static final int GRAVAR = Menu.FIRST; private static final int EDITAR = Menu.FIRST + 1; private static final int SAIR = Menu.FIRST + 2; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main);} @Override public boolean onCreateOptionsMenu(Menu menu) { menu.add(0, GRAVAR, 0, "Gravar"); menu.add(0, EDITAR, 0, "Editar"); menu.add(0, SAIR, 0, "Sair"); return super.onCreateOptionsMenu(menu);} @Override public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) { case GRAVAR: // Executa algo return true; case EDITAR: // Executa algo return true; default: return super.onOptionsItemSelected(item); }}}

AlertDialog
Propriedade setIcon(int IconId) setMessage(CharSequence mensagem) setTitle(CharSequence titulo) setNeutralButton(CharSequence <rotulo do botão>, OnClickListener evento) Descrição Neste método, você define um ícone para a sua caixa de diálogo. Neste método, você define a mensagem que será exibida na caixa de diálogo. Neste método, você define o título que será exibido na caixa de diálogo. Neste método você define um botão neutro(normalmente rotulado com o título “OK”) e um evento, caso ele seja clicado.

setPositiveButton(CharSequence <rotulo Neste método você define um botão do botão>, DialogInterface.OnClickListener positivo (normalmente rotulado com o evento) título “Sim” ou “Yes”) e um evento, caso ele seja clicado. setNegativeButton(CharSequence <rotulo Neste método você define um botão do botão>, DialogInterface.OnClickListener negativo(normalmente rotulado com o evento) título “Não” ou “No”) e um evento, caso ele seja clicado.

Alguns Exemplo - AlertDialog
AlertDialog.Builder dialog = new AlertDialog.Builder(this); dialog.setMessage("Cadastro efetuado com sucesso."); dialog.setNeutralButton("OK", null); dialog.setTitle("Aviso"); dialog.show();

Alguns Exemplo - AlertDialog
AlertDialog.Builder dialog = new AlertDialog.Builder(this); dialog.setMessage("Deseja cadastrar esse registro ?"); dialog.setPositiveButton("Sim", new DialogInterface.OnClickListener(){ public void onClick(DialogInterface di, int arg) { //Executa algo se o botão "Sim" por pressionado }}); dialog.setNegativeButton("Não", new DialogInterface.OnClickListener(){ public void onClick(DialogInterface di, int arg) { //Executa algo se o botão "Não" por pressionado}}); dialog.setTitle("Aviso"); dialog.show();

Alguns Exemplo - AlertDialog

Alguns Exemplo - AlertDialog
AlertDialog.Builder dialog = new AlertDialog.Builder(this); dialog.setMessage("Exemplo com ícone."); dialog.setNeutralButton("OK", null); dialog.setTitle("Ícone"); dialog.setIcon(R.drawable.icon); dialog.show();

SQLITE

SqlLite
A classe Activity contém métodos para manipular o banco SQLite, o método createDatabase permite criar um banco de dados.  Outro método importante, quando está se manipulando dados é o método openDatabase, este permite abrir um banco de dados.  A classe SQLiteDatabase, contém métodos que permitem manusear instruções de banco de dados. O método execSQL permite passar como parâmetro uma string SQL, pode inserir informações, criar tabela, alterar dados, e deletar.  O método query da Classe SQLiteDatabase, possibilita realizar uma consulta no banco de dados, a filtragem é determinada nos parâmetro que são passados.

SqlLite

A classe Cursor contém métodos que possibilitam a manipulação dos dados retornados pelo método query da classe SQLiteDatabase. Métodos da classe Cursor next – é um boolean, retorna true se existir um novo registro. getColumnIndex – método retorna um inteiro que indica qual é o index da coluna passada como parâmetro. getString – retorna uma o campo pesquisado em formato de String, pede como parâmetro o index da coluna. getInt – retorna como Inteiro, o campo pesquisado, solicita como parâmetro o index da coluna. getDouble – retorna um valor double, que tenha sido retornado na consulta, solicita como parâmetro o index da coluna. getFloat – retorna um valor float, que tenha sido retornado na consulta, solicita como parâmetro o index da coluna. getLong – retorna um valor long, que tenha sido retornado na consulta, solicita como parâmetro o index da coluna.

SqlLite – Criação de banco
public void abreouCriaBanco() { try { String nomeBanco = "bancoEstoque"; //cria ou abre o banco de dados bancoDados = openOrCreateDatabase(nomeBanco, MODE_WORLD_READABLE, null); String sql = "CREATE TABLE IF NOT EXISTS pessoas " +"(id INTEGER PRIMARY KEY, nome TEXT, endereco TEXT," +"telefone TEXT);"; bancoDados.execSQL(sql); //mensagemExibir("Banco", "Banco criado com sucesso "); } catch(Exception erro) { mensagemExibir("Erro Banco", "Erro ao abrir ou criar o banco: "+erro.getMessage()); } }

SqlLite – Inserindo dados
public void insereRegistro() { try { String sql="INSERT INTO pessoas (nome, endereco, telefone) values ('" +etNome.getText().toString()+"','" +etEndereco.getText().toString()+"','" +etTelefone.getText().toString()+"')"; bancoDados.execSQL(sql); } catch(Exception erro) { mensagemExibir("Erro Banco", "Erro ao gravar dados no banco: "+erro.getMessage()); } }

SqLite – Buscando dados
private boolean buscarDados() { try { cursor = bancoDados.query("pessoas", new String [] {"nome","endereco","telefone"}, null,//selection, null,//selectionArgs, null,//groupBy, null,//having, null,//"order by nome"//orderBy) null); // Limite de registros retornados campoNome = cursor.getColumnIndex("nome"); campoEndereco = cursor.getColumnIndex("endereco"); campoTelefone = cursor.getColumnIndex("telefone"); int numeroRegistros = cursor.getCount(); if (numeroRegistros != 0) { // no java puro resultsewt.first(); cursor.moveToFirst(); //posiciona no primeiro registro return true; } else return false; } catch(Exception erro) { mensagemExibir("Erro Banco", "Erro buscar dados no banco: "+erro.getMessage()); return false; }}

SqLite – Buscando dados
public Aluno getAlunoById(int posicao) { Cursor c = getWritableDatabase().query(TABELA, COLS, "id=?", new String[]{"" + posicao}, null, null, null); c.moveToFirst();

Aluno a = new Aluno(); a.setId(c.getInt(0)); a.setNome(c.getString(3)); a.setTelefone(c.getString(6));
c.close(); return a; }

SqLite – Buscando dados
public List<Aluno> getLista(){ Cursor c = getWritableDatabase().query(TABELA, COLS, null, null, null, null, null); List<Aluno> lista = new ArrayList<Aluno>(); while(c.moveToNext()){ Aluno a = new Aluno(); a.setId(c.getInt(0)); a.setNome(c.getString(3)); a.setTelefone(c.getString(6)); lista .add(a); } c.close();

return lista;
}

Sign up to vote on this title
UsefulNot useful