mini curso android

128
Android 100% Hands-on

Upload: mario-pereira

Post on 06-May-2015

343 views

Category:

Education


3 download

DESCRIPTION

Introdução ao desenvolvimento de aplicações móveis utilizando a plataforma Android.

TRANSCRIPT

Page 1: Mini curso Android

Android 100% Hands-on

Page 2: Mini curso Android
Page 3: Mini curso Android

GOOGLE ANdroidMario Jorge Pereira

Page 4: Mini curso Android

2001

2002

2003

2004

2005

2006

2007

2008

2009

2010

2011

2012

2013

2014

2015

Page 5: Mini curso Android

Por onde começar?

http://developer.android.com

Page 6: Mini curso Android

ADT Bundle*:

• Eclipse + ADT plugin

• Android SDK Tools

• Android Platform-tools

*Pré requisito: JDK instalada

Page 7: Mini curso Android
Page 8: Mini curso Android

Desenvolvimento

Page 9: Mini curso Android
Page 10: Mini curso Android

Chega de Bla Bla Bla!

Vamos Começar?

Page 11: Mini curso Android

Eclipse + ADT

Page 12: Mini curso Android

Olá MundoFi

le >

New

> A

ndro

id A

pplic

atio

n Pr

ojec

t

Page 13: Mini curso Android

File

> N

ew >

And

roid

App

licat

ion

Proj

ect

Olá Mundo

Page 14: Mini curso Android

File

> N

ew >

And

roid

App

licat

ion

Proj

ect

Olá Mundo

Page 15: Mini curso Android

File

> N

ew >

And

roid

App

licat

ion

Proj

ect

Olá Mundo

Page 16: Mini curso Android

Olá Mundo

Page 17: Mini curso Android

Para rodar precisamos do emulador

Vamos criar?

Page 18: Mini curso Android

AVD Android Virtual Device Maneger

Android SDK Maneger

Page 19: Mini curso Android

AVD Android Virtual Device Maneger

Page 20: Mini curso Android
Page 21: Mini curso Android

Inicie o emulador que voce criou?

Isso demora :( …

Depois que abrir não feche o Emulador!!

Page 22: Mini curso Android
Page 23: Mini curso Android

Run As.. Android application

Page 24: Mini curso Android
Page 25: Mini curso Android

Importante!

Activity

XML

public class OlaMundo extends Activity {! @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_ola_mundo); } }

Page 26: Mini curso Android

src/ (código fonte: .java)"

gen/ (código gerado: R.java )"

bin/ (bytecodes: .dex)"

libs/ (bibliotecas)"

res/ (recursos: layouts, strigs, icones …)"

assets/ (outros recursos: arquivos em geral)Es

trutu

ra

Page 27: Mini curso Android

<?xml version="1.0" encoding="

utf-8"?>

<resources>! <string nam

e="app_name">Alo Mundo</string

>

<string name="action_setti

ngs">Settings</string>

<string name="hello_world"

>Hello world!</string>

!</resources>

strings.xml

Page 28: Mini curso Android

/* AUTO-GENERATED FILE. DO NO

T MODIFY.*/

public final class R {

public static final class

attr {

} public stat

ic final class dimen {

public static final int

activity_horizontal_margin=0x

7f040000;

public static final in

t activity_vertical_margin=0x7

f040001;

} public stati

c final class layout {

public static final in

t activity_main=0x7f030000;

} ...}

R.java

Page 29: Mini curso Android

<?xml version="1.0" encoding=“

utf-8"?>

<manifest ...>

... <applicatio

n ... >

<activity

android:name="br.c

om.mariojp.olamundo.OlaMundoAc

tivity"

android:label="@st

ring/app_name" >

<intent-filter>

<action androi

d:name="android.intent.action.

MAIN" />

<category andr

oid:name="android.intent.categ

ory.LAUNCHER" />

</intent-filter>

</activity>

</application>

</manifest>

AndroidManifest.xml

Page 30: Mini curso Android

Log.[nivel](“TAG”,“MENSAGEM”);

