En esta guía, se describe el modo en que las apps en Wear OS pueden usar las APIs de Android conocidas para reproducir audio.
Detecta dispositivos de audio
Una app para Wear OS primero debe detectar si el dispositivo wearable tiene una salida de audio adecuada. Los desarrolladores pueden esperar que los wearables tengan una de las siguientes salidas de audio disponibles o ambas:
AudioDeviceInfo.TYPE_BUILTIN_SPEAKER
(en dispositivos que tienen una bocina integrada)AudioDeviceInfo.TYPE_BLUETOOTH_A2DP
(cuando se vinculan y se conectan auriculares Bluetooth)
En el siguiente ejemplo, la app usa el método getDevices()
junto con el valor de FEATURE_AUDIO_OUTPUT
para enumerar todas las salidas de audio.
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
Espera a que se conecten los auriculares Bluetooth
A diferencia de las bocinas integradas, que siempre están disponibles si el dispositivo cuenta con ellas, los auriculares Bluetooth se pueden vincular o desvincular mientras se ejecuta una app. Tu app puede registrar una devolución de llamada para detectar cuándo sucede esto con 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)
Solicítale al usuario que conecte los auriculares
Si la app requiere auriculares para continuar, en lugar de mostrar un mensaje de error, directamente muéstrale al usuario la configuración de Bluetooth para facilitar la conexión. Para ello, se envía un intent con 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)
Cómo reproducir audio
Una vez que se detecta una salida de audio adecuada, el proceso de reproducción de audio en Wear OS es el mismo que en el dispositivo móvil o algún otro dispositivo. Para obtener más información, consulta la Descripción general de MediaPlayer. Para facilitar el acceso a funciones más avanzadas, como la transmisión y la descarga de contenido multimedia, utiliza ExoPlayer. Asegúrate de seguir las prácticas recomendadas para apps de audio, por ejemplo, Cómo administrar el foco de audio
.Usa las bocinas
Algunos dispositivos Wear OS incluyen bocinas. Habilita las bocinas para que incorporen sonido a las apps de esos dispositivos y ofrezcan una dimensión adicional de participación con el usuario. Por ejemplo, un dispositivo Wear OS con bocina incorporada podría activar un reloj o una alarma de cronómetro, con notificaciones de audio, y las apps de fitness podrían usar la bocina para proporcionar instrucciones de ejercicio.
Consulta WearSpeakerSample para obtener más información.