يتناول هذا الدليل كيفية توجيه الصوت لأجهزة البلوتوث باستخدام Telecom API وإعداد الاتصال مكالمات VoIP اطّلِع على دليل إنشاء تطبيقات للاتصال قبل المتابعة.
من خلال استخدام ConnectionService
وConnection
صفًا، يمكنك الوصول إليها
حالة الصوت وقائمة بأجهزة البلوتوث المتاحة، ويمكنك توجيه
الصوت إلى جهاز بلوتوث محدد.
اتصال VoIP وخدمة الاتصال
إنشاء صف VoIPConnection
يمتد من
Connection
تتحكّم هذه الفئة في حالة المكالمة الحالية. نظرًا لأن العمود
دليل إنشاء تطبيقات للاتصال
جعل هذا التطبيق مُدارًا ذاتيًا وضبط وضع الصوت لتقنية VoIP
التطبيق.
Kotlin
class VoIPConnection : Connection() { init { setConnectionProperties(PROPERTY_SELF_MANAGED) setAudioModeIsVoip(true) } }
Java
public class VoIPConnection extends Connection { public VoIPConnection() { setConnectionProperties(PROPERTY_SELF_MANAGED); setAudioModeIsVoip(true); } }
وبعد ذلك، نرجع مثيلاً لهذه الفئة في
ConnectionService
عند
الواردة أو الصادرة.
Kotlin
class VoIPConnectionService : ConnectionService() { override fun onCreateOutgoingConnection( connectionManagerPhoneAccount: PhoneAccountHandle, request: ConnectionRequest, ): Connection { return VoIPConnection() } }
Java
public class VoIPConnectionService extends ConnectionService { @Override public Connection onCreateOutgoingConnection(PhoneAccountHandle connectionManagerPhoneAccount, ConnectionRequest request) { return new VoIPConnection(); } }
تأكَّد من أنّ البيان يشير بشكل صحيح إلى فئة VoIPConnectionService
.
<service android:name=".voip.TelegramConnectionService" android:permission="android.permission.BIND_TELECOM_CONNECTION_SERVICE">
<intent-filter>
<action android:name="android.telecom.ConnectionService"/>
</intent-filter>
</service>
من خلال هذه العناصر المخصصة Connection
ConnectionService
صفًا، أنت
يمكننا التحكم في الجهاز ونوع التوجيه الصوتي الذي تريد استخدامه أثناء
الاتصال.
الحصول على حالة الصوت الحالية
للحصول على حالة الصوت الحالية، اتصل
getCallAudioState()
getCallAudioState()
يمكنك إرجاعه إذا كان الجهاز يبث المحتوى باستخدام البلوتوث أو سماعة الأذن أو عبر السلكية.
مكبّر الصوت
mAudioState = connection.getCallAudioState()
تم تغيير حالة التفعيل
الاشتراك في التغييرات في CallAudioState من خلال إلغاء
onCallAudioStateChanged()
وينبهك هذا الإجراء في حال حدوث أي تغييرات في الولاية.
Kotlin
fun onCallAudioStateChanged(audioState: CallAudioState) { mAudioState = audioState }
Java
@Override public void onCallAudioStateChanged(CallAudioState audioState) { mAudioState = audioState; }
الحصول على الجهاز الحالي
الحصول على الجهاز النشط الحالي باستخدام
CallAudioState.getActiveBluetoothDevice()
تعرض هذه الدالة جهاز البلوتوث النشط.
Kotlin
val activeDevice: BluetoothDevice = mAudioState.getActiveBluetoothDevice()
Java
BluetoothDevice activeDevice = mAudioState.getActiveBluetoothDevice();
الحصول على الأجهزة التي تتضمّن بلوتوث
الحصول على قائمة بالأجهزة التي تتضمّن بلوتوث والمتاحة لتوجيه المكالمات الصوتية باستخدام
CallAudioState.getSupportedBluetoothDevices()
Kotlin
val availableBluetoothDevices: Collection= mAudioState.getSupportedBluetoothDevices()
Java
CollectionavailableBluetoothDevices = mAudioState.getSupportedBluetoothDevices();
توجيه صوت المكالمة
استخدام المستوى 28 من واجهة برمجة التطبيقات والمستويات الأعلى (يُنصح به)
يمكنك توجيه صوت المكالمة إلى جهاز بلوتوث متاح باستخدام
requestBluetoothAudio(BluetoothDevice)
:
requestBluetoothAudio(availableBluetoothDevices[0]);
استخدام المستوى 23 من واجهة برمجة التطبيقات والمستويات الأعلى
تفعيل
ROUTE_BLUETOOTH
بدون تحديد الجهاز باستخدام
setAudioRoute(int)
يؤدي هذا الإعداد التلقائي إلى ضبط الإعدادات التلقائية على الأجهزة الحالية والنشطة التي تتضمّن بلوتوث على نظام التشغيل Android 9 والإصدارات الأحدث.
setAudioRoute(CallAudioState.ROUTE_BLUETOOTH);