!

Log.v (Verbose)Log.d (Debug)Log.i (Info)Log.w (Warning)Log.e (Erro)Log.wtf (...)

Log

Page 31: Mini curso Android

public class OlaMundoActivity extends Activity {! @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Log.i("Ola mundo", "onCreate");! }!}

OlaMundoActivity.java

Page 32: Mini curso Android
Page 33: Mini curso Android

use o logging: Log.i(“Ciclo de Vida”,”<método>”) nos métodos onCreate, onStart, onResume, onRestart, onPause, onStop e onDestroy.

Entendendo o ciclo de vida

Page 34: Mini curso Android

Run As.. Android application

Page 35: Mini curso Android

Quais os métodos são chamados quando a aplicação inicia?

O que Aconteceu

Quando clicar em voltar qual método é executado?

Alterando o aplicativo de Retrato para paisagem (control +F11) o que acontece?

Page 36: Mini curso Android
Page 37: Mini curso Android

Ainda no OlaMundo

Page 38: Mini curso Android

O arquivo OlaMundoActivity.java

public class OlaMundo extends Activity {! @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_ola_mundo); }!}

Page 39: Mini curso Android

Na pasta res/layout

1. Renomear o arquivo fragment_ola_mundo.xml para activity_ola_mundo.xml

!

2. Alterar a propriedade: tools:context=“br.com.mariojp.OlaMundoActivity”

Page 40: Mini curso Android

Um pouco de Layout

activity_ola_mundo.xml

Page 41: Mini curso Android

<RelativeLayout ... >

... <Button android

:id="@+id/botao"

android:layout_width="

wrap_content"

android:layout_height=

"wrap_content"

android:text="Botao" /

>

...</RelativeLayou

t>

activity_ola_mundo.xml

Page 42: Mini curso Android

Run As.. Android application

Page 43: Mini curso Android

<LinearLayout xmlns:android="h

ttp://schemas.android.com/apk/

res/android"

xmlns:tools="http://schema

s.android.com/tools"

android:layout_width="matc

h_parent"

android:layout_height="mat

ch_parent"

android:orientation="horiz

ontal"

tools:context="br.com.mariojp.

olamundo.OlaMundoActivity" >

!. . .

!</LinearLayout>

activity_ola_mundo.xml

Page 44: Mini curso Android

Run As.. Android application

Page 45: Mini curso Android

<LinearLayout xmlns:android="h

ttp://schemas.android.com/apk/

res/android"

xmlns:tools="http://schema

s.android.com/tools"

android:layout_width="matc

h_parent"

android:layout_height="mat

ch_parent"

android:orientation="verti

cal"

tools:context="br.com.mariojp.

olamundo.OlaMundoActivity" >

!. . .

!</LinearLayout>

activity_ola_mundo.xml

Page 46: Mini curso Android

Run As.. Android application

Page 47: Mini curso Android

<RelativeLayout ... >

... <Button android

:id="@+id/botao"

android:layout_width="

match_parent"

android:layout_height=

"wrap_content"

android:text="Botao" /

>

...</RelativeLayou

t>

activity_ola_mundo.xml

Page 48: Mini curso Android

Run As.. Android application

Page 49: Mini curso Android

Um pouco de Comportamento

OlaMundoActivity.java

Page 50: Mini curso Android

[Tipo] var = ([Tipo]) findViewById(R.id.[id]);

!var.metodo();!

findbyid

Page 51: Mini curso Android

<RelativeLayout ... >

... <TextView

android:id="@+id/texto

"

android:layout_width="

wrap_content"

android:layout_height=

"wrap_content"

android:text="@string/

hello_world" />

...</RelativeLayou

t>

activity_ola_mundo.xml

Page 52: Mini curso Android

public class OlaMundoActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_ola_mundo); TextView texto = (TextView) findViewById(R.id.texto); texto.setText("Outro Texto"); }!}

OlaMundoActivity.java

Page 53: Mini curso Android

Run As.. Android application

Page 54: Mini curso Android

