In diesem Leitfaden wird beschrieben, wie Apps unter Wear OS bekannte Android-APIs für die Audiowiedergabe verwenden können.
Audiogeräte erkennen
Zuerst muss eine Wear OS-App erkennen, ob das Wearable über eine geeignete Audioausgabe verfügt. Entwickler können davon ausgehen, dass Wearables mindestens eine der folgenden Audioausgaben haben:
AudioDeviceInfo.TYPE_BUILTIN_SPEAKER
: auf Geräten mit integriertem LautsprecherAudioDeviceInfo.TYPE_BLUETOOTH_A2DP
: Ein Bluetooth-Headset gekoppelt und verbundenAudioDeviceInfo.TYPE_BLE_BROADCAST
: Ein BLE- (Bluetooth Low Energy)-Broadcast-Gruppengerät ist gekoppelt und verbunden.AudioDeviceInfo.TYPE_BLE_HEADSET
: Ein BLE-Headset wurde gekoppelt und verbunden.AudioDeviceInfo.TYPE_BLE_SPEAKER
: Ein BLE-Lautsprecher ist gekoppelt und verbunden.
Im folgenden Beispiel verwendet die App die Methode
getDevices()
Methode in Verbindung mit dem Wert von FEATURE_AUDIO_OUTPUT
zur Aufzählung aller Audiodateien
Ausgaben.
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 } } // True if the device has a speaker audioOutputAvailable(AudioDeviceInfo.TYPE_BUILTIN_SPEAKER) // True if a Bluetooth headset is paired and connected audioOutputAvailable(AudioDeviceInfo.TYPE_BLUETOOTH_A2DP) // True if a BLE broadcast group device is paired and connected audioOutputAvailable(AudioDeviceInfo.TYPE_BLE_BROADCAST) // True if a BLE headset is paired and connected audioOutputAvailable(AudioDeviceInfo.TYPE_BLE_HEADSET) // True if a BLE speaker is paired and connected audioOutputAvailable(AudioDeviceInfo.TYPE_BLE_SPEAKER)
Für eine optimale Nutzererfahrung sollte Ihre App Medien nur über Bluetooth wiedergeben Kopfhörer oder Lautsprecher mit der Uhr verbunden sind.
Bevorzugtes Gerät für Audioausgabe auswählen
Je nach Anwendungsfall und der Bedeutung von Audioinhalten für die Hauptfunktion der App Wählen Sie aus, wie Nutzer mit der Audioausgabe Ihrer App interagieren sollen.
Nutzer kann Medienausgabegerät auswählen
Ab Wear OS 5 bietet das System eine Benutzeroberfläche, auf der Nutzer auswählen können, Auf dem Gerät sollen Medien abgespielt und Informationen zu den aktuell wiedergegebenen Medien angezeigt werden. Inhalte.
Wenn die App erkennt, dass kein Bluetooth-Headset verbunden ist, obwohl Sie das möchten
für Audiowiedergabe auf Geräten mit Wear OS 5 oder höher,
direkt zum Medienausgabe-Wechsler. Auf Geräten, die den
Medienausgabe-Auswahl, rufen Sie den Intent ACTION_BLUETOOTH_SETTINGS
auf
Aktion, durch die der Nutzer zur Bluetooth-Seite in den Systemeinstellungen weitergeleitet wird.
Methode launchOutputSelection()
, Teil der Horologen-Bibliothek
auf GitHub, wie Nutzer ihr Medienausgabegerät auswählen lassen können.
Bluetooth-Headset
Im Gegensatz zu integrierten Lautsprechern, die immer verfügbar sind, sofern sie auf dem Gerät vorhanden sind, kann ein Bluetooth-Headset
kann während der Ausführung einer App gekoppelt oder entkoppelt werden. Wenn zum Fortfahren ein Headset erforderlich ist:
registrieren Sie einen Callback, um zu erkennen,
der Nutzer ein Bluetooth-Headset verbindet und trennt.
registerAudioDeviceCallback
:
audioManager.registerAudioDeviceCallback(object : AudioDeviceCallback() { override fun onAudioDevicesAdded(addedDevices: Array<out AudioDeviceInfo>?) { super.onAudioDevicesAdded(addedDevices) if (audioOutputAvailable(AudioDeviceInfo.TYPE_BLUETOOTH_A2DP) || audioOutputAvailable(AudioDeviceInfo.TYPE_BLE_BROADCAST) || audioOutputAvailable(AudioDeviceInfo.TYPE_BLE_HEADSET) || audioOutputAvailable(AudioDeviceInfo.TYPE_BLE_SPEAKER)) { // A Bluetooth or BLE device is connected and available for playback. } } override fun onAudioDevicesRemoved(removedDevices: Array<out AudioDeviceInfo>?) { super.onAudioDevicesRemoved(removedDevices) if (!(audioOutputAvailable(AudioDeviceInfo.TYPE_BLUETOOTH_A2DP)) && !(audioOutputAvailable(AudioDeviceInfo.TYPE_BLE_BROADCAST)) && !(audioOutputAvailable(AudioDeviceInfo.TYPE_BLE_HEADSET)) && !(audioOutputAvailable(AudioDeviceInfo.TYPE_BLE_SPEAKER))) { // No Bluetooth or BLE devices are connected anymore. } } }, null)
Wenn die App feststellt, dass kein Bluetooth-Headset verbunden ist, wenn Sie Audio bereitstellen möchten
keine Fehlermeldung angezeigt. Biete dem Nutzer stattdessen an, direkt zu den Bluetooth-Einstellungen zu gehen
damit sie sich leichter vernetzen können. Senden Sie dazu einen Intent mit
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)
Lautsprecher
Die meisten Wear OS-Geräte haben Lautsprecher. Wenn Ihre App einen nicht-medienbezogenen Anwendungsfall bietet, der Folgendes beinhaltet: verwenden Sie Lautsprecher, um dem Nutzer eine zusätzliche Dimension zu verleihen. Für kann ein Wear OS-Gerät mit Lautsprechern einen Wecker oder einen Timer auslösen, inklusive Audiobenachrichtigungen und Fitness-Apps verwenden möglicherweise den Lautsprecher für Trainingsanweisungen.
Hinweis : Lautsprecher bieten nicht die optimale Wiedergabequalität bei Medien. da sie nicht für diesen Zweck gedacht sind.
Weitere Informationen finden Sie in der WearSpeakerSample.
Audio wiedergeben
Sobald du eine geeignete Audioausgabe gefunden und ausgewählt hast, ist der Ablauf für die Audiowiedergabe unter Wear OS derselbe etwa auf Mobilgeräten oder anderen Geräten. Weitere Informationen finden Sie in der Übersicht zu MediaPlayer. Für einen leichteren Zugriff auf erweiterte Funktionen wie das Streamen und Herunterladen von Medien verwenden Sie ExoPlayer: Folgen Sie den Best Practices für Audio-Apps, z. B. Audiofokus verwalten.
Unbeabsichtigte Wiedergabe von Medien über Lautsprecher verhindern
Medien-Apps können der folgenden Anleitung folgen, um sicherzustellen, dass die App nicht unbeabsichtigt wiedergegeben wird Medieninhalte auf den integrierten Lautsprechern der Smartwatch. Die Anleitung richtet sich danach, mit welchem Spieler die die App verwendet.
ExoPlayer
Wenn Ihre App ExoPlayer verwendet:
Rufen Sie setSuppressPlaybackOnUnsuitableOutput(true) auf. während Sie die ExoPlayer-Instanz erstellen:
ExoPlayer exoplayer = ExoPlayer.Builder(context) .setAudioAttributes(...) .setSuppressPlaybackWhenUnsuitableOutput(true) // ... .build()
-
Reagieren Sie auf das Ereignis zur Unterdrückung der Wiedergabe, indem Sie WearUnsuitableOutputWiedergabeSuppressionResolverListener als Listener der ExoPlayer-Instanz verwenden:
exoPlayer.addListener(WearUnsuitableOutputPlaybackSuppressionResolverListener(context))
Medien-Toolkit für Horologen
Das Horologist MediaToolkit enthält bereits Logik, um eine unbeabsichtigte Medienwiedergabe auf integrierten Smartwatch-Lautsprechern zu verhindern.
Andere Mediaplayer
- Vergewissere dich, dass die Audiowiedergabe von Medien nur dann startet, wenn ein geeignetes Ausgabegerät, z. B. ein Headset oder eine Gruppe externer Lautsprecher, mit der Smartwatch verbunden ist. Geeignete Ausgabegeräte für Medien-Apps finden Sie in der folgenden Liste:
- Pausiere die Wiedergabe, wenn der AudioManager deine App darüber informiert, dass ein externes Audioausgabegerät von der Smartwatch getrennt wurde.
- Wenn der Nutzer versucht, die Medienwiedergabe zu starten, aber kein externes Audiogerät angeschlossen hat, bitte den Nutzer, ein solches Gerät mit seiner Smartwatch zu verbinden.