SlideShare a Scribd company logo
Android	

100% Hands-on
Mini curso Android
GOOGLE ANdroid
Mario Jorge Pereira
2002
2003
2004
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
Por onde começar?
http://developer.android.com
ADT Bundle*:
•Eclipse + ADT plugin
•Android SDK Tools
•Android Platform-tools
*Pré requisito: JDK instalada
Mini curso Android
Desenvolvimento
Mini curso Android
Chega de Bla Bla Bla!
Vamos Começar?
Eclipse + ADT
Olá MundoFile>New>AndroidApplicationProject
File>New>AndroidApplicationProject
Olá Mundo
File>New>AndroidApplicationProject
Olá Mundo
File>New>AndroidApplicationProject
Olá Mundo
Olá Mundo
Para rodar precisamos
do emulador
Vamos criar?
AVD	

AndroidVirtual
Device Maneger
Android SDK
Maneger
AVD	

AndroidVirtual 	

Device Maneger
Mini curso Android
Inicie o emulador que
voce criou?
Isso demora :( …
Depois que abrir não
feche o Emulador!!
Mini curso Android
Run As..
Android application
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);	
	 } 	
}
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)
Estrutura
<?xml version="1.0" encoding="utf-8"?>	
<resources>	
!
<string name="app_name">Alo Mundo</string>	
<string name="action_settings">Settings</string>	
<string name="hello_world">Hello world!</string>	
!
</resources>
strings.xml
/* AUTO-GENERATED FILE. DO NOT MODIFY.*/	
public final class R {	
public static final class attr {	
}	
public static final class dimen {	
public static final int activity_horizontal_margin=0x7f040000;	
public static final int activity_vertical_margin=0x7f040001;	
}	
public static final class layout {	
public static final int activity_main=0x7f030000;	
}	
	 	 ...	
}
R.java
<?xml version="1.0" encoding=“utf-8"?>	
<manifest ...>	
	 ...	
<application ... >	
<activity	
android:name="br.com.mariojp.olamundo.OlaMundoActivity"	
android:label="@string/app_name" >	
<intent-filter>	
<action android:name="android.intent.action.MAIN" />	
<category android:name="android.intent.category.LAUNCHER" />	
</intent-filter>	
</activity>	
</application>	
</manifest>	
AndroidManifest.xml
Log.[nivel](“TAG”,“MENSAGEM”);	
!
Log.v	 	 	 (Verbose)	
Log.d	 	 	 (Debug)	
Log.i	 	 	 (Info)	
Log.w	 	 	 (Warning)	
Log.e	 	 	 (Erro)	
Log.wtf	 (...)	
Log
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
Mini curso Android
use o logging:	

Log.i(“Ciclo deVida”,”<método>”)	

nos métodos onCreate, onStart,
onResume, onRestart, onPause,
onStop e onDestroy.
Entendendo o ciclo de vida
Run As..
Android application
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?
Mini curso Android
Ainda no OlaMundo
O arquivo
OlaMundoActivity.java
public class OlaMundo extends Activity {	
!
	 @Override	
	 protected void onCreate(Bundle savedInstanceState) {	
	 	 super.onCreate(savedInstanceState);	
	 	 setContentView(R.layout.activity_ola_mundo);	
	 }	
!
}
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”
Um pouco de Layout
activity_ola_mundo.xml
<RelativeLayout ... >	
...	
<Button	
android:id="@+id/botao"	
android:layout_width="wrap_content"	
android:layout_height="wrap_content"	
android:text="Botao" />	
...	
</RelativeLayout>	
activity_ola_mundo.xml
Run As..
Android application
<LinearLayout xmlns:android="http://schemas.android.com/apk/
res/android"	
xmlns:tools="http://schemas.android.com/tools"	
android:layout_width="match_parent"	
android:layout_height="match_parent"	
android:orientation="horizontal"	
tools:context="br.com.mariojp.olamundo.OlaMundoActivity" >	
!
. . .
	
!
</LinearLayout>
activity_ola_mundo.xml
Run As..
Android application
<LinearLayout xmlns:android="http://schemas.android.com/apk/
res/android"	
xmlns:tools="http://schemas.android.com/tools"	
android:layout_width="match_parent"	
android:layout_height="match_parent"	
android:orientation="vertical"	
tools:context="br.com.mariojp.olamundo.OlaMundoActivity" >	
!
. . .
	
!
</LinearLayout>
activity_ola_mundo.xml
Run As..
Android application
<RelativeLayout ... >	
...	
<Button	
android:id="@+id/botao"	
android:layout_width="match_parent"	
android:layout_height="wrap_content"	
android:text="Botao" />	
...	
</RelativeLayout>	
activity_ola_mundo.xml
Run As..
Android application
Um pouco de Comportamento
OlaMundoActivity.java
[Tipo] var = ([Tipo]) findViewById(R.id.[id]);	
!
var.metodo();	
!
findbyid
<RelativeLayout ... >	
...	
<TextView	
android:id="@+id/texto"	
android:layout_width="wrap_content"	
android:layout_height="wrap_content"	
android:text="@string/hello_world" />	
...	
</RelativeLayout>	
activity_ola_mundo.xml
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
Run As..
Android application
Botão Aplicação
Listener
Clicou?
Ação do Botão
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
public class Ouvinte implements OnClickListener {	
!
	 @Override	
	 public void onClick(View clicado) {	
	 	 Log.i("TAG", "Botao Clicado");		 }	
!
}
Ouvinte.java
Run As..
Android application
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
Run As..
Android application
<RelativeLayout ... >	
...	
<Button	
android:id="@+id/botao"	
android:layout_width="wrap_content"	
android:layout_height="wrap_content"	
android:text="Botao"	
android:onClick="metodo" />	
...	
</RelativeLayout>	
activity_ola_mundo.xml
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
Run As..
Android application
Toast.makeText(this, "TEXTO", Toast.LENGTH_LONG).show();	
!
!
Toast.LENGTH_LONG	
!
Toast.LENGTH_SHORT	
!
TOAST
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
Run As..
Android application
Faculdade
File > New > Android Application Project
Crie o projeto Android
File > New > Android Application Project
public class ListaDisciplinas extends Activity {	
!
	 @Override	
	 protected void onCreate(Bundle savedInstanceState) {	
	 	 super.onCreate(savedInstanceState);	
	 	 setContentView(R.layout.lista_diciplinas);	
	 }	
}	
ListaDisciplinas.java
<?xml version="1.0" encoding="utf-8"?>	
<LinearLayout 	
xmlns:android="http://schemas.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
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
Run As..
Android application
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
Run As..
Android application
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
Run As..
Android application
O que aconteceu ate
aqui?
Repare que o onItemLongClick
retorna false => troque por
true.
Run As..
Android application
Vamos criar um
formulário
File>New>AndroidXMLFile
res/layout/disciplina.xml
<?xml version="1.0" encoding="utf-8"?>	
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"	
android:layout_width="match_parent"	
android:layout_height="match_parent"	
android:orientation="vertical" >	
<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="Disciplina" />	
<EditText android:id="@+id/disciplina"	
android:layout_width="match_parent"	
android:layout_height="wrap_content"	
android:ems="10" >	
<requestFocus />	
</EditText>	
. . .	
</LinearLayout>
disciplinas.xml
<?xml version="1.0" encoding="utf-8"?>	
<LinearLayout xmlns:android=“http://schemas.android.com/apk/res/android"	
android:layout_width="match_parent"	
android:layout_height="match_parent"	
android:orientation="vertical" >	
!
. . .	
!
<EditText	
android:id="@+id/nota2"	
android:layout_width="match_parent"	
android:layout_height="wrap_content"	
android:ems="10"	
android:inputType="numberSigned" />	
<Button	
android:id="@+id/botao"	
android:layout_width="wrap_content"	
android:layout_height="wrap_content"	
android:text="Salvar" />	
!
</LinearLayout>	
disciplinas.xml
Pode usar o Editor
android.app.Activity
File>New>Class
public class DisciplinaActivity extends Activity {	
	 	
	 protected void onCreate(Bundle savedInstanceState) {	
	 	 super.onCreate(savedInstanceState);	
	 	 setContentView(R.layout.disciplina);	
	 }	
!
}	
DisciplinaActivity.java
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
<menu xmlns:android="http://schemas.android.com/apk/res/android"	
xmlns:tools="http://schemas.android.com/tools"	
tools:context="br.com.mariojp.faculdade.ListaDisciplinas" >	
!
<item	
android:id="@+id/novo"	
android:showAsAction="always"	
android:icon="@android:drawable/btn_plus"	
android:title="Novo"/>	
!
</menu>	
lista_disciplinas.xml
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
Run As..
Android application
Mini curso Android
<?xml version="1.0" encoding=“utf-8"?>	
<manifest ...>	
	 . . .	
<application ... >	
<activity android:name="br.com.mariojp.faculdade.Disciplina">	
	
</activity>	
. . . 	
</application>	
</manifest>	
AndroidManifest.xml
Run As..
Android application
Mini curso Android
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
Run As..
Android application
Banco de dados
Vamos pensar um
pouco…
DisciplinaDAO
SQLiteOpenHelper
ListaDisciplinas
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
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
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
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
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
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
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
Run As..
Android application
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
Run As..
Android application
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
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
public class ListaDisciplinas extends Activity {	
!
private ListView lista;	!
protected void onCreate(Bundle savedInstanceState) {	
//...	
	 lista = (ListView) findViewById(R.id.lista_disciplinas);	
registerForContextMenu(lista);	//...	
	 }	
//...	
}
ListaDisciplinas.java
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
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
Run As..
Android application
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
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
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
Run As..
Android application
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[] { "mariojp@gmail.com" });	
	 	 intentEmail.putExtra(Intent.EXTRA_SUBJECT, "ANDROID");	
	 	 intentEmail.putExtra(Intent.EXTRA_TEXT, "LEGAL!!!");	
	 	 email.setIntent(intentEmail);	//. . . 	
	 }	
}
ListaDisciplinas.java
Run As..
Android application
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
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
<?xml version="1.0" encoding=“utf-8"?>	
<manifest ...>	
	 …	
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />	
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />	
	 … 	
</manifest>	
AndroidManifest.xml
Run As..
Android application
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/.
ANDROID
Mario Jorge Pereira
Como me encontrar?
http://www.mariojp.com.br
twitter.com/@mariojp
mariojp@gmail.com

More Related Content

PDF
Android Sliding Menu dengan Navigation Drawer
PDF
Slightly Advanced Android Wear ;)
DOCX
package org dev
PDF
Before there was Hoop Dreams, there was McDonald's: Strange and Beautiful
PDF
Android basic 4 Navigation Drawer
PDF
ハンズオン資料 電話を作ろう(v1.6用)
PDF
Neues aus dem Tindergarten: Auswertung "privater" APIs mit Apache Ignite
PDF
The rise and fall of a techno DJ, plus more new reviews and notable screenings
Android Sliding Menu dengan Navigation Drawer
Slightly Advanced Android Wear ;)
package org dev
Before there was Hoop Dreams, there was McDonald's: Strange and Beautiful
Android basic 4 Navigation Drawer
ハンズオン資料 電話を作ろう(v1.6用)
Neues aus dem Tindergarten: Auswertung "privater" APIs mit Apache Ignite
The rise and fall of a techno DJ, plus more new reviews and notable screenings

What's hot (18)

PDF
Mad Max is back, plus the rest of our new reviews and notable screenings
TXT
https://www.facebook.com/valdyna.monna?fref=ts
PDF
Xamarin: Introduction to iOS 8
PDF
Tinkerbelles return home from their Guinness world-record attempt on Sunday
PPTX
Embracing YUI3 and Frontend Perf
PDF
Rushed to Victory Gardens' stage, An Issue of Blood is more effusion than play
TXT
Send.php
PDF
Crossing platforms with JavaScript & React
PDF
Discontinuing Reader Matches
PDF
Google I/O 2021 Recap
PDF
MVVM with SwiftUI and Combine
PPT
PPTX
Introduction To Google Android (Ft Rohan Bomle)
PDF
Introduction to Android Wear
KEY
Combining Graphical and Textual
PDF
More android code puzzles
TXT
Test
PDF
Oracle helpdesk database shema
Mad Max is back, plus the rest of our new reviews and notable screenings
https://www.facebook.com/valdyna.monna?fref=ts
Xamarin: Introduction to iOS 8
Tinkerbelles return home from their Guinness world-record attempt on Sunday
Embracing YUI3 and Frontend Perf
Rushed to Victory Gardens' stage, An Issue of Blood is more effusion than play
Send.php
Crossing platforms with JavaScript & React
Discontinuing Reader Matches
Google I/O 2021 Recap
MVVM with SwiftUI and Combine
Introduction To Google Android (Ft Rohan Bomle)
Introduction to Android Wear
Combining Graphical and Textual
More android code puzzles
Test
Oracle helpdesk database shema
Ad

Viewers also liked (8)

PDF
Android por onde começar? Mini Curso Erbase 2015
PDF
Minicurso Android
PDF
Android, por onde começar?
PDF
PDF
Labs Jogos Java
Android por onde começar? Mini Curso Erbase 2015
Minicurso Android
Android, por onde começar?
Labs Jogos Java
Ad

Similar to Mini curso Android (20)

PPT
Android activity, service, and broadcast recievers
KEY
Android Workshop
PDF
Quick Intro to Android Development
PPTX
04 activities - Android
PDF
Android Best Practices
KEY
Android app development basics
PDF
android level 3
PDF
IT3681 - MOBILE_APPLICATIONS_DEVELOPMENT_LABORATORY (1).pdf
PPTX
Android Development Made Easy - With Sample Project
PDF
Android Basic Components
PDF
Ionic2, les développeurs web à l'assaut du mobile, BDX I/O le 21/10/2016
KEY
Design Patterns for Tablets and Smartphones
PPTX
Androidaop 170105090257
PPT
Android
PDF
Native Android Development Practices
PDF
Android: the Single Activity, Multiple Fragments pattern | One Activity to ru...
PPT
Ruby conf2012
PPT
Lec005 android start_program
PPTX
Mobile App Development: Primi passi con NativeScript e Angular 2
PDF
Building Modern Apps using Android Architecture Components
Android activity, service, and broadcast recievers
Android Workshop
Quick Intro to Android Development
04 activities - Android
Android Best Practices
Android app development basics
android level 3
IT3681 - MOBILE_APPLICATIONS_DEVELOPMENT_LABORATORY (1).pdf
Android Development Made Easy - With Sample Project
Android Basic Components
Ionic2, les développeurs web à l'assaut du mobile, BDX I/O le 21/10/2016
Design Patterns for Tablets and Smartphones
Androidaop 170105090257
Android
Native Android Development Practices
Android: the Single Activity, Multiple Fragments pattern | One Activity to ru...
Ruby conf2012
Lec005 android start_program
Mobile App Development: Primi passi con NativeScript e Angular 2
Building Modern Apps using Android Architecture Components

More from Mario Jorge Pereira (19)

