Ce guide explique comment les applications sous Wear OS peuvent utiliser des API Android bien connues pour lire du contenu audio.
Détecter les appareils audio
Une application Wear OS doit d'abord détecter si l'accessoire connecté est pourvu d'une sortie audio appropriée. Les développeurs peuvent s'attendre à ce que les accessoires connectés disposent d'une ou des deux sorties audio suivantes :
AudioDeviceInfo.TYPE_BUILTIN_SPEAKER
: sur les appareils équipés d'un haut-parleur intégréAudioDeviceInfo.TYPE_BLUETOOTH_A2DP
: lorsqu'un casque Bluetooth est associé et connecté
Dans l'exemple suivant, l'application utilise la méthode getDevices()
avec la valeur FEATURE_AUDIO_OUTPUT
pour énumérer toutes les sorties 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
Attendre la connexion d'un casque Bluetooth
Contrairement aux haut-parleurs intégrés, qui sont toujours disponibles si l'appareil en est équipé, un casque Bluetooth peut être associé ou dissocié pendant l'exécution d'une l'application. Votre application peut enregistrer un rappel pour détecter cet événement à l'aide de 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)
Demander à l'utilisateur de connecter un casque
Si l'application a besoin d'un casque pour continuer, au lieu d'afficher un message d'erreur, vous pouvez proposer à l'utilisateur d'accéder directement aux paramètres Bluetooth pour faciliter la connexion. Pour ce faire, envoyez un intent avec 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)
Lire du contenu audio
Une fois que vous avez détecté une sortie audio appropriée, le processus de lecture audio sur Wear OS est le même que sur un appareil mobile ou sur d'autres appareils. Pour en savoir plus, consultez Présentation de MediaPlayer. Pour accéder plus facilement à des fonctionnalités plus avancées, comme la lecture en streaming et le téléchargement de contenus multimédias, utilisez ExoPlayer. Veillez à suivre les bonnes pratiques pour les applications audio, comme Gérer la priorité audio.
.Utiliser des haut-parleurs
Certains appareils Wear OS sont équipés de haut-parleurs. Activez les haut-parleurs pour intégrer du son dans les applications pour ces appareils et offrir une dimension d'interaction supplémentaire avec l'utilisateur. Par exemple, un appareil Wear OS équipé d'un haut-parleur peut déclencher une alarme ou un minuteur, avec une notification audio. Les applications de fitness peuvent également utiliser le haut-parleur pour fournir des instructions sur un exercice.
Pour en savoir plus, consultez WearSpeakerSample.