Desenvolvimento de um aplicativo básico usando o Google Android (Notification) Programação de Dispositivos Móveis Mauro Lopes Carvalho Silva Professor EBTT DAI – Departamento de Informática Campus Monte Castelo Instituto Federal de Educação Ciência e Tecnologia do Maranhão Programação de Dispositivos Móveis – 7º Período Objetivos • Nesta aula iremos apresentar a classe Notification. No android existem basicamente dois tipos de notificações. Elas podem ser feitas utilizando um Toast (que já utilizamos) ou a área de Notificação do sistema. Vamos entender como criar notificações que não sejam Toast. Nosso objetivo principal é aproximar o aluno do desenvolvimento de um aplicativo básico. Programação de Dispositivos Móveis – 7º Período Plano de Aula • Notification O que é? Por que usar? Como criar? Considerações Programação de Dispositivos Móveis – 7º Período Notification O que é uma Notification? • Um Notification, como o próprio nome diz é utilizada para exibir uma notificação ao usuário; • Uma notificação é uma mensagem especial que aparece na barra de status do celular para chamar a atenção do usuário; • Ao receber uma notificação, o usuário pode: • decidir visualizar seu conteúdo; • ou simplesmente ignorar a mensagem. • Se visualizar o conteúdo, a notificação pode disparar uma intent para iniciar diversos tipos de processos diferentes. Programação de Dispositivos Móveis – 7º Período Notification O que é uma Notification? Um exemplo bem comum é o aviso de recebimento de novos e-mails no gmail ou de novas mensagens do Whatsapp. Programação de Dispositivos Móveis – 7º Período Notification Por que usar uma Notification? • Uma aplicação executando em segundo plano nunca deve exibir um alerta para o usuário, ou pior ainda, abrir uma tela sem a permissão do mesmo; • Dessa forma, nossa aplicação não pode atrapalhar a atividade que o usuário está executando no momento; • Para isso o Android tem a classe android.app.Notification, que deve ser utilizada para exibir notificações ao usuário; • As notificações são ícones e mensagens que aparecem na barra de status do celular para chamar a atenção do usuário; • Uma notificação pode inclusive fazer o celular vibrar ou acender as luzes; Programação de Dispositivos Móveis – 7º Período Notification Como criar uma Notification? • Antes do Android 3.x: Antes da versão Android 3.x era necessário trabalharmos com as classes: NotificationManager e o Notification para conseguirmos lançar uma notificação. NotificationManager notificationManager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE); Notification notification = new Notification(R.drawable.ic_launcher, "Uma nova mensagem!", System.currentTimeMillis()); PendingIntent pendingIntent = PendingIntent.getActivity(this, 0, new Intent(this, TelaParaNotificacaoActivity.class), 0); notification.setLatestEventInfo(this, "Titulo", "Conteúdo", pendingIntent); notificationManager.notify(R.string.app_name, notification); Programação de Dispositivos Móveis – 7º Período Notification 1 ícone 2 3 Programação de Dispositivos Móveis – 7º Período Notification Como criar uma Notification? • Notificações no Android 3.x ou superior: A partir do Android 3.x é recomendado utilizar a classe Notification.Builder para criar notificações; 1) Content Title; 2) Large Icon; 3) Context Text; 4) Content Info; 5) Small Icon; 6) Momento em que a notificação foi enviada. Programação de Dispositivos Móveis – 7º Período Notification Como criar uma Notification? • Notificações no Android 3.x ou superior: 1: public void onReceive(Context contexto, Intent it) { 2: int idNot = 999; 3: Intent itBroad = new Intent("ACAO_LEGAL"); 4: PendingIntent pi = PendingIntent.getActivity(contexto, 0, itBroad, 0); 5: Notification.Builder builder = new Notification.Builder(contexto); 6: builder.setTicker(“Chegou Mensagem"); 7: builder.setContentTitle("Nova Mensagem"); 8: builder.setContentText("Mensagem Legal!!!"); 9: builder.setLargeIcon(BitmapFactory.decodeResource (contexto.getResources(),R.drawable.email_grande)); 10: builder.setWhen(System.currentTimeMillis()); 11: builder.setSmallIcon(R.drawable.email_pequeno); 12: builder.setAutoCancel(true); 13: builder.setContentIntent(pi); 14: Notification n = builder.build(); 15: NotificationManager nm = (NotificationManager) contexto.getSystemService(Activity.NOTIFICATION_SERVICE); 16: nm.notify(idNot, n); } Programação de Dispositivos Móveis – 7º Período Notification Considerações sobre o Código-Fonte • Notificações no Android 3.x ou superior: • O método setTicker(), gera a mensagem que aparece na barra de status do dispositivo (linha 6); • A classe BitmapFactory, decodifica o objeto que se encontra na pasta de recursos em um objeto de Bitmap entendível ao Android (linha 9); • O método setWhen() é utilizado para definir um valor explícito de tempo para ocorrência da notificação. o padrão é o tempo que o sistema recebeu a notificação (linha 10); • O método setAutoCancel() indica que depois de clicar na notificação ela será destruída (linha 12); Programação de Dispositivos Móveis – 7º Período Notification Considerações sobre Notification • Ao criar uma instância de PendingIntent usamos o método getActivity. Isto devido a nosso objetivo ser acionar uma Activity. No entanto podemos também chamar os métodos getBroadcast (para acionar um BroadcastReceiver) ou getService (para acionar um Service); • A classe NotificationManager, tem dois métodos importantes: notify (int id, Notification notificação) e cancel (int id); • O método notify() dispara a notificação; • O método cancel() destrói a notificação; • O Android disponibiliza a classe NotificationCompat que é da lib de compatibilidade (android-support-v4.jar) para que nós possamos utilizar notificações independente de versão. Programação de Dispositivos Móveis – 7º Período Dúvidas Página do Professor Mauro: http://www.dai.ifma.edu.br/~mlcsilva Programação de Dispositivos Móveis – 7º Período Próxima Aula • Desenvolvimento de um aplicativo básico usando o Google Android: Service. Programação de Dispositivos Móveis – 7º Período Referências • Google Android: aprenda a criar aplicações para dispositivos móveis com o Android SDK - Ricardo R. Lacheta, São Paulo: Novatec, 2010. • Sites: • http://androidzin.blogspot.com.br/2012/10/notificacoes.html Programação de Dispositivos Móveis – 7º Período