Unlimited Plugins, WordPress themes, videos & courses! Unlimited asset downloads! From $16.50/m
Advertisement
  1. Code
  2. Android SDK
Code

Dica rápida: Criar um Painel Personalizado de Configurações Rápidas para o Android

by
Difficulty:BeginnerLength:ShortLanguages:

Portuguese (Português) translation by Luis Drum (you can also view the original English article)

O painel de ajustes rápidos não precisa de introdução para os usuários do Android. Eles usam os controles que ele oferece para ativar e desativar serviços como Wi-Fi, Bluetooth e GPS o tempo todo. Ao longo dos anos, ele cresceu e melhorou tanto que raramente é necessário  abrir o aplicativo de Configurações  nos dias de hoje.

Até recentemente, o painel de configurações rápida foi bloqueado, e os usuários tiveram que contentar-se com uma coleção grande, mas fixa de controles — comumente conhecidos como blocos(tiles). Com o lançamento do Android Nougat, entretanto, isto não é mais o caso. Os usuários podem agora adicionar, remover e reorganizar os blocos. Além do mais, como um desenvolvedor de apps, você pode oferecer seus próprios blocos personalizados.

Nesta dica rápida, mostrarei como usar a API de Configurações Rápidas de Blocos para criar um bloco personalizado a partir do zero.

Pré-requisitos

Antes de prosseguir, certifique-se de que você tem o seguinte:

  • a versão mais recente do Android Studio
  • um telefone rodando Android Nougat ou superior

1. Noções Básicas Sobre Blocos

Basicamente, os blocos são apenas controles acessíveis que os usuários podem pressionar a qualquer momento, mesmo quando seus dispositivos estão bloqueados. Como eles podem exibir apenas um ícone e um rótulo, eles só podem ser usados para ações muito específicas, porém simples.

Cada bloco tem um estado associado a ele. Como um interruptor do mundo real, ela pode estar em um estado "ligado" ou um estado "desligado". Como você poderia esperar, um bloco que está ligado é mais brilhante do que aquele que está desligado. Embora você deva gerenciar o estado de seu bloco, a plataforma Android gerencia automaticamente seu brilho.

2. Criando um Bloco Personalizado

A fim de oferecer um bloco personalizado, seu aplicativo deve ter um serviço que estende a classe TileService.

Ao mencionar o serviço no arquivo manifest do projeto, você deve dar um rótulo e um ícone, que serão usados para criar a aparência padrão do bloco. Para dar um exemplo realista, podemos agora criar um bloco que faz o dispositivo do usuário vibrar continuamente enquanto está ligado. Seu rótulo será  Tremble, e seu ícone será vibration, que está disponível no Vector Asset Studio sob a seção Notification.

Vector Asset Studios Notification section

Em seguida, você deve adicionar um intent filter na definição do serviço para que ele possa responder à ação de android.service.quicksettings.action.QS_TILE. Para se certificar de que pode ser iniciado somente pelo sistema Android, você também deve protegê-lo com a permissão de android.permission.BIND_QUICK_SETTINGS_TILE.

Neste ponto, a definição do serviço deve parecer com esta:

Isso é todo o código que você precisa para exibir um bloco personalizado. Se você implantar seu aplicativo agora e navegar até a seção Edit do painel de configurações rápidas, você deve ser capaz de ver seu bloco na lista de blocos disponíveis.

Quick settings panels Edit section

Arraste-o e solte-o perto de um dos blocos padrão para que você possa acessá-lo mais facilmente.

Custom tile placed among default tiles

3. inicializando o Bloco

Você deve ter notado que nosso bloco é bastante brilhante. Isso é porque nós ainda não inicializamos seu estado, e o sistema pensa que está "ligado". Para alterar o bloco para que comece no estado desligado quando o usuário adicioná-lo, você deve substituir o manipulador de eventos onTileAdded() do serviço e definir a propriedade de estado do objeto qsTile para Tile.STATE_INACTIVE.

Sempre que você alterar o estado, você deve lembrar-se também chamar o método updateTile() para que a aparência do bloco seja alterada para coincidir com o estado.

Se você executar o aplicativo agora, remover o bloco e adicioná-lo de volta, você verá que ele está desligado.

Custom tile in off state

4. Adicionando um Click Handler

 Agora, nada acontece quando você clica sobre o bloco. Você deve mudar isso, substituindo o manipulador de eventos onClick() do serviço.

Dentro de manipulador de eventos, você deve ativar o bloco ligado e desligad, alternando entre os estados de Tile.STATE_ACTIVE e Tile.STATE_INACTIVE. O código a seguir mostra como fazê-lo com uma simples instrução if-else:

5. Usando Vibrator

A ação associada com o bloco deve começar assim que o bloco é ativado e parar quando ele está desligado. Portanto, além de atualizar o estado, o código que adicionamos no passo anterior contém chamadas para os métodos startVibrating() e stopVibrating().

O método startVibrating() deve usar o método vibrate() da classe Vibrator do Android para fazer o telefone vibrar. O método vibrate(), no entanto, espera uma duração fixa. Para se certificar de que o telefone vibra continuamente enquanto o bloco está ligado, você pode chamá-lo dentro de um laço, de preferência com uma curta duração.  Este laço não pode ser executado dentro da thread da UI, a thread que o serviço do bloco usa para seu manipulador de eventos de click.

De modo ideal, qualquer operação de execução demorada que você deseja que seu serviço de bloco inicie ou pare deve ser colocada dentro de uma instância de IntentService. Para manter este tutorial curto, porém, vamos fazer isso com uma corrotina por enquanto.

O código a seguir mostra como executar o laço dentro de uma corrotina criada usando o construtor de corrotinas  launch():

Embora o laço acima termine quando o usuário desligar bloco, as vibrações podem durar um segundo a mais. Para pará-lo imediatamente, você deve chamar o método cancel() do serviço Vibrator dentro do método stopVibrating().

Nosso bloco personalizado está pronto. No entanto, não vai funcionar a menos que tenha permissão para usar o vibrador do telefone. Você pode solicitá-la adicionando a seguinte linha ao arquivo manifest do seu projeto:

Se você implantar o aplicativo agora e clicar sobre o bloco personalizado, seu celular começará a vibrar. Ao clicar nele novamente, você deve ser capaz de parar as vibrações imediatamente.

Custom tile in on state

Conclusão

Se você estiver criando um aplicativo que oferece funcionalidades exclusivas ou informações que os usuários acessarão muito frequentemente, oferecer um bloco personalizado pode  melhorar dramaticamente a experiência do usuário. Neste tutorial, você viu como é fácil criar um bloco usando a API Quick Settings Tile de configurações rápidas.

Para saber mais sobre isso, consulte a documentação oficial.

E enquanto você está aqui, confira alguns dos nossos outros posts sobre o desenvolvimento de apps Android!

Advertisement
Advertisement
Advertisement
Advertisement
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.