Bu kılavuzda, Wear OS'teki uygulamaların ses çalmak için bilinen Android API'lerini nasıl kullanabileceği açıklanmaktadır.
Ses sistemlerini algıla
Wear OS uygulaması öncelikle giyilebilir cihazda uygun bir ses çıkışının olup olmadığını algılamalıdır. Geliştiriciler, giyilebilir cihazlarda aşağıdaki ses çıkışlarından en az birine sahip olmasını bekleyebilir:
AudioDeviceInfo.TYPE_BUILTIN_SPEAKER
: yerleşik hoparlör bulunan cihazlardaAudioDeviceInfo.TYPE_BLUETOOTH_A2DP
: Bluetooth mikrofonlu kulaklık eşlenip bağlandığındaAudioDeviceInfo.TYPE_BLE_BROADCAST
: Bluetooth Düşük Enerji (BDE) yayın grubu cihazı eşlenip bağlandığındaAudioDeviceInfo.TYPE_BLE_HEADSET
: BDE mikrofonlu kulaklık eşlenip bağlandığındaAudioDeviceInfo.TYPE_BLE_SPEAKER
: BDE hoparlör eşlenip bağlandığında
Aşağıdaki örnekte, uygulama
getDevices()
.
tüm ses öğelerini numaralandırmak için FEATURE_AUDIO_OUTPUT
değeriyle bağlantılı şekilde
çıktı.
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)
En iyi kullanıcı deneyimini sunmak için uygulamanızın medyayı yalnızca Bluetooth olduğunda oynattığından emin olun. kulaklığın veya hoparlörlerin kol saatine bağlı olduğundan emin olun.
Ses çıkışı için tercih ettiğiniz cihazı seçin
Uygulamanızın kullanım alanına ve sesin, uygulamanızın temel deneyimi açısından önemine bağlı olarak, kullanıcıların uygulamanızın ses çıkışıyla nasıl etkileşim kurmalarını istediğinizi seçin.
Kullanıcının medya çıkış cihazını seçmesine izin ver
Sistem, Wear OS 5'ten başlayarak kullanıcıların istedikleri cihazda medya oynatmalı ve oynatılan medyayla ilgili bilgiler gösterilmelidir içerik.
Uygulamanız, istediğinizde bağlı bir Bluetooth mikrofonlu kulaklık olmadığını algılarsa
Wear OS 5 veya sonraki sürümleri çalıştıran cihazlarda sesli çalma imkanı sağlamak için,
kullanıcıyı doğrudan medya çıkış değiştiricisine bağlayabilirsiniz. Şunu desteklemeyen cihazlarda:
medya çıkış değiştirici, ACTION_BLUETOOTH_SETTINGS
amacını çağırın
kullanıcıyı sistem ayarlarındaki Bluetooth sayfasına yönlendiren işlem.
Horology kitaplığının bir parçası olan launchOutputSelection()
yöntemi
, kullanıcının medya çıkış cihazını seçmesine nasıl izin vereceğini gösterir.
Bluetooth kulaklık
Cihazda varsa her zaman kullanılabilen yerleşik hoparlörlerin aksine, Bluetooth mikrofonlu kulaklık
Uygulama çalışırken eşlenebilir veya eşleştirmesi kaldırılabilir. Uygulama, devam etmek için mikrofonlu kulaklık gerektiriyorsa
ne zaman olduğunu algılamak için bir geri çağırma kaydedin
Kullanıcı bir Bluetooth mikrofonlu kulaklığını bağlamak veya bağlantısını kesmek için
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)
Uygulamanız, ses sistemi sağlamak istediğinizde Bluetooth mikrofonlu kulaklık olmadığını algılarsa
bir hata mesajı göstermeyin. Bunun yerine, kullanıcıyı doğrudan Bluetooth ayarlarına yönlendirmeyi teklif edin
buluşturmaya çalışıyoruz. Bu işlem,
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)
Hoparlörler
Çoğu Wear OS cihazın hoparlörü vardır. Uygulamanız, kullanıcıların e-posta ve sohbet gibi kullanıcıya ekstra bir etkileşim boyutu sunmak için hoparlörlerden yararlanabilirsiniz. Örneğin, Örneğin, hoparlör özellikli bir Wear OS cihazı, saati veya zamanlayıcıyı tetikleyebilir ve sesli bildirim ve fitness uygulamaları, egzersiz talimatları sağlamak için hoparlörü kullanabilir.
Not: Hoparlörler, medyayı dinlemek için en iyi deneyimi sunmaz. bu amaçla tasarlanmamışlardır.
Daha fazla bilgi için Ayrıntılı bilgi için WearSpeakerSample'ı ziyaret edin.
Sesi çal
Uygun bir ses çıkışı belirleyip seçtikten sonra Wear OS'te ses çalma işlemi aynı şekilde yapılır mobil cihazlarda veya diğer cihazlarda olduğu gibi. Daha fazla bilgi için MediaPlayer'a genel bakış konusuna bakın. Medya akışı ve indirme gibi daha gelişmiş özelliklere daha kolay erişmek için ExoPlayer'a gidin. Ses uygulamaları için Ses odağını yönetme gibi en iyi uygulamaları izlediğinizden emin olun.
Hoparlörler üzerinden istenmeyen medya oynatılmasını önleme
Medya uygulamaları, uygulamanın yanlışlıkla içerik oynatmadığından emin olmak için aşağıdaki yönergeleri uygulayabilir yerleşik saat hoparlörlerindeki medya içeriğidir. Yönlendirme, oyuncuya göre değişiklik gösterir yardımcı olur.
ExoPlayer
Uygulamanız ExoPlayer kullanıyorsa:
setSuppressPlaybackOnUnsuitableÇıktı(true) komutunu çağırın ExoPlayer örneğini oluştururken:
ExoPlayer exoplayer = ExoPlayer.Builder(context) .setAudioAttributes(...) .setSuppressPlaybackWhenUnsuitableOutput(true) // ... .build()
-
Kaydederek oynatmayı engelleme etkinliğine tepki verin. WearUnsuitableÇıktı OynatmaSuppressionÇözümleme Çözümleyicisi olarak tanımlar:
exoPlayer.addListener(WearUnsuitableOutputPlaybackSuppressionResolverListener(context))
Horoloji Medyası araç seti
Horologist MediaToolkit, yerleşik kol saati hoparlörlerinde istenmeyen medya oynatmayı önleyecek bir mantık içerir.
Diğer medya oynatıcılar
- Kol saatine mikrofonlu kulaklık veya harici hoparlör gibi uygun bir çıkış cihazı bağlanmadıysa medya ses oynatmasının başlamadığından emin olun. Medya uygulamalarına uygun çıkış cihazları için aşağıdaki listeye bakın:
- AudioManager, uygulamanıza harici bir ses çıkış cihazının saatle bağlantısının kesildiğini bildirirse çalmayı duraklatın.
- Kullanıcı harici bir ses cihazı bağlamadan medya oynatmayı başlatmayı denediğinde, kullanıcıdan bu tür bir cihazı kol saatine bağlamasını isteyin.