تشغيل الصوت على الأجهزة القابلة للارتداء

يوضّح هذا الدليل طريقة استخدام التطبيقات على Wear OS لواجهات برمجة تطبيقات Android المألوفة لتشغيل الصوت.

رصد الأجهزة السماعية

يجب أن يرصد تطبيق Wear OS أولاً ما إذا كان الجهاز القابل للارتداء يوفّر إخراجًا صوتيًا مناسبًا. يمكن للمطوّرين توقّع توفّر واحد على الأقل من مصادر إخراج الصوت التالية في الأجهزة القابلة للارتداء:

في المثال التالي، يستخدم التطبيق getDevices() مع القيمة FEATURE_AUDIO_OUTPUT لتعداد كل الأصوات والمخرجات.

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)

لتقديم أفضل تجربة للمستخدم، يجب أن يحرص تطبيقك على تشغيل الوسائط عند استخدام البلوتوث فقط. تم ربط سماعات الرأس أو مكبّرات الصوت بالساعة.

اختيار الجهاز المفضّل لإخراج الصوت

بناءً على حالة استخدام التطبيق وأهمية الصوت في التجربة الأساسية لتطبيقك، اختيار الطريقة التي تريد أن يتفاعل بها المستخدمون مع إخراج الصوت في تطبيقك.

السماح للمستخدم باختيار جهاز إخراج الوسائط

بدءًا من Wear OS 5، سيوفر النظام واجهة مستخدم تتيح للمستخدمين اختيار يجب أن يشغِّل الجهاز الوسائط وأن يعرض معلومات عن الوسائط التي يتم تشغيلها حاليًا المحتوى.

إذا اكتشف التطبيق عدم توصيل سماعة رأس بلوتوث في الوقت الذي تريده لتوفير تشغيل الصوت على الأجهزة التي تعمل بنظام التشغيل Wear OS 5 أو الإصدارات الأحدث، أنصحك بأخذ المستخدم مباشرةً إلى مبدِّل إخراج الوسائط. على الأجهزة التي لا تتوافق مع مبدِّل إخراج الوسائط، لاستدعاء ACTION_BLUETOOTH_SETTINGS الغرض الإجراء، والذي ينقل المستخدم إلى صفحة البلوتوث في إعدادات النظام.

طريقة launchOutputSelection()، وهي جزء من مكتبة Horology على GitHub كيفية السماح للمستخدم باختيار جهاز إخراج الوسائط الخاص به.

سماعة رأس بلوتوث

على عكس السماعات المدمجة التي تتوفر دائمًا على الجهاز، يمكن استخدام سماعة رأس بلوتوث أو إلغاء إقرانها أثناء تشغيل التطبيق. إذا كان التطبيق يتطلب سماعة رأس للمتابعة، تسجيل معاودة الاتصال لاكتشاف وقت توصيل المستخدم سماعة رأس بلوتوث أو فصلها باستخدام 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)
  

إذا اكتشف تطبيقك عدم توصيل سماعة رأس بلوتوث عند رغبتك في توفير الصوت الإخراج، لا تعرض رسالة خطأ. بدلاً من ذلك، يمكنك عرض نقل المستخدم مباشرةً إلى إعدادات البلوتوث لتسهيل التواصل معهم. يمكن القيام بذلك عن طريق إرسال هدف مع 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)
  

مكبرات الصوت

تتضمّن معظم أجهزة Wear OS مكبّرات صوت. إذا كان تطبيقك يقدّم حالة استخدام غير متعلقة بالوسائط تتضمّن الصوت، يمكنك استخدام مكبرات الصوت لتقديم بُعد إضافي من التفاعل مع المستخدم. بالنسبة يمكن أن يشغّل جهاز Wear OS المزود بمكبّر صوت ساعة ساعة أو موقّتًا، وإشعار صوتي، وقد تستخدم تطبيقات اللياقة البدنية مكبّر الصوت لتقديم تعليمات التمرين.

ملاحظة: لا تقدّم مكبّرات الصوت أفضل تجربة للاستماع إلى الوسائط المحتوى، نظرًا لأنها غير مصممة لهذا الغرض.

راجع يُرجى استخدام WearSpeakerSample للاطّلاع على التفاصيل.

تشغيل الصوت

بعد رصد مصدر إخراج صوتي مناسب واختياره، تتطابق خطوات تشغيل الصوت على Wear OS. مثل الأجهزة المحمولة أو الأجهزة الأخرى. لمزيد من المعلومات، يُرجى الاطّلاع على نظرة عامة على MediaPlayer. للوصول بشكل أسهل إلى المزيد من الميزات المتقدمة، مثل بث الوسائط وتنزيلها، استخدم ExoPlayer احرص على اتّباع أفضل الممارسات المتعلّقة بالتطبيقات الصوتية، مثل إدارة تركيز الصوت.

منع تشغيل الوسائط غير المقصود من خلال مكبّرات الصوت

يمكن لتطبيقات الوسائط اتّباع الإرشادات التالية للتأكّد من عدم تشغيل التطبيق عن غير قصد. محتوى الوسائط على مكبرات الصوت المضمنة في الساعة. تختلف الإرشادات حسب اللاعب الذي التطبيق.

ExoPlayer

إذا كان تطبيقك يستخدم ExoPlayer:

  1. طلب setSuppressPlaybackOnUnfitableOutput(true) أثناء إنشاء مثيل ExoPlayer:

      ExoPlayer exoplayer = ExoPlayer.Builder(context)
              .setAudioAttributes(...)
              .setSuppressPlaybackWhenUnsuitableOutput(true)
              // ...
              .build()
          
  2. التفاعل مع حدث إيقاف التشغيل من خلال التسجيل WearUnfitableOutputtionSuppression متاجرListener بصفتك من المستمعين إلى مثيل ExoPlayer:

  3.   exoPlayer.addListener(WearUnsuitableOutputPlaybackSuppressionResolverListener(context))
        

مجموعة أدوات الوسائط الخاصة بعلم الأحصنة

تحتوي Horology MediaToolkit على منطق لمنع تشغيل الوسائط غير المقصود على مكبرات الصوت المدمجة في الساعة.

مشغّلات الوسائط الأخرى