Treinamento Android

Que tal aproveitar o ano novo para aprender Android? \o/

Android professor

Se você é um desenvolvedor iniciante no Android, vale a pena ler o material educativo sobre a plataforma preparado pelo Google. Organizado em lições como “Projetando para múltiplas telas” e “Monetizando seu aplicativo”, as informações buscam oferecer ao estudante o básico para que ele aproveite as vantagens e entenda as particularidades do robôzinho.

Além do texto explicativo, as lições também apresentam dependências e pré-requisitos, material relacionado e apps com exemplos para que o estudante entenda de vez o tópico tratado.

É possível também entrar em contato com a comunidade de desenvolvedores através do fórum e consultar rapidamente estatísticas de uso da plataforma, como versões em uso e tamanhos de tela mais comuns.

A única “desvantagem”? O material só está disponível em inglês.

Introdução a banco de dados Android [Parte 5]

Feliz natal estudando banco de dados para todos! :-P

hoo hoo hoouu, Papai Noel chegou. Aproveitando o embalo da época, neste tutorial, vamos tentar melhorar a reutilização de código nas classes CategoriaDAO e EmprestimoDAO do projeto EmprestaAi!

Para isso vamos tirar proveito da classe mãe BasicoDAO e adicionar métodos genéricos a essa classe formando assim uma biblioteca de consultas.
Que presentão heim?!
Leia Mais »

Splash Screen com animações

Splash Screen é aquela tela (ou conjunto de telas) que é executada antes do menu inicial de um jogo ou aplicativo de modo a mostrar o logo de uma empresa ou dos patrocinadores.
Neste tutorial, mais do que mostrar como criar um splash, vou mostrar um pouco sobre animações com a classe ViewFlipper do Android.

Antes de começar vou dar os devidos créditos, o código fonte mostrado aqui teve como base vários tutoriais pela internet, entre eles, esse aqui do Portal Android, esse do EuAndroid, esse do Thiago Rosa e esse aqui do Code Project. Então qualquer semelhança com os trabalhos publicados nestes locais não é mera coincidência. Não, não estou republicando posts de outros, como você verá, existem muitas diferenças, mas a ideia é mais ou menos a mesma.

Imagem 3 saindo pela borda esquerda superior e a 2 entrando pela borda direita inferior


Leia Mais »

Introdução a banco de dados Android [Parte 4]

Pessoal, me desculpem a demora em continuar com os posts, estive doente, e junto veio o fim de período na universidade, ai já viu neh?

Neste post não irei apresentar nenhum conceito novo relacionado a API android, iremos organizar melhor o nosso projeto EmprestaAi. Note que isso é tão importante quanto saber da API, se você quiser desenvolver um projeto com várias tabelas, não vai querer todo o código de acesso em um único arquivo, ou ficar acessando colunas e constantes diretamente nas classes de interface.

Poxa, somos desenvolvedores Java aqui, e até o momento a orientação a objetos e encapsulamento do projeto estava muito a quem do que podemos fazer!

Até agora estava me baseando nos exemplos do Google para desenvolver nossa aplicação, mas os exemplos deles não são muito escaláveis.

Já está na hora de definirmos alguns pacotes como o dao, model e gui, o control fica para uma próxima.

Também iremos desmembrar a classe DbAdapter e tentar esconder um pouco da logica de acesso ao banco das classes de interface.

Como vocês já devem saber, mas não custa nada lembrar, no pacote dao ficam as classes responsáveis por definir as tabelas do banco, acessar diretamente os dados e encapsular os dados vindos e enviados a nossa aplicação. Tipicamente estes objetos são os objetos que ficam no pacote model. Os objetos do pacote model tendem a representar alguma entidade básica da aplicação de forma a mapear o conteúdo das tabelas em objetos.

Por exemplo: No pacote dao teremos a classe EmprestimoDAO e a classe CategoriaDAO que serão responsáveis por acessar as tabelas Emprestimo e Categoria, respectivamente. Para fazer isso as classes dao recebem como parâmetros objetos do pacote model. EmprestimoDAO, para adicionar uma linha no banco, utiliza o método criarEmprestimo, que a partir de agora, irá receber como parâmetro uma instância da classe Emprestimo.
Leia Mais »

Criando uma notificação com Android

Quando se trabalha com Android é primordial oferecer uma notificação ao usuário caso aconteça algo inesperado em sua aplicação ou até esperado. Por padrão, o Android tem uma barra de notificação “toolbar” onde todas as notificações de sua aplicação podem ser mostradas, desse modo o desenvolvedor tem um meio não intrusivo de chamar a atenção do usuário e sem interromper a atividade em foco pelo usuário. O aplicativo que será mostrado agora ensina como criar uma notificação e removê-la ao clicar na notificação que foi criada na barra de notificação, além de poder emitir som e vibração.