Botão Aplicação

Listener

Clicou?

Ação do Botão

Page 55: Mini curso Android

public class OlaMundoActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_ola_mundo);! Button button = (Button) findViewById(R.id.botao); button.setOnClickListener(new Ouvinte()); }}

OlaMundoActivity.java

Page 56: Mini curso Android

public class Ouvinte implements OnClickListener {! @Override public void onClick(View clicado) { Log.i("TAG", "Botao Clicado"); }!}

Ouvinte.java

Page 57: Mini curso Android

Run As.. Android application

Page 58: Mini curso Android

public class OlaMundoActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_ola_mundo); Button button = (Button) findViewById(R.id.botao); button.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { Log.i("TAG", "Botao Clicado"); } }); }}

OlaMundoActivity.java

Page 59: Mini curso Android

Run As.. Android application

Page 60: Mini curso Android

<RelativeLayout ... >

... <Button

android:id="@+id/botao

"

android:layout_width="

wrap_content"

android:layout_height=

"wrap_content"

android:text="Botao"

android:onClick="metod

o" />

...</RelativeLayou

t>

activity_ola_mundo.xml

Page 61: Mini curso Android

public class OlaMundoActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_ola_mundo); } public void metodo(View v) { Log.i("TAG", "Botao Clicado"); }

OlaMundoActivity.java

Page 62: Mini curso Android

Run As.. Android application

Page 63: Mini curso Android

Toast.makeText(this, "TEXTO", Toast.LENGTH_LONG).s

how();

!!Toast.LENGTH_LONG!Toast.LENGTH_SHORT!

TOAST

Page 64: Mini curso Android

public class OlaMundoActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_ola_mundo); } public void metodo(View v) { Toast.makeText(this, "AloMundo!", Toast.LENGTH_LONG).show();

}!}

OlaMundoActivity.java

Page 65: Mini curso Android

Run As.. Android application

Page 66: Mini curso Android

Faculdade

File > New > Android Application Project

Page 67: Mini curso Android

Crie o projeto Android

File > New > Android Application Project

Page 68: Mini curso Android

public class ListaDisciplinas extends Activity {! @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.lista_diciplinas); }}

ListaDisciplinas.java

Page 69: Mini curso Android

<?xml version="1.0" encoding="

utf-8"?>

<LinearLayout

xmlns:android="http://schema

s.android.com/apk/res/android"

android:layout_width="match_

parent"

android:layout_height="match

_parent" >

! <ListView

android:id="@+id/lista

_disciplinas"

android:layout_width="

match_parent"

android:layout_height=

"match_parent" >

</ListView>

!</LinearLayout>

lista_disciplinas.xml

Page 70: Mini curso Android

public class ListaDisciplinas extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.lista_diciplinas);! String[] disciplinas = {"Redes", "Algoritimos", "Programacao"};

int layout = android.R.layout.simple_list_item_1;! ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,layout, disciplinas);! ListView lista = (ListView) findViewById(R.id.lista_disciplinas);

! lista.setAdapter(adapter);! }}

ListaDisciplinas.java

Page 71: Mini curso Android

Run As.. Android application

Page 72: Mini curso Android

public class ListaDisciplinas extends Activity {! @Override protected void onCreate(Bundle savedInstanceState) { ...! lista.setOnItemClickListener(new OnItemClickListener() { public void onItemClick(AdapterView<?> adapter, View view,

int posicao, long id) { Toast.makeText(ListaDisciplinas.this, "Clicou "+posicao,

Toast.LENGTH_SHORT).show(); } }); }}

ListaDisciplinas.java

Page 73: Mini curso Android

Run As.. Android application

Page 74: Mini curso Android

public class ListaDisciplinas extends Activity {! @Override protected void onCreate(Bundle savedInstanceState) { ... lista.setOnItemLongClickListener(new OnItemLongClickListener() {

public boolean onItemLongClick(AdapterView<?> adapter, View view, int posicao, long id) { Toast.makeText( ListaDisciplinas.this, adapter.getItemAtPosition(posicao).toString(),

Toast.LENGTH_SHORT).show(); return false; } }); }}

