Giyilebilir cihazlarda ses çal

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:

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:

  1. setSuppressPlaybackOnUnsuitableÇıktı(true) komutunu çağırın ExoPlayer örneğini oluştururken:

      ExoPlayer exoplayer = ExoPlayer.Builder(context)
              .setAudioAttributes(...)
              .setSuppressPlaybackWhenUnsuitableOutput(true)
              // ...
              .build()
          
  2. Kaydederek oynatmayı engelleme etkinliğine tepki verin. WearUnsuitableÇıktı OynatmaSuppressionÇözümleme Çözümleyicisi olarak tanımlar:

  3.   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