The Android Developer Challenge is back! Submit your idea before December 2.

Criar layouts personalizados para o Wear

Com o Wear OS by Google, criar layouts para um smartwatch é semelhante a criá-los para um smartphone, exceto pelo fato de que você precisa levar em conta o tamanho e a nitidez da tela ao projetá-los. Não espere uma boa experiência após fazer a portabilidade da funcionalidade e da IU de um app para smartphones para um smartwatch.

Crie layouts personalizados apenas quando necessário. Leia as diretrizes Projetar para o Wear OS para saber informações sobre como criar ótimos apps para smartwatches.

Criar notificações personalizadas

Em geral, você precisa criar notificações no smartphone e deixar que elas sejam sincronizadas automaticamente com o wearable. Isso permite criar as notificações uma só vez e fazer com que elas apareçam em muitos tipos de dispositivos (não apenas smartwatches, mas no Android Auto e Android TV) sem ter que recriá-las para diferentes formatos.

Se os estilos de notificação padrão não funcionam para você (como NotificationCompat.BigTextStyle ou NotificationCompat.InboxStyle), é possível exibir uma atividade com layout personalizado. Você só pode criar e emitir notificações personalizadas no smartwatch, e o sistema não sincroniza essas notificações com o smartphone.

Observação: ao criar notificações personalizadas no smartwatch, é possível usar as APIs de notificação padrão (API de nível 20) em vez da Biblioteca de Suporte.

Para criar uma notificação personalizada:

  1. Crie um layout e o defina como a visualização de conteúdo para a atividade que você quer que seja exibida.

    Kotlin

        override fun onCreate(savedInstanceState: Bundle?) {
            ...
            setContentView(R.layout.notification_activity)
        }
        

    Java

        public void onCreate(Bundle bundle){
            ...
            setContentView(R.layout.notification_activity);
        }
        
  2. Defina as propriedades necessárias para a atividade no manifesto do Android a fim de permitir que a atividade seja exibida no processo do fluxo de contexto do smartwatch. Você precisa declarar que a atividade é exportável, é incorporável e tem uma afinidade de tarefa vazia. Também recomendamos definir o tema como Theme.DeviceDefault.Light. Por exemplo:
        <activity android:name="com.example.MyDisplayActivity"
            android:exported="true"
            android:allowEmbedded="true"
            android:taskAffinity=""
            android:theme="@android:style/Theme.DeviceDefault.Light" />
        
  3. Crie um PendingIntent para a atividade que você quer exibir. Por exemplo:

    Kotlin

        val notificationPendingIntent: PendingIntent =
                Intent(this, NotificationActivity::class.java).let { notificationIntent ->
                    PendingIntent.getActivity(
                            this,
                            0,
                            notificationIntent,
                            PendingIntent.FLAG_UPDATE_CURRENT
                    )
                }
        

    Java

        Intent notificationIntent = new Intent(this, NotificationActivity.class);
        PendingIntent notificationPendingIntent = PendingIntent.getActivity(
                this, 0, notificationIntent, PendingIntent.FLAG_UPDATE_CURRENT);
        
  4. Crie uma Notification e chame setDisplayIntent() fornecendo o PendingIntent. O sistema usa esse PendingIntent para iniciar a atividade quando os usuários veem sua notificação.
  5. Emita a notificação usando o método notify().

    Observação: no Wear 1.x, quando uma notificação é exibida na tela inicial, o sistema a exibe com um modelo padrão gerado a partir dos dados semânticos da notificação. Esse modelo funciona bem em todos os mostradores de relógio. Assim, quando os usuários deslizarem a notificação para cima, eles verão a atividade personalizada para a notificação.

Criar layouts com a Biblioteca de IUs do Wear

A Biblioteca de IUs do Wear é incluída automaticamente quando você cria seu app para smartwatches com o Android Studio Project Wizard. Você também pode adicionar essa biblioteca ao arquivo build.gradle com esta declaração de dependência:

    dependencies {
        compile fileTree(dir: 'libs', include: ['*.jar'])
        compile 'com.android.support:wear:26.0.0'
        compile 'com.google.android.gms:play-services-wearable:+'
    }
    

Essa biblioteca ajuda a criar IUs projetadas para smartwatches. Para mais informações, consulte Criar IUs personalizadas para dispositivos Wear.

Aqui estão algumas das classes principais:

BoxInsetLayout
Um objeto FrameLayout que reconhece o formato da tela e pode encaixar os filhos dele no quadrado central de uma tela redonda.
ConfirmationActivity
Uma atividade que exibe animações de confirmação depois que o usuário conclui uma ação.
AnimationSet
Um grupo de animações que precisam ser executadas juntas.
CircularProgressLayout
Um layout que fornece um timer de contagem regressiva circular em torno de uma visualização filha. Normalmente, usado como um timer automático para confirmar uma operação depois de um curto período.
SnapHelper
SnapHelper é compatível com ajustes para um objeto RecyclerView.
PagerSnapHelper
Implementação da instância SnapHelper que é compatível com ajustes do estilo de paginação na orientação vertical ou horizontal.
AlertDialog
Uma subclasse de Dialog que pode exibir um, dois ou três botões.
ProgressBar
Exibe uma barra ao usuário, representando o quanto a operação progrediu. O aplicativo pode mudar o nível de progresso modificando o comprimento da barra à medida que avança.
WearableRecyclerView
Implementação específica para wearables da classe RecyclerView, usada para exibir listas roláveis de itens em dispositivos quadrados e redondos.

Referência da API Wear UI Library

A documentação de referência explica como usar cada widget de IU em detalhes. Leia a documentação de referência da API Wear para saber mais informações sobre as classes acima.

Observação: recomendamos o uso do Android Studio para o desenvolvimento para Wear OS, uma vez que ele oferece configuração de projetos, inclusão de bibliotecas e conveniências de empacotamento.