ListaDisciplinas.java

Page 75: Mini curso Android

Run As.. Android application

Page 76: Mini curso Android

O que aconteceu ate aqui?

Repare que o onItemLongClick retorna false => troque por

true.

Page 77: Mini curso Android

Run As.. Android application

Page 78: Mini curso Android

Vamos criar um formulário

Page 79: Mini curso Android

File

> N

ew >

And

roid

XM

L Fi

le

res/layout/disciplina.xml

Page 80: Mini curso Android

<?xml version="1.0" encoding="

utf-8"?>

<LinearLayout xmlns:android="h

ttp://schemas.android.com/apk/

res/android"

android:layout_width="matc

h_parent"

android:layout_height="mat

ch_parent"

android:orientation="verti

cal" >

<ImageView

android:layout_width="

wrap_content"

android:layout_height=

"wrap_content"

android:src="@drawable

/ic_launcher" />

<TextView

android:layout_width="

wrap_content"

android:layout_height=

"wrap_content"

android:text="Discipli

na" />

<EditText android:id="@+id

/disciplina"

android:layout_width="

match_parent"

android:layout_height=

"wrap_content"

android:ems="10" >

<requestFocus />

</EditText>

. . .</LinearLayout>

disciplinas.xml

Page 81: Mini curso Android

<?xml version="1.0" encoding="

utf-8"?>

<LinearLayout xmlns:android=“h

ttp://schemas.android.com/apk/

res/android"

android:layout_width="matc

h_parent"

android:layout_height="mat

ch_parent"

android:orientation="verti

cal" >

!. . .! <EditText

android:id="@+id/nota2

"

android:layout_width="

match_parent"

android:layout_height=

"wrap_content"

android:ems="10"

android:inputType="num

berSigned" />

<Button android

:id="@+id/botao"

android:layout_width="

wrap_content"

android:layout_height=

"wrap_content"

android:text="Salvar"

/>

!</LinearLayout>

disciplinas.xml

Page 82: Mini curso Android

Pode usar o Editor

Page 83: Mini curso Android

android.app.Activity

File

> N

ew >

Cla

ss

Page 84: Mini curso Android

public class DisciplinaActivity extends Activity { protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.disciplina); }!}

DisciplinaActivity.java

Page 85: Mini curso Android

public class ListaDisciplinas extends Activity { . . . public boolean onCreateOptionsMenu(Menu menu) { MenuInflater inflater = getMenuInflater(); inflater.inflate(R.menu.lista_disciplinas, menu); return super.onCreateOptionsMenu(menu); }}

ListaDisciplinas.java

Page 86: Mini curso Android

<menu xmlns:android="http://sc

hemas.android.com/apk/res/andr

oid"

xmlns:tools="http://schema

s.android.com/tools"

tools:context="br.com.mari

ojp.faculdade.ListaDisciplinas

" >

! <item android

:id="@+id/novo"

android:showAsAction="

always"

android:icon="@android

:drawable/btn_plus"

android:title="Novo"/>

!</menu>

lista_disciplinas.xml

Page 87: Mini curso Android

public class ListaDisciplinas extends Activity { . . . public boolean onOptionsItemSelected(MenuItem item) { int itemClicado = item.getItemId(); switch (itemClicado) { case R.id.novo: Intent intent = new Intent(this, Disciplina.class); startActivity(intent); break; default: break; } return super.onOptionsItemSelected(item); }}

ListaDisciplinas.java

Page 88: Mini curso Android

Run As.. Android application

Page 89: Mini curso Android
Page 90: Mini curso Android

<?xml version="1.0" encoding=“

utf-8"?>

<manifest ...>

. . . <applicatio

n ... >

<activity android:name

="br.com.mariojp.faculdade.Dis

ciplina">

</activity>

. . . </applicati

on>

</manifest>

AndroidManifest.xml

Page 91: Mini curso Android

Run As.. Android application

Page 92: Mini curso Android
Page 93: Mini curso Android
Page 94: Mini curso Android

public class DisciplinaActivity extends Activity { protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.disciplina); Button button = (Button) findViewById(R.id.botao); button.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { finish(); } }); }

DisciplinaActivity.java

Page 95: Mini curso Android

Run As.. Android application

Page 96: Mini curso Android

Banco de dados

Page 97: Mini curso Android

Vamos pensar um pouco…

DisciplinaDAO

SQLiteOpenHelper

ListaDisciplinas

Page 98: Mini curso Android

public class Disciplina { private Long id; private String disciplina; private String professor; private String email; private Double nota1; private Double nota2;// Gerar Get’s e Set's}

Disciplina.java

Page 99: Mini curso Android

public class DisciplinaDAO extends SQLiteOpenHelper {! private static final String DATABASE = "BancoDisciplinas"; private static final int VERSAO = 1;! public DisciplinaDAO(Context context) { super(context, DATABASE, null, VERSAO); }!//...!}

DisciplinaDAO.java

Page 100: Mini curso Android

public class DisciplinaDAO extends SQLiteOpenHelper {! private static final String DATABASE = "BancoDisciplinas"; private static final int VERSAO = 1;! public DisciplinaDAO(Context context) { super(context, DATABASE, null, VERSAO); }! public void onCreate(SQLiteDatabase db) { String ddl ="CREATE TABLE Disciplinas (id INTEGER PRIMARY KEY,"

+ " disciplina TEXT UNIQUE NOT NULL," + " professor TEXT," + " email TEXT," + " nota1 REAL, nota2 REAL);"; db.execSQL(ddl); }!//...!}

DisciplinaDAO.java

Page 101: Mini curso Android

public class DisciplinaDAO extends SQLiteOpenHelper {! private static final String DATABASE = "BancoDisciplinas"; private static final int VERSAO = 1;! public DisciplinaDAO(Context context) { super(context, DATABASE, null, VERSAO); }//...! @Override public void onUpgrade(SQLiteDatabase db, int velha, int nova) {

String ddl ="DROP TABLE IF EXISTS Disciplinas"; db.execSQL(ddl); onCreate(db); }!//...}

DisciplinaDAO.java

Page 102: Mini curso Android

public class DisciplinaDAO extends SQLiteOpenHelper {!//...! public void salvar(Disciplina disciplina) { ContentValues values = new ContentValues(); values.put("disciplina", disciplina.getDisciplina()); values.put("professor", disciplina.getProfessor()); values.put("email", disciplina.getEmail()); values.put("nota1", disciplina.getNota1()); values.put("nota2", disciplina.getNota2()); getWritableDatabase().insert("Disciplinas", null, values );

}!//...}

DisciplinaDAO.java

Page 103: Mini curso Android

public class DisciplinaActivity extends Activity { private EditText nomeDisciplina; // ...nomeProfessor, email, nota1, nota2;

! protected void onCreate(Bundle savedInstanceState) { nomeDisciplina = (EditText) findViewById(R.id.disciplina);

//... outros findViewById! Button button = (Button) findViewById(R.id.botao); button.setOnClickListener(new OnClickListener() { public void onClick(View v) { Disciplina disciplina = new Disciplina(); disciplina.setDisciplina(nomeDisciplina.getText().toString());

// outros set's DisciplinaDAO dao = new DisciplinaDAO(DisciplinaActivity.this);

dao.salvar(disciplina); dao.close(); finish(); } }); }}

DisciplinaActivity.java

Page 104: Mini curso Android

