Olá povo,
O CESAR.EDU está com um projeto chamado TechVideo que tem o objetivo de disseminar o conhecimento técnico da instituição com a comunidade. Com isso, você ficará por dentro dos assuntos mais atuais do mercado com os professores do CESAR.EDU que também são colaboradores do C.E.S.A.R..
O primeiro vídeo foi comigo, e o assunto é "Android Wear", o sistema operacional do Google para dispositivos "vestíveis".
Quem não viu meus outros posts sobre o Android Wear, pode clicar aqui, aqui e aqui.
4br4ç05,
nglauber
Mostrando postagens com marcador Notification. Mostrar todas as postagens
Mostrando postagens com marcador Notification. Mostrar todas as postagens
terça-feira, 12 de agosto de 2014
terça-feira, 8 de julho de 2014
Android Wear - Notifications
Olá povo,
No post anterior, falamos de como configurar o ambiente para iniciar um emulador do Android Wear e como conecta-lo ao smartphone/tablet. Também vimos que as notificações disparadas nos handhelds (smatphones/tablets) ficam sincronizadas no smartwatch. Nesse post vou mostrar como se comportam as notificações nos Android Wear.
Crie um novo projeto no Android Studio 0.8 (ou superior), defina o nome do projeto e seu respectivo pacote e clique em Next. A janela abaixo será exibida, então marque apenas a opção "Phone and Tablet" (spoiler: o próximo post será sobre apps exclusivas para wearables).
Adicione uma Activity em branco ao projeto e conclua o assistente.
Nosso projeto será simples, terá uma Activity principal e outra (DetalheActivity) que receberá uma mensagem vinda do relógio. Na MainActivity, adicione os dois métodos abaixo que usaremos mais adiante.
Como podemos ver, não fizemos nada de especial do wear, então se você já fez seu aplicativo com notificações, elas estarão integradas com o wearable automaticamente (se eles estiverem pareados, óbvio). Outra coisa que podemos fazer em handhelds e que é ótimo nos relógios são as ações. Vamos ver como adicionar uma...
Ao clicarmos nessa ação, o aplicativos de mapa (Google Maps ou Waze, por exemplo) será iniciado no smartphone/tablet. Esse exemplo também não usa nada especial do Android Wear :(
Então vou deixar de enrolação e mostrar algo que só funcione no wear: responder uma notificação a partir do relógio como é feito no Gmail.
Ao clicarmos na ação, a tela do comando de voz será exibida, então podemos falar nossa resposta (ou digitar se você estiver usando o emulador).
Como podemos observar, disparamos uma Intent para DetalheActivity (que você deve criar), e nela podemos capturar o texto falado no relógio utilizando o código abaixo.
Mas além de ações, podemos adicionar páginas que podem ser visualizadas fazendo o swipe para esquerda.


Assim, podemos ter um conteúdo maior na notificação utilizando páginas.
É isso aí povo. Nós como desenvolvedores agora temos que pensar que as notificações disparadas no seu aparelho também aparecerão nos smartwatches. Então não perca a oportunidade de fazer sua aplicação funcionar bem também nos relógios com Android Wear.
Qualquer dúvida, deixem seus comentários.
4br4ç05,
nglauber
Fonte: http://developer.android.com/training/wearables/notifications/index.html
No post anterior, falamos de como configurar o ambiente para iniciar um emulador do Android Wear e como conecta-lo ao smartphone/tablet. Também vimos que as notificações disparadas nos handhelds (smatphones/tablets) ficam sincronizadas no smartwatch. Nesse post vou mostrar como se comportam as notificações nos Android Wear.
Crie um novo projeto no Android Studio 0.8 (ou superior), defina o nome do projeto e seu respectivo pacote e clique em Next. A janela abaixo será exibida, então marque apenas a opção "Phone and Tablet" (spoiler: o próximo post será sobre apps exclusivas para wearables).
Adicione uma Activity em branco ao projeto e conclua o assistente.
Nosso projeto será simples, terá uma Activity principal e outra (DetalheActivity) que receberá uma mensagem vinda do relógio. Na MainActivity, adicione os dois métodos abaixo que usaremos mais adiante.
private NotificationCompat.Builder criarNotificacao(String title, String text) { return new NotificationCompat.Builder(this) .setSmallIcon(R.drawable.ic_like) .setContentTitle(title) .setContentText(text) .setAutoCancel(true) .setDefaults(NotificationCompat.DEFAULT_ALL); } private void dispararNotificacao( Notification notification, int id) { NotificationManagerCompat notificationManager = NotificationManagerCompat.from(this); notificationManager.notify(id, notification); }Nada especial nesses dois métodos. O primeiro cria objeto NotificationCompat.Builder que constrói uma notificação com as propriedades mais comuns: título, texto, ícone, cor do led, som e vibração padrão (isso é feito na chamada ao setDefaults). O segundo dispara a notificação usando a classe NotificationManagerCompat. Mas o importante aqui é que essa classe está na versão 20 da API de compatibilidade, então certifique-se de que no seu arquivo build.gradle esteja com o appcompat-v7:20. Outra detalhe é que se você não estiver rodando no emulador do Android L, use o compileSdkVersion com o valor 'android-19' conforme abaixo.
apply plugin: 'com.android.application' android { compileSdkVersion 'android-19' buildToolsVersion "20.0.0" defaultConfig { applicationId "nglauber.android.testewear" minSdkVersion 10 targetSdkVersion 19 versionCode 1 versionName "1.0" } buildTypes { release { runProguard false proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' } } } dependencies { compile fileTree(dir: 'libs', include: ['*.jar']) compile 'com.android.support:appcompat-v7:20.+' }Então se dispararmos uma notificação simples podemos utilizar o método abaixo.
private void notificacaoSimples() { Intent viewIntent = new Intent(this, MyActivity.class); PendingIntent viewPendingIntent = PendingIntent.getActivity( this, 0, viewIntent, 0); NotificationCompat.Builder notificationBuilder = criarNotificacao("Título", "Texto") .setContentIntent(viewPendingIntent); dispararNotificacao( notificationBuilder.build(), 1); }A notificação aparecerá no handheld e no relógio que ficará como abaixo.
Como podemos ver, não fizemos nada de especial do wear, então se você já fez seu aplicativo com notificações, elas estarão integradas com o wearable automaticamente (se eles estiverem pareados, óbvio). Outra coisa que podemos fazer em handhelds e que é ótimo nos relógios são as ações. Vamos ver como adicionar uma...
private void notificacaoComAcao() { Intent mapIntent = new Intent(Intent.ACTION_VIEW); Uri geoUri = Uri.parse( "geo:0,0?q=" + Uri.encode("Av.Caxangá")); mapIntent.setData(geoUri); PendingIntent mapPendingIntent = PendingIntent.getActivity( this, 0, mapIntent, 0); NotificationCompat.Builder notificationBuilder = criarNotificacao("Localização", "Av. Caxangá") .setContentIntent(mapPendingIntent) .addAction(R.drawable.ic_map, "Abrir mapa", mapPendingIntent); dispararNotificacao( notificationBuilder.build(), 1); }Uma notificação similar a anterior será exibida no relógio, mas se fizermos o swipe para esquerda, veremos essa ação.
Ao clicarmos nessa ação, o aplicativos de mapa (Google Maps ou Waze, por exemplo) será iniciado no smartphone/tablet. Esse exemplo também não usa nada especial do Android Wear :(
Então vou deixar de enrolação e mostrar algo que só funcione no wear: responder uma notificação a partir do relógio como é feito no Gmail.
private void notificacaoComResposta() { RemoteInput remoteInput = new RemoteInput.Builder( DetalheActivity.EXTRA_VOICE_REPLY) .setLabel("Diga a resposta") .build(); Intent replyIntent = new Intent( this, DetalheActivity.class); PendingIntent replyPendingIntent = PendingIntent.getActivity( this, 0, replyIntent, PendingIntent.FLAG_UPDATE_CURRENT); NotificationCompat.Action action = new NotificationCompat.Action.Builder( R.drawable.ic_reply, "Responder", replyPendingIntent) .addRemoteInput(remoteInput) .build(); NotificationCompat.WearableExtender nwe = new NotificationCompat.WearableExtender(); Notification notification = criarNotificacao( "Título", "Passe a página p/ responder") .extend(nwe.addAction(action)) .build(); dispararNotificacao(notification, 1); }Quando a notificação for disparada, ao deslizar para a esquerda, teremos a ação de responder.
Ao clicarmos na ação, a tela do comando de voz será exibida, então podemos falar nossa resposta (ou digitar se você estiver usando o emulador).
Como podemos observar, disparamos uma Intent para DetalheActivity (que você deve criar), e nela podemos capturar o texto falado no relógio utilizando o código abaixo.
private CharSequence obterTextoFalado(Intent intent) { Bundle remoteInput = RemoteInput .getResultsFromIntent(intent); if (remoteInput != null) { return remoteInput .getCharSequence(EXTRA_VOICE_REPLY); } return null; }Muito simples não? Espero que todos os aplicativos de troca de mensagens (como WhatsApp) implementem isso, pois é muito legal! :)
Mas além de ações, podemos adicionar páginas que podem ser visualizadas fazendo o swipe para esquerda.
private void notificacaoComPaginas() { Intent viewIntent = new Intent( this, MyActivity.class); PendingIntent viewPendingIntent = PendingIntent.getActivity( this, 0, viewIntent, 0); NotificationCompat.Builder nb = criarNotificacao("Título", "Página1") .setContentIntent(viewPendingIntent); NotificationCompat.BigTextStyle pagesStyle = new NotificationCompat.BigTextStyle() .setBigContentTitle("Página 2") .bigText("Um monte de texto aqui..."); Notification secondPageNotification = new NotificationCompat.Builder(this) .setStyle(secondPageStyle) .build(); Notification twoPageNotification = new NotificationCompat.WearableExtender() .addPage(pagesStyle) .extend(nb) .build(); dispararNotificacao( twoPageNotification, 1); }


Assim, podemos ter um conteúdo maior na notificação utilizando páginas.
É isso aí povo. Nós como desenvolvedores agora temos que pensar que as notificações disparadas no seu aparelho também aparecerão nos smartwatches. Então não perca a oportunidade de fazer sua aplicação funcionar bem também nos relógios com Android Wear.
Qualquer dúvida, deixem seus comentários.
4br4ç05,
nglauber
Fonte: http://developer.android.com/training/wearables/notifications/index.html
Assinar:
Postagens (Atom)