Início > Android > Criando uma notificação com Android

Criando uma notificação com Android

Quando se trabalha com Android é primordial a 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 devem ser mostradas nela para não interromper a tela do usuário caso a notificação seja mostrada quando o usuário estiver navegando em alguma tela da aplicação. Esse aplicativo que será mostrado agora ensina como criar uma notificação e removê-la ao clicar na notificação que foi criada na barrada 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

<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

<?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.


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.

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

Classe Notificação completa:

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<!--?--> 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

Anúncios
  1. Nenhum comentário ainda.
  1. No trackbacks yet.

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s

%d blogueiros gostam disto: