Avisos e Notificações aos Usuários

Documentos relacionados
Trabalhando com Mensagens. File > New > New Project. Uso de mensagens (Toast) Luiz Eduardo Guarino de Vasconcelos

Mensagens. Para conhecimento. Renomear arquivos. Botão Direito no arquivo > Rafactor > Rename Shift + F6

PROGRAMAÇÃO PARA DISPOSITIVOS MÓVEIS

Criando as primeiras telas (Activity)

Login. Criar uma nova Activity. Login. Luiz Eduardo Guarino de Vasconcelos

Tutorial Android Speech

Prof: Ricardo Quintão Site:

Programação para Dispositivos Móveis

PROPOSTA DE UM PADRÃO DE PROJETO PARA ANDROID UTILIZANDO A WEB

Desenvolvimento de um aplicativo básico usando o Google Android

Universidade Federal do Paraná

Programa de Dispositivos Móveis

Android Activity. Ivan Nicoli

Desenvolvimento de Aplicativos Android

Fragments. Criar um novo projeto. Selecionar a API. Navigation Drawer Activity. Fragments. Luiz Eduardo Guarino de Vasconcelos

Programação para Dispositivos Móveis. Activity e Intent

Android Layout Manager. Ivan Nicoli

Retrofit. Criar um novo projeto. Selecionar a API. Retrofit para consumir Web Service Luiz Eduardo Guarino de Vasconcelos

Programação para Dispositivos Móveis

Introdução ao Android. Programação Orientada a Objetos Prof. Rone Ilídio - UFSJ

Views Interface Gráfica

Firebase. Acesse o site Acesse o menu Go to Console. Acesse com uma conta Google ou crie uma conta.

Prof: Ricardo Quintão Site:

Android. Interfaces: widgets

Programação para Dispositivos Móveis. Banco de Dados (SQLite)

Computação Móvel Gerenciadores de Layout (Ref. Cap. 6)

Curso de Android - 2 Novas Activities. SECAP Prof. Rone Ilídio - UFSJ

Introdução ao Android. SECAP 2014 Prof. Rone Ilídio - UFSJ

Programação para a Plataforma Android Aula 16. Fragmentos

Apresentação de um Processo Cria4vo de Desenvolvimento de uma App Android. Realização de Dinâmica Hands- On para Construção de uma App Android

TUTORIAL ANDROID ACTIVITY - CONSTRUÇÃO DE TELAS

Android Core. Felipe Silveira felipesilveira.com.br. Aula 6

Programando Intenções. Prof. Fellipe Aleixo

Mais Elementos da Interface com o Usuário. Prof. Fellipe Aleixo

Notification. Programação de Dispositivos Móveis. Mauro Lopes Carvalho Silva. Professor EBTT DAI Departamento de Informática Campus Monte Castelo

Programação para a Plataforma Android Aula 13. Localização

Programação para Android. Aula 05: Estilos e temas; galeria de imagens

Programação para Android. Aula 08: Persistência de dados SQL

Navegar entre páginas Necessário o uso de Intent. Intenção de ir a algum lugar, acessar outros recursos, outros apps.

Prof. Jhonatan Fernando

ANDROID APRENDIZ. Um guia para iniciantes Crie seu primeiro aplicativo Android

DESENVOLVIMENTO PARA DISPOSITIVOS MÓVEIS. PROFª. M.Sc. JULIANA H Q BENACCHIO

Log, Ciclo de Vida e Diálogos. Prof. Fellipe Aleixo (fellipe.aleixo@ifrn.edu.br)

Capítulo 02: Cadastro de Alunos

Módulo 4 - Interface Gráfica Gerenciadores de Layout. Programação Orientada a Objetos Prof. Rone Ilídio - UFSJ

Programação para a Plataforma Android Aula 2. Aula 2 Views

Programação de Dispositivos Móveis

============================== Exemplo ListView MainActivity.java

Programação de Dispositivos Móveis

Desenvolvimento com Android Studio. Aula 02 Widgets, Manipulação de Dados e Programação de Eventos

Construindo layouts complexos em Android

Introdução ao Desenvolvimento para Sistema Operacional Android

Programação para a Plataforma Android Aula 11. Banco de Dados

Desenvolvimento para Android Prá9ca 2. Prof. Markus Endler

Android Banco de Dados. Ivan Nicoli