PDF
Educacao e Inteligencia Artificial Generativa
PDF
Lógica de Programação e Algoritmos
PDF
Guia rapido java v2
PDF
Guia Rápido de Referência Java
PDF
Java Nuvem Appengine
PDF
Java Server Faces
PDF
Hands-On Java web passando por Servlets, JSP, JSTL, JDBC, Hibernate, DAO, MV...
PDF
Android e Cloud Computing
PDF
RMI (Remote Method Invocation)
PDF
Java e Cloud Computing
PDF
GUI - Eventos
PDF
GUI Aplicações Gráficas
PDF
Revisão Sobre Programação Orientada a Objetos com Java
PDF
Erros comuns em java
PDF
Introdução ao java Alo Mundo
PDF
Fundamentos de JDBC
PDF
Java Coleções
Educacao e Inteligencia Artificial Generativa
Lógica de Programação e Algoritmos
Guia rapido java v2
Guia Rápido de Referência Java
Java Nuvem Appengine
Java Server Faces
Hands-On Java web passando por Servlets, JSP, JSTL, JDBC, Hibernate, DAO, MV...
Android e Cloud Computing
RMI (Remote Method Invocation)
Java e Cloud Computing
GUI - Eventos
GUI Aplicações Gráficas
Revisão Sobre Programação Orientada a Objetos com Java
Erros comuns em java
Introdução ao java Alo Mundo
Fundamentos de JDBC
Java Coleções

Recently uploaded (20)

PPTX
Week 4 Term 3 Study Techniques revisited.pptx
PPTX
Introduction to Child Health Nursing – Unit I | Child Health Nursing I | B.Sc...
PPTX
Cell Types and Its function , kingdom of life
PDF
grade 11-chemistry_fetena_net_5883.pdf teacher guide for all student
PDF
Abdominal Access Techniques with Prof. Dr. R K Mishra
PDF
2.FourierTransform-ShortQuestionswithAnswers.pdf
PDF
Insiders guide to clinical Medicine.pdf
PDF
Classroom Observation Tools for Teachers
PPTX
Pharmacology of Heart Failure /Pharmacotherapy of CHF
PDF
Chapter 2 Heredity, Prenatal Development, and Birth.pdf
PDF
BÀI TẬP BỔ TRỢ 4 KỸ NĂNG TIẾNG ANH 9 GLOBAL SUCCESS - CẢ NĂM - BÁM SÁT FORM Đ...
PDF
Business Ethics Teaching Materials for college
PDF
Basic Mud Logging Guide for educational purpose
PDF
RMMM.pdf make it easy to upload and study
PDF
TR - Agricultural Crops Production NC III.pdf
PDF
Mark Klimek Lecture Notes_240423 revision books _173037.pdf
PPTX
Cell Structure & Organelles in detailed.
PDF
FourierSeries-QuestionsWithAnswers(Part-A).pdf
PDF
VCE English Exam - Section C Student Revision Booklet
PPTX
PPT- ENG7_QUARTER1_LESSON1_WEEK1. IMAGERY -DESCRIPTIONS pptx.pptx
Week 4 Term 3 Study Techniques revisited.pptx
Introduction to Child Health Nursing – Unit I | Child Health Nursing I | B.Sc...
Cell Types and Its function , kingdom of life
grade 11-chemistry_fetena_net_5883.pdf teacher guide for all student
Abdominal Access Techniques with Prof. Dr. R K Mishra
2.FourierTransform-ShortQuestionswithAnswers.pdf
Insiders guide to clinical Medicine.pdf
Classroom Observation Tools for Teachers
Pharmacology of Heart Failure /Pharmacotherapy of CHF
Chapter 2 Heredity, Prenatal Development, and Birth.pdf
BÀI TẬP BỔ TRỢ 4 KỸ NĂNG TIẾNG ANH 9 GLOBAL SUCCESS - CẢ NĂM - BÁM SÁT FORM Đ...
Business Ethics Teaching Materials for college
Basic Mud Logging Guide for educational purpose
RMMM.pdf make it easy to upload and study
TR - Agricultural Crops Production NC III.pdf
Mark Klimek Lecture Notes_240423 revision books _173037.pdf
Cell Structure & Organelles in detailed.
FourierSeries-QuestionsWithAnswers(Part-A).pdf
VCE English Exam - Section C Student Revision Booklet
PPT- ENG7_QUARTER1_LESSON1_WEEK1. IMAGERY -DESCRIPTIONS pptx.pptx

Mini curso Android