Em um novo projeto ou em um projeto existente crie um XML com o nome de main.xml e adicione um botão com o id, no caso do tutorial foi criado o botão com o id Button

1
2
3
4
<Button android:id="@+id/button" android:text="Clique aqui."
	android:layout_width="fill_parent" android:layout_height="wrap_content"
	android:layout_weight="1" android:textColor="#ffffff" >
</Button>

XML completo

1
2
3
4
5
6
7
8
9
10
11
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
	android:orientation="vertical" android:layout_width="fill_parent"
	android:layout_height="fill_parent">
 
	<Button android:id="@+id/button" android:text="Clique aqui."
	     android:layout_width="fill_parent" android:layout_height="wrap_content"
	     android:layout_weight="1" android:textColor="#ffffff" >
	</Button>
 
</LinearLayout>

Agora, crie uma classe para auxiliar na criação da mensagem. Essa classe foi criada com o intuito de encapsular os dados que serão passados como parâmetro para o envio da notificação. Também é possível criar o exemplo sem a necessidade desta classe. É só passar as strings no parâmetro da notificação como veremos mais a frente.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
 
public class MensagemAlerta {
 
	private CharSequence title;
	private CharSequence body;
	private CharSequence subTitle;
 
	public MensagemAlerta(CharSequence title, CharSequence body,
			CharSequence subTitle) {
 
		this.title = title;
		this.body = body;
		this.subTitle = subTitle;
	}
 
	public CharSequence getTitle() {
		return title;
	}
 
	public void setTitle(CharSequence title) {
		this.title = title;
	}
 
	public CharSequence getBody() {
		return body;
	}
 
	public void setBody(CharSequence body) {
		this.body = body;
	}
 
	public CharSequence getSubTitle() {
		return subTitle;
	}
 
	public void setSubTitle(CharSequence subTitle) {
		this.subTitle = subTitle;
	}
 
}

Agora, crie uma classe chamada de Notificacao que herde de Activity e implemente a interface OnclickListener. Essa classe é responsável por executar o layout que foi criado no caso o main.xml e executa a notificação através da ação de um botão.

Obs:
Caso você queira que o som da notificação seja um som feito por você e não um som padrão do Andorid, utilize o método sound de Notification e passe o caminho onde se encontra o arquivo de áudio.

1
notification.sound=Uri.parse("file:///sdcard/recording33490.3gpp");

Classe Notificação completa:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
import android.app.Activity;
import android.app.Notification;
import android.app.NotificationManager;
import android.app.PendingIntent;
import android.content.Context;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.provider.MediaStore.Audio;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
 
public class Notificacao extends Activity implements OnClickListener {
 
	@Override
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.main);
 
		Button button = (Button) findViewById(R.id.button);
		button.setOnClickListener(this);
 
	}
 
	@Override
	public void onClick(View v) {
 
		// 1 parâmetro - titulo
		// 2 parâmetro - corpo da mensagem
		// 3 parâmetro - subtitulo
		criarNotificacao(getApplicationContext(), new MensagemAlerta(
			"Título da noficação", "Corpo da notificação",
			"SubTítulo da notificao"), Notificacao.class);
 
	}
 
	// Exibe a notificão
	protected void criarNotificacao(Context context,
		MensagemAlerta messagesAlerts, Class&lt;!--?--&gt; activity) {
 
	// Recupera o serviço do NotificationManager
	NotificationManager notificationManager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
 
	Notification notificaction = new Notification(R.drawable.icon,
		messagesAlerts.getTitle(), System.currentTimeMillis());
 
	notificaction.sound = Uri.withAppendedPath(Audio.Media.INTERNAL_CONTENT_URI, "6");
	// notification.sound = Uri.parse("file:///sdcard/recording33490.3gpp");
 
	// Flag que vibra e emite um sinal sonoro até o usuário clicar na
	// notificação
	notificaction.flags |= Notification.FLAG_INSISTENT;
 
	// Flag utilizada para remover a notificação da toolbar quando usuário
	// tiver clicado nela.
	notificaction.flags |= Notification.FLAG_AUTO_CANCEL;
 
	// PendingIntent para executar a Activity se o usuário selecionar a
	// notificão
	PendingIntent p = PendingIntent.getActivity(this, 0,
		new Intent(this.getApplicationContext(), Notificacao.class), 0);
 
	// Informações
	notificaction.setLatestEventInfo(this, messagesAlerts.getSubTitle(),
			messagesAlerts.getBody(), p);
 
	// espera 100ms e vibra por 1000ms, depois espera por 1000 ms e vibra
	// por
	// 1000ms.
	notificaction.vibrate = new long[] { 100, 1000, 1000, 1000 };
 
	// id que identifica esta notifição
	notificationManager.notify(R.string.app_name, notificaction);	}
}

É possível fazer o donwload do projeto aqui