AULA 3. Minicurso PET-EE UFRN

Programação para Android

Implementação de Interfaces gráficas

Comunicação entre A0vidades

Programação para Android. Aula 06: Activity, menus e action bar

Google Android. Componentes Gráficos

Inicia-se a produção do Caderno de Atividades sob a sua responsabilidade.

Desenvolvimento Mobile com Android

Programa de Dispositivos Móveis

Android INTERFACE GRÁFICA & LAYOUT. Prof. Dr. Joaquim assunção.

Google Android. Uma abordagem prática e didática. Rafael Guimarães Sakurai. Esse livro está à venda em

Módulo 2 - Novas Activities Android. Programação Orientada a Objetos Prof. Rone Ilídio - UFSJ

Programação Android. Aula 03

PROGRAMAÇÃO MOBILE Estudo de Caso

Módulo 3 - Intenções. SECAP 2014 Prof. Rone Ilídio - UFSJ

Desenvolvimento para Android Prá3ca 3. Prof. Markus Endler

Programação para Android. Aula 10: Acesso a câmera, sms e recursos do aparelho

1. SQLite No Android 2. API de Acesso Listagem 1 SQLiteDatabase SQLiteOpenHelper Listagem 1 Android Studio SQLiteOpenHelper Android Studio

Desenvolvimento Android. Pontapé inicial...

Projeto GoHome Tutorial Sobre o serviço do Google Maps no Android

Programação para a Plataforma Android Aula 17. Broadcasts

Primeira Aplicação Android Olá Mundo. Prof. Fellipe Aleixo

Usando e Gerenciando Activities

PROGRAMAÇÃO PARA DISPOSITIVOS MÓVEIS

Introdução ao Android

Interfaces no Android : widgets. Continuação

AULA 2. Minicurso PET-EE UFRN

HCI Summer Workshop. Android #1. Tiago Guerreiro.

INTRODUÇÃO À PROGRAMAÇÃO PARA DISPOSITIVOS MÓVEIS. ADS 6º Período

Utilização do Fiery WebSpooler

Programação para a Plataforma Android Aula 4. Objetos Gráficos

Computação II Orientação a Objetos

DESENVOLVIMENTO PARA DISPOSITIVOS MÓVEIS. PROFª. M.Sc. JULIANA H Q BENACCHIO

Desenvolvimento de um aplicativo básico usando o Google Android

Programação para a Plataforma Android Aula 7. Mul$mídia

PROGRAMAÇÃO PARA DISPOSITIVOS MÓVEIS

Armazenamento Persistente de Dados

Introdução a Tecnologia da Informação

Computação Móvel Conceitos Básicos do Android Ref. Capítulo 3

Android I N T R O D U Ç Ã O À P R O G R A M A Ç Ã O P R O F E S S O R L E O N A R D O C. R. S O A R E S - L A R B A C K

Computação Móvel ActionBar e Temas (Ref. Cap. 5)

JavaFX Classe de Controle e Eventos. Prof. Vicente Paulo de Camargo

Google Android. Uma abordagem prática e didática. Rafael Guimarães Sakurai, Diogo Carleto, erodrigo Cascarrolho

Desenvolvimento Android.

AlarmManager. Programação em Dispositivos Móveis (PDM) Centro de Cálculo Instituto Superior de Engenharia de Lisboa

Transcrição:

Avisos e Notificações aos Usuários

Caixa de Diálogos Pequena janela que solicita ao usuário tomar uma decisão ou inserir informações adicionais. Não preenche toda a tela Utilizado em eventos modais, requerem dos usuários uma interação antes de prosseguir.

Alert Dialog Pode mostrar: título, até três botões, lista de itens selecionáveis ou não, ou layout personalizado.

