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:
AudioDeviceInfo.TYPE_BUILTIN_SPEAKER
, em dispositivos com um alto-falante integradoAudioDeviceInfo.TYPE_BLUETOOTH_A2DP
, quando um fone de ouvido Bluetooth estiver pareado e conectado
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:
- Exemplo de alto-falante do Wear OS (link em inglês)