public class ListaDisciplinas extends Activity {!private ListView lista;!protected void onCreate(Bundle savedInstanceState) {//... lista = (ListView) findViewById(R.id.lista_disciplinas);! DisciplinaDAO dao = new DisciplinaDAO(this); ArrayList<Disciplina> disciplinas= dao.getLista(); dao.close();! ArrayAdapter<Disciplina> adapter = new ArrayAdapter<Disciplina>(

this, android.R.layout.simple_list_item_1, disciplinas);

lista.setAdapter(adapter);//... }//...}

ListaDisciplinas.java

Page 105: Mini curso Android

Run As.. Android application

Page 106: Mini curso Android
Page 107: Mini curso Android

public class ListaDisciplinas extends Activity {//...protected void onResume() { super.onResume(); DisciplinaDAO dao = new DisciplinaDAO(this); ArrayList<Disciplina> disciplinas= dao.getLista(); dao.close();! ArrayAdapter<Disciplina> adapter = new ArrayAdapter<Disciplina>(

this, layout,android.R.layout.simple_list_item_1); lista.setAdapter(adapter);}//...}

ListaDisciplinas.java

Page 108: Mini curso Android

Run As.. Android application

Page 109: Mini curso Android

public class ListaDisciplinas extends Activity {//... @Override protected void onResume() { super.onResume(); carregarLista(); }! private void carregarLista() { DisciplinaDAO dao = new DisciplinaDAO(this); ArrayList<Disciplina> disciplinas= dao.getLista(); dao.close(); int layout = android.R.layout.simple_list_item_1; ArrayAdapter<Disciplina> adapter = new ArrayAdapter<Disciplina>(this, layout, disciplinas); lista.setAdapter(adapter); }//...}

ListaDisciplinas.java

Page 110: Mini curso Android
Page 111: Mini curso Android

public class DisciplinaDAO extends SQLiteOpenHelper {//...! public void deletar(Disciplina disciplina) { String[] args = { disciplina.getId().toString() }; getWritableDatabase().delete("Disciplinas", "id=?", args); }!//...}

DisciplinaDAO.java

Page 112: Mini curso Android

public class ListaDisciplinas extends Activity {!private ListView lista;!protected void onCreate(Bundle savedInstanceState) {//... lista = (ListView) findViewById(R.id.lista_disciplinas); registerForContextMenu(lista);//... }//...}

ListaDisciplinas.java

Page 113: Mini curso Android

public class ListaDisciplinas extends Activity {//... @Override public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo) { super.onCreateContextMenu(menu, v, menuInfo); menu.add("Enviar E-mail"); MenuItem deletar = menu.add("Deletar"); deletar.setOnMenuItemClickListener(new OnMenuItemClickListener() {

@Override public boolean onMenuItemClick(MenuItem item) { DisciplinaDAO dao = new DisciplinaDAO(ListaDisciplinas.this);

dao.deletar(disciplina); dao.close(); carregarLista(); return false; } }); }//...}

ListaDisciplinas.java

Page 114: Mini curso Android

public class ListaDisciplinas extends Activity {! private ListView lista; private Disciplina disciplina; protected void onCreate(Bundle savedInstanceState) // ... lista.setOnItemLongClickListener(new OnItemLongClickListener() {

public boolean onItemLongClick(AdapterView<?> adapter, View view,int posicao, long id) { disciplina = (Disciplina) adapter.getItemAtPosition(posicao);

return false; } });// ... } // ...}

ListaDisciplinas.java

Page 115: Mini curso Android

Run As.. Android application

Page 116: Mini curso Android

lista.setOnItemClickListener(new OnItemClickListener() {! public void onItemClick(AdapterView<?> adapter, View view, int posicao, long id) {! Disciplina disciplina = (Disciplina) adapter.getItemAtPosition(posicao);

! Intent intent = new Intent(ListaDisciplinas.this,DisciplinaActivity.class);

! intent.putExtra("disciplinaSelecionada", disciplina);! startActivity(intent);! }});

ListaDisciplinas.java

Page 117: Mini curso Android

public class DisciplinaActivity extends Activity { private EditText nomeDisciplina; // ...nomeProfessor, email, nota1, nota2;

protected void onCreate(Bundle savedInstanceState) { Button button = (Button) findViewById(R.id.botao); Intent intent = getIntent(); disciplinaSelecionada = (Disciplina) intent.getSerializableExtra("disciplinaSelecionada"); if(disciplinaSelecionada!=null){ button.setText("Alterar"); nomeDisciplina.setText(disciplinaSelecionada.getDisciplina());

} button.setOnClickListener(new OnClickListener() { public void onClick(View v) { Disciplina disciplina = new Disciplina(); disciplina.setDisciplina(nomeDisciplina.getText().toString());

/. . . DisciplinaDAO dao = new DisciplinaDAO(DisciplinaActivity.this);

if(disciplinaSelecionada == null){ dao.salvar(disciplina); }else{ disciplina.setId(disciplinaSelecionada.getId());

dao.alterar(disciplina); } dao.close(); finish(); } }); }

}

DisciplinaActivity.java

Page 118: Mini curso Android

public class DisciplinaDAO extends SQLiteOpenHelper {//... public void alterar(Disciplina disciplina) { ContentValues values = new ContentValues(); values.put("disciplina", disciplina.getDisciplina()); values.put("professor", disciplina.getProfessor()); values.put("email", disciplina.getEmail()); values.put("nota1", disciplina.getNota1()); values.put("nota2", disciplina.getNota2()); getWritableDatabase().update("Disciplinas", values, "id=?", new String[]{disciplina.getId().toString()}); }//...}

DisciplinaDAO.java

Page 119: Mini curso Android

Run As.. Android application

Page 120: Mini curso Android

public class ListaDisciplinas extends Activity { public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo) { super.onCreateContextMenu(menu, v, menuInfo); //. . . MenuItem email = menu.add("Enviar E-mail"); Intent intentEmail = new Intent(Intent.ACTION_SEND); intentEmail.setType("message/rfc822"); intentEmail.putExtra(Intent.EXTRA_EMAIL, new String[] { "[email protected]" }); intentEmail.putExtra(Intent.EXTRA_SUBJECT, "ANDROID"); intentEmail.putExtra(Intent.EXTRA_TEXT, "LEGAL!!!"); email.setIntent(intentEmail);//. . . }}

ListaDisciplinas.java

Page 121: Mini curso Android

Run As.. Android application

Page 122: Mini curso Android

public class DisciplinaActivity extends Activity { protected void onCreate(Bundle savedInstanceState) { foto = (ImageView) findViewById(R.id.foto); foto.setOnClickListener(new OnClickListener() { ! @Override public void onClick(View v) { Intent camera = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);

caminho = Environment.getExternalStorageDirectory().toString()

+"/"+System.currentTimeMillis()+".png"; File arquivo = new File(caminho); Uri localImage = Uri.fromFile(arquivo); camera.putExtra(MediaStore.EXTRA_OUTPUT, localImage);

startActivityForResult(camera, 999); } });}}

DisciplinaActivity.java

Page 123: Mini curso Android

public class DisciplinaActivity extends Activity { @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { if(requestCode == 999){ if(resultCode == Activity.RESULT_OK){ Bitmap bitmap = BitmapFactory.decodeFile(caminho); Bitmap bitmapReduzido = Bitmap.createScaledBitmap(bitmap, 100, 100, true); foto.setImageBitmap(bitmapReduzido); }else{ caminho =null; } } }}

DisciplinaActivity.java

Page 124: Mini curso Android

<?xml version="1.0" encoding=“

utf-8"?>

<manifest ...>

… <uses-permi

ssion android:name="android.pe

rmission.WRITE_EXTERNAL_STORAG

E" />

<uses-permission android:n

ame="android.permission.READ_E

XTERNAL_STORAGE" />

</manifest>

AndroidManifest.xml

Page 125: Mini curso Android

Run As.. Android application

Page 126: Mini curso Android
Page 127: Mini curso Android

Esta obra está licenciada sob a licença Creative Commons Atribuição-CompartilhaIgual 3.0 Não Adaptada. Para ver uma cópia desta licença, visite http://creativecommons.org/licenses/by-sa/3.0/.

Page 128: Mini curso Android

ANDROIDMario Jorge Pereira

Como me encontrar? http://www.mariojp.com.br twitter.com/@mariojp [email protected]