Diálogo Básico private AlertDialog alerta; private void exemplo_simples() { // Cria o gerador do AlertDialog AlertDialog.Builder builder = new AlertDialog.Builder(this); // define o titulo builder.settitle("titulo"); // define a mensagem builder.setmessage("qualifique este software"); // define um botão como positivo builder.setpositivebutton("positivo",new DialogInterface.OnClickListener() { public void onclick(dialoginterface arg0, int arg1) { Toast.makeText(TesteActivity.this, "positivo=" + arg1, Toast.LENGTH_SHORT).show(); ); // define um botão como negativo. builder.setnegativebutton("negativo", new DialogInterface.OnClickListener() { public void onclick(dialoginterface arg0, int arg1) { Toast.makeText(TesteActivity.this, "negativo=" + arg1, Toast.LENGTH_SHORT).show(); ); // cria o AlertDialog alerta = builder.create(); // Exibe alerta.show();

Diálogo Customizado private void exemplo_layout() { //LayoutInflater é utilizado para inflar nosso layout em uma view. //-pegamos nossa instancia da classe LayoutInflater li = getlayoutinflater(); //inflamos o layout alerta.xml na view View view = li.inflate(r.layout.alerta, null); //definimos para o botão do layout um clicklistener view.findviewbyid(r.id.bt).setonclicklistener(new View.OnClickListener() { public void onclick(view arg0) { //exibe um Toast informativo. Toast.makeText(TesteActivity.this, "alerta.dismiss()", Toast.LENGTH_SHORT).show(); //desfaz o alerta. Alerta.dismiss(); ); AlertDialog.Builder builder = new AlertDialog.Builder(this); builder.settitle("titulo"); builder.setview(view); alerta = builder.create(); alerta.show();

Layout alerta.xml <?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" > <ImageView android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center" android:src="@drawable/imagem_teste" /> <Button android:id="@+id/bt" android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="dismiss" /> </LinearLayout>

Diálogos de lista de seleção simples private void exemplo_lista_single() { //Lista de itens ArrayList<String> itens = new ArrayList<String>(); itens.add("ruim"); itens.add("mediano"); itens.add("bom"); itens.add("ótimo"); //adapter utilizando um layout customizado (TextView) ArrayAdapter adapter = new ArrayAdapter(this, R.layout.item_alerta, itens); AlertDialog.Builder builder = new AlertDialog.Builder(this); builder.settitle("qualifique este software:"); //define o diálogo como uma lista, passa o adapter. builder.setsinglechoiceitems(adapter, 0, new DialogInterface.OnClickListener() { public void onclick(dialoginterface arg0, int arg1) { Toast.makeText(TesteActivity.this, "posição selecionada=" + arg1, Toast.LENGTH_SHORT).show(); alerta.dismiss(); ); alerta = builder.create(); alerta.show();

Layout item_alerta.xml <?xml version="1.0" encoding="utf-8"?> <TextView xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="wrap_content" android:textsize="20sp" android:textcolor="#ff000000" android:padding="10sp" />

Diálogo de lista com várias seleções private void exemplo_lista_multi() { CharSequence[] charsequences = new CharSequence[]{"Filmes", "Dormir","Sair"; final boolean[] checados = new boolean[charsequences.length]; AlertDialog.Builder builder = new AlertDialog.Builder(this); builder.settitle("o que você gosta?"); builder.setmultichoiceitems(charsequences, checados, new DialogInterface.OnMultiChoiceClickListener() { public void onclick(dialoginterface arg0, int arg1, boolean arg2) { checados[arg1] = arg2; ); builder.setpositivebutton("confirmar", new DialogInterface.OnClickListener() { public void onclick(dialoginterface arg0, int arg1) { StringBuilder texto = new StringBuilder("Checados: "); for (boolean ch : checados) { texto.append(ch).append("; "); Toast.makeText(TesteActivity.this, texto.tostring(), Toast.LENGTH_SHORT).show(); ); alerta = builder.create(); alerta.show();

Notifications Mensagem exibida para o usuário fora da UI normal do aplicativo. Quando o sistema emite uma notificação, ela aparece pela primeira vez como um ícone na área de notificação. Para ver os detalhes da notificação, o usuário abre a gaveta de notificação. Tanto a área de notificação e gaveta de notificação são áreas controladas pelo sistema que o usuário pode ver a qualquer momento.

Elementos de exibição Na gaveta a notificação pode aparecer em um dos dois estilos visuais, dependendo da versão e do estado da gaveta: Exibição normal A visão padrão das notificações na gaveta de notificação. Big vista é visível quando a notificação for expandida. parte do recurso de notificação expandida disponível a partir do Android 4.1.

Exibição normal Aparece em uma área que é até 64 dp de altura. Mesmo se você criar uma notificação com um estilo de Big View, aparecerá na vista normal até que seja ampliada. 1. Título de conteúdo 2. Ícone grande 3. Conteúdo de texto 4. Informações conteúdo 5. Pequeno ícone 6. Tempo em que a notificação foi emitida. Pode ser definido um valor explícito com setwhen (); o padrão é o tempo que o sistema recebeu a notificação.

Big View Exibida somente quando a notificação é expandida, o que acontece quando a notificação é no topo da gaveta da notificação, ou quando o usuário expande a notificação com um gesto. Notificações expandidos estão disponíveis a partir do Android 4.1. Mesmos elementos, exceto 7: área de detalhes

Estilos da área de detalhes Big Picture Style A área de detalhes contém um mapa de bits até 256 dp alto em sua seção de detalhes. Estilo de texto grande Exibe um bloco de texto grande na seção de detalhes. Estilo de caixa de entrada Exibe linhas de texto na seção de detalhes. Também tem as seguintes opções de conteúdo que não estão disponíveis no modo de exibição normal: Título de conteúdo Grande Permite substituir título de conteúdo da visão normal, com um título que só aparece na visualização expandida. Texto de resumo Permite adicionar uma linha de texto abaixo da área de detalhes.

Notifications Status Bar Notifications, que são aqueles alertas que aparecem na barra de status. utilizar a classe NotificationManager para enviar as notificações para o sistema. Para construir uma notificação, utilize Notification.Builder().

Criando uma notificação Você pode especificar as informações e ações de interface do usuário para uma notificação em um objeto NotificationCompat.Builder. NotificationCompat.Builder.build () retorna um objeto Notification contendo suas especificações. Para emitir a notificação, você passa a objeto para o sistema chamando NotificationManager.notify ().

Conteúdo notificação exigida Um pequeno ícone, definida pelo setsmallicon () Um título, definido pelo setcontenttitle () Texto de conteúdo, definida pelo setcontenttext ()

Ações de Notificação Embora opcionais, é preciso adicionar pelo menos uma ação à notificação. Permite aos usuários ir diretamente, a partir da notificação, para uma activity. A notificação pode fornecer várias ações. Deve ser definida a ação que é acionado quando o usuário clicar na notificação, que abre uma activity.pode-se adicionar botões para a notificação que realizam ações adicionais. Dentro de uma notificação, a ação em si é definida por um PendingIntent contendo uma Intent que inicia uma atividade em sua aplicação. Para associar o PendingIntent com um gesto, chamar o método apropriado de NotificationCompat.Builder. Por exemplo, se você quer começar a atividade, quando o usuário clica no texto de notificação na gaveta da notificação, você adiciona o PendingIntent chamando setcontentintent (). Iniciar uma atividade quando o usuário clica a notificação é o cenário de ação mais comum. É possível iniciar uma atividade quando o usuário descarta uma notificação ou pressiona um botão (4.1).

Remoção de notificações Notificações permanecem visíveis até que: O usuário descarta a notificação individualmente ou através de "Clear All" (se a notificação puder ser apagada). O usuário clica na notificação e no código foi chamado chamou setautocancel() ao criar a notificação. É chamado cancel() para um ID de uma notificação específica.também elimina notificações em curso. É chamado cancelall(), que remove todas as notificações emitidas anteriormente

Criando uma simples notificação NotificationCompat.Builder mbuilder = new NotificationCompat.Builder(this).setSmallIcon(R.drawable.notification_icon).setContentTitle("My notification").setcontenttext("hello World!"); // Cria uma intent explicita para uma Activity da aplicação Intent resultintent = new Intent(this, ResultActivity.class); // O Objeto construtor da pilha vai conter retorno artificial // ao inicio da Activity.Isso garante que a navegação de // retorno da Activity leva para a Home de sua aplicação TaskStackBuilder stackbuilder = TaskStackBuilder.create(this); // Adiciona o retorno para Intent (mas não é a própria // Intent) stackbuilder.addparentstack(resultactivity.class);

Criando uma simples notificação // Adiciona a Intent que inicia a Activity do inicio da pilha stackbuilder.addnextintent(resultintent); PendingIntent resultpendingintent = stackbuilder.getpendingintent(0, PendingIntent.FLAG_UPDATE_CURRENT); mbuilder.setcontentintent(resultpendingintent); NotificationManager mnotificationmanager = (NotificationManager) getsystemservice(context.notification_service); // mid permite atualizar a notification depois. mnotificationmanager.notify(mid, mbuilder.build());

Aplicando o estilo Big View Para uma notificação usando o Big View, crie um NotificationCompat.Builder com as opções de exibição normais. chame Builder.setStyle () com um objeto Big View como argumento. Lembre-se que as notificações expandidas não estão disponíveis em plataformas anteriores ao Android 4.1.

Aplicando o estilo Big View NotificationCompat.Builder mbuilder = new NotificationCompat.Builder(this).setSmallIcon(R.drawable.notification_icon).setContentTitle("Event tracker").setcontenttext("events received"); NotificationCompat.InboxStyle inboxstyle = new NotificationCompat.InboxStyle(); String[] events = new String[6];... // Define um título para a caixa de entrada Big View inboxstyle.setbigcontenttitle("event tracker details:"); // Move eventos para big view for (int i=0; i < events.length; i++) { inboxstyle.addline(events[i]); // Move objeto big view style para o objeto de notificação. mbuilder.setstyle(inboxstyle);... // Edita a notification aqui.

Exercício Crie um projeto Notification contendo a activity MainActivity Crie o lay-out main.xml Crie o lay-out ntification.xml Altere o arquivos strings.xml Crie um activity NotificationActivity

main.xml <RelativeLayout xmlns:android ="http://schemas.android.com/apk/res/android" android:layout_width ="match_parent " android:layout_height ="match_parent " > <Button android:id ="@+id/create_notification_button " android:layout_width =" wrap_content " android:layout_height =" wrap_content " android:text =" @string/create_notification " android:layout_centerinparent =" true "/> </RelativeLayout >

notification.xml <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width ="match_parent" android:layout_height ="match_parent" > <TextView android:layout_width ="match_parent" android:layout_height ="wrap_content" android:layout_centerinparent ="true" android:text ="@string/notification_activity_description" android:gravity ="center_horizontal" /> </RelativeLayout>

strings.xml <resources> <string name ="app_name"> Notifications </string> <string name ="menu_settings">settings </string> <string name ="title_activity_main"> MainActivity </string> <string name ="new_notification">nova notificação </string> <string name ="notification_content"> Conteúdo descrevendo a notificação.</string> <string name ="create_notification">criar notificação </string> <string name ="notification_activity_description"> Esta tela foi aberta a partir da notificação.</string> </resources >

MainActivity.java public class MainActivity extends Activity { @Override public void oncreate (Bundle savedinstancestate) { super.oncreate (savedinstancestate); setcontentview (R.layout.main); Button createnotification = (Button) findviewbyid (R.id.create_notification_button); createnotification.setonclicklistener (new OnClickListener () { @Override public void onclick (View v) { Intent intent = new Intent (MainActivity.this, NotificationActivity.class); PendingIntent pendingintent = PendingIntent.getActivity (MainActivity.this, 0, intent, 0); Notification notification = new Notification.Builder (MainActivity.this).setContentTitle(getString(R.string.new_notification)).setContentText(getString (R.string.notification_content)).setSmallIcon (R.drawable.ic_action_search).setContentIntent(pendingIntent).getNotification(); notification.flags = Notification.FLAG_AUTO_CANCEL; NotificationManager notificationmanager = (NotificationManager) getsystemservice (NOTIFICATION_SERVICE); notificationmanager.notify (0, notification); );

MainActivity.java public class MainActivity extends Activity { @Override public void oncreate (Bundle savedinstancestate) { super.oncreate (savedinstancestate); setcontentview (R.layout.main); Button createnotification = (Button) findviewbyid (R.id.create_notification_button); createnotification.setonclicklistener (new OnClickListener () { @Override public void onclick (View v) { Intent intent = new Intent (MainActivity.this, NotificationActivity.class); PendingIntent pendingintent = PendingIntent.getActivity (MainActivity.this, 0, intent, 0); Notification notification = new Notification.Builder (MainActivity.this).setContentTitle(getString(R.string.new_notification)).setContentText(getString (R.string.notification_content)).setSmallIcon (R.drawable.ic_action_search).setContentIntent(pendingIntent).getNotification(); notification.flags = Notification.FLAG_AUTO_CANCEL ; NotificationManager notificationmanager = (NotificationManager) getsystemservice (NOTIFICATION_SERVICE); notificationmanager.notify (0, notification); );

notificationactivity.java public class NotificationActivity extends Activity { @Override protected void oncreate (Bundle savedinstancestate) { super.oncreate (savedinstancestate); setcontentview (R.layout.Notification);