Escolar Documentos
Profissional Documentos
Cultura Documentos
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 mvel completa, aberta e livre.
Android
www.portalandroid.org
http://developer.android.com/index.html
Sumrio
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 reutilizao e substituio de componentes; Dalvik virtual machine: otimizada para dispositivos mveis; Browser Integrado: baseado no webkit engine; Grficos Otimizados: possui uma biblioteca 2D; e 3D baseada na especificao OpenGL ES 1.0 (acelerao de hardware opcional); SQLite: para guardar dados estruturados; Suporte multimdia: para udio, vdeo e formatos de imagem (MPEG4,H.264, MP3, AAC, AMR, JPG, PNG, GIF); Bluetooth, EDGE, 3G, e WiFi (dependente de hardware); Cmera, GPS, compasso, e acelermetro (dependente de hardware); Rico ambiente de desenvolvimento, incluindo um emulador de dispositivo, ferramentas de depurao, memria, performance e um plugin para o Eclipse (ADT).
Arquitetura da Plataforma
Bibliotecas
System C library uma implementao derivada da biblioteca C padro sistema (libc) do BSD sintonizada para dispositivos rodando Linux; Media Libraries baseado no PacketVideos OpenCORE; as bibliotecas suportam os mais populares formatos de udio e vdeo, bem como imagens estticas; Surface Manager gera acesso ao subsistema de exibio bem como as mltiplas camadas de aplicaes 2D e 3D; LibWebCore browser engine utilizado tanto no Android Browser quanto para exibies web; SGL o engine de grficos 2D - 3D libraries uma implementao baseada no OpenGL ES 1.0 APIs; as bibliotecas utilizam acelerao 3D via hardware (quando disponvel) ou o software de renderizao 3D altamente otimizado includo no Android; FreeType renderizao de fontes bitmap e vector; SQLite um poderoso e leve engine de banco de dados relacional disponvel para todas as aplicaes;
Kernel linux
Utiliza a verso 2,6 do kernel do Linux para os servios centrais do sistema, tais como segurana, gesto de memria, gesto de processos, etc. O kernel tambm atua como uma camada de abstrao entre o hardware e o resto do software.
Android Runtime
O Android inclui um grupo de bibliotecas que fornece a maioria das funcionalidades disponveis nas principais bibliotecas da linguagem Java. Toda aplicao Android roda em seu prprio processo, com sua prpria instncia da mquina virtual Dalvik. O Dalvik foi escrito para executar vrias VMs. Essa mquina virtual executa arquivos .dex, que otimizado para consumo mnimo de memria. A VM baseada em registros e roda classes compiladas pela linguagem Java, que foram transformadas em arquivos .dex, atravs da ferramenta dx includa no SDK. O Dalvik VM baseia-se no kernel do Linux para funcionalidades subjacentes como o encadeamento e a gesto de baixo nvel de memria.
Desenvolvimento simples, com servios Google que rodam nativamente sem problemas. Plataforma que j se tornou a 2 maior do mercado de Smartphones.
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
https://dl-ssl.google.com/android/eclipse/
Android SDK
Descompacte o sdk no C:/ Clique em sdk manager
Android SDK
Ser feito a atualizao do repositrio
Android SDK
Pacotes instalados
Ser realizada a atualizao do repositrio
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...
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 instalao;
Eclipse IDE
Instalando o plugin ADT Selecione os plugins para instalao e next.
Eclipse IDE
Instalando o plugin ADT Aceite os termos da licena, clique em Next e Finish. Assim que terminar a instalao do plugin, o Eclipse vai pedir sua reinicializao.
Eclipse IDE
Instalando o plugin ADT
No eclipse: windows -> Preferences -> Android. Escolha o local de instalao do sdk do Android.
Eclipse IDE
Instalando o plugin ADT AVD(s) criadas sero listadas. Clique Apply e OK.
Primeira Aplicao
Para criar a nossa primeira aplicao clique em File New Project - Android - Android Project e clique Next.
Primeira Aplicao
Primeira Aplicao
Estrutura do projeto.
Primeira Aplicao
Agora v em Run as Android Aplication
res/values Local onde esto os arquivos de texto no qual pode se modificar a depender da necessidade.
PRINCIPAIS COMPONENTES
Widgets
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
Ao 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
Ao do clique do button Outra forma
//No mtodo: onCreate Button btsomar = (Button) findViewById(R.id.btsomar); btsomar.setOnClickListener(btSomarAction); //Criar um novo mtodo private OnClickListener btSomarAction = new OnClickListener() { public void onClick(View v) { //lgica } };
Exerccio 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 mtodo: onCreate Button bttotal = (Button) findViewById(R.id.bttotal); bttotal.setOnClickListener(bttotalAction); //Criar um novo mtodo private OnClickListener bttotalAction= new OnClickListener() { public void onClick(View v) { //lgica } };
Exemplo 2
//lgica 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 ttulo dialogo.setTitle("Aviso"); //colocando a mensagem que vai ter dentro do Dialog dialogo.setMessage("Valor total da compra :" + String.valueOf(total)); //adicionando o boto de OK dialogo.setNeutralButton("OK", null); //mostrando o Dialog dialogo.show();
Exerccio 2
Cadastre de forma dinmica vrios produtos. Crie duas telas separadas.
Exemplo 3
Adicione um RadioGroup No outline, selecione o RadioGroup com o boto direito do mouse , escolha a opo Add. Escolha a opo RadioButton Dica:
Exemplo 4
Dicas:
private static final String[] percentual = {"De 40%","De 45%","De 50%"};
Exemplo 5 - ListView
Exemplo 5
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
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 boto 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 boto direito do mouse e escolha a opo Remove.
Exemplo 6
V na seo OutLine e clique com o boto direito sobre o LinearLayout e selecione a opo Add. Adicione um outro LinearLayout dentro do criado anteriormente.
Exemplo 6
No TextView
Id: @+id/txtinfo Text: Foto 1
Exemplo 6
imagem.setImageResource(R.drawable.f oto1);
Exemplo 7 - Gallery
Crie um novo projeto Adicione trs imagens na pasta res/drawable-mdpi. Crie uma classe chamada ImageAdapter. Segue cdigo no slide seguinte
import android.content.Context; import android.view.*; import android.widget.*; public class ImageAdapter extends BaseAdapter { private Context myContext; // Neste array so 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
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:
Exemplo 8 - ProgressBar
Crie um novo projeto Altera o contedo do TextView para Status do Download ProgressBar
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
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
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
Orientation: vertical
Crie os mtodos:
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();}});}
Exerccio 3
Trabalhando com diferentes Layouts faa: O layout principal: Esse layout dar acesso ao layout de cadastro e o layout de visualizao de dados. O layout de cadastro: Nesse layout onde ser efetuado o cadastro dos dados da pessoa. O layout de visualizao de dados: Nesse layout onde sero visualizados os dados cadastrados. Se nenhum dado foi cadastrado, ser exibida uma mensagem informando essa situao.
Exerccio 3
Exerccio 3
Entendendo os menus
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 boto>, OnClickListener evento) Descrio Neste mtodo, voc define um cone para a sua caixa de dilogo. Neste mtodo, voc define a mensagem que ser exibida na caixa de dilogo. Neste mtodo, voc define o ttulo que ser exibido na caixa de dilogo. Neste mtodo voc define um boto neutro(normalmente rotulado com o ttulo OK) e um evento, caso ele seja clicado.
setPositiveButton(CharSequence <rotulo Neste mtodo voc define um boto do boto>, DialogInterface.OnClickListener positivo (normalmente rotulado com o evento) ttulo Sim ou Yes) e um evento, caso ele seja clicado. setNegativeButton(CharSequence <rotulo Neste mtodo voc define um boto do boto>, DialogInterface.OnClickListener negativo(normalmente rotulado com o evento) ttulo No ou No) e um evento, caso ele seja clicado.
SQLITE
SqlLite
A classe Activity contm mtodos para manipular o banco SQLite, o mtodo createDatabase permite criar um banco de dados. Outro mtodo importante, quando est se manipulando dados o mtodo openDatabase, este permite abrir um banco de dados. A classe SQLiteDatabase, contm mtodos que permitem manusear instrues de banco de dados. O mtodo execSQL permite passar como parmetro uma string SQL, pode inserir informaes, criar tabela, alterar dados, e deletar. O mtodo query da Classe SQLiteDatabase, possibilita realizar uma consulta no banco de dados, a filtragem determinada nos parmetro que so passados.
SqlLite
A classe Cursor contm mtodos que possibilitam a manipulao dos dados retornados pelo mtodo query da classe SQLiteDatabase. Mtodos da classe Cursor next um boolean, retorna true se existir um novo registro. getColumnIndex mtodo retorna um inteiro que indica qual o index da coluna passada como parmetro. getString retorna uma o campo pesquisado em formato de String, pede como parmetro o index da coluna. getInt retorna como Inteiro, o campo pesquisado, solicita como parmetro o index da coluna. getDouble retorna um valor double, que tenha sido retornado na consulta, solicita como parmetro o index da coluna. getFloat retorna um valor float, que tenha sido retornado na consulta, solicita como parmetro o index da coluna. getLong retorna um valor long, que tenha sido retornado na consulta, solicita como parmetro o index da coluna.
return lista;
}