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. 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.
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)
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 en el dispositivo, es posible que los auriculares Bluetooth se vinculen como no a él mientras se ejecuta tu app. Una app puede registrar una devolución de llamada para detectar cuándo sucede 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 a fin de 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)
Reproduce 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 el de un dispositivo móvil o de cualquier otro tipo. 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, considera usar ExoPlayer.
Usa las bocinas
Algunos dispositivos Wear OS incluyen bocinas, lo que permite incorporar sonido a las apps y ofrecer una dimensión adicional de interacción con el usuario. Un dispositivo Wear OS con bocina incorporada podría activar una alarma o cronómetro junto con una notificación de audio. Las apps de fitness también pueden usar la bocina para proporcionar instrucciones de ejercicio.
Consulta los siguientes recursos relacionados: