Como tocar áudio em wearables

Mantenha tudo organizado com as coleções Salve e categorize o conteúdo com base nas suas preferências.

Este guia descreve como apps no Wear OS podem usar APIs conhecidas do Android para tocar áudio.

Detectar dispositivos de áudio

Os apps para Wear OS precisam primeiro detectar se o dispositivo wearable tem uma saída de áudio adequada. No exemplo abaixo, o app usa o método getDevices() com o valor de FEATURE_AUDIO_OUTPUT para enumerar todas as saídas de áudio.

Os desenvolvedores podem esperar que os wearables tenham uma ou as duas saídas de áudio abaixo disponíveis:

AudioManager audioManager = (AudioManager) context.getSystemService(Context.AUDIO_SERVICE);

fun audioOutputAvailable(type: Int): Boolean {
    if (!packageManager.hasSystemFeature(PackageManager.FEATURE_AUDIO_OUTPUT)) {
        return false
    }
    return audioManager.getDevices(AudioManager.GET_DEVICES_OUTPUTS).any { it.type == type }
}

audioOutputAvailable(AudioDeviceInfo.TYPE_BUILTIN_SPEAKER) // true if the device has a speaker
audioOutputAvailable(AudioDeviceInfo.TYPE_BLUETOOTH_A2DP) // true if a bluetooth headset is connected

Aguardar um fone de ouvido Bluetooth

Ao contrário dos alto-falantes integrados, que estão sempre disponíveis se forem parte do dispositivo, um fone de ouvido Bluetooth pode ser pareado ou não pareado enquanto o app está em execução. Um app pode registrar um callback para detectar quando isso acontece usando registerAudioDeviceCallback.

audioManager.registerAudioDeviceCallback(object : AudioDeviceCallback() {
    override fun onAudioDevicesAdded(addedDevices: Array<out AudioDeviceInfo>?) {
        super.onAudioDevicesAdded(addedDevices)
        if (audioOutputAvailable(AudioDeviceInfo.TYPE_BLUETOOTH_A2DP)) {
            // a bluetooth headset has just been connected
        }
    }
    override fun onAudioDevicesRemoved(removedDevices: Array<out AudioDeviceInfo>?) {
        super.onAudioDevicesRemoved(removedDevices)
        if (!audioOutputAvailable(AudioDeviceInfo.TYPE_BLUETOOTH_A2DP)) {
            // a bluetooth headset is no longer connected
        }
    }
}, null)

Solicitar que o usuário conecte um fone de ouvido

Se o app exigir que um fone de ouvido seja conectado para continuar, em vez de mostrar uma mensagem de erro, ofereça a opção de direcionar o usuário diretamente às configurações do Bluetooth para facilitar a conexão. Para isso, envie uma intent com ACTION_BLUETOOTH_SETTINGS.

val intent = with (Intent(Settings.ACTION_BLUETOOTH_SETTINGS)) {
    addFlags(Intent.FLAG_ACTIVITY_NEW_TASK or Intent.FLAG_ACTIVITY_CLEAR_TASK)
    putExtra("EXTRA_CONNECTION_ONLY", true)
    putExtra("EXTRA_CLOSE_ON_CONNECT", true)
    putExtra("android.bluetooth.devicepicker.extra.FILTER_TYPE", 1)
}
startActivity(intent)

Tocar o áudio

Depois de detectar uma saída de áudio adequada, o processo para tocar áudio no Wear OS é o mesmo usado em dispositivos móveis ou outros dispositivos. Para saber mais, consulte Visão geral do MediaPlayer. Para facilitar o acesso a recursos mais avançados, como streaming e download de mídia, use o ExoPlayer.

Usar alto-falantes

Alguns dispositivos Wear OS incluem alto-falantes, o que permite incorporar som nos apps e oferecer uma dimensão extra de interação com o usuário. Um dispositivo Wear OS com alto-falantes pode acionar alarmes de relógio ou timers completos com notificações de áudio. Apps fitness também podem usar o alto-falante para fornecer instruções de exercício.

Confira os recursos relacionados abaixo: