إدارة المكالمات باستخدام واجهة برمجة التطبيقات Telecom

يتناول هذا الدليل كيفية توجيه الصوت لأجهزة البلوتوث باستخدام Telecom API وإعداد الاتصال مكالمات VoIP اطّلِع على دليل إنشاء تطبيقات للاتصال قبل المتابعة.

من خلال استخدام ConnectionService وConnection صفًا، يمكنك الوصول إليها حالة الصوت وقائمة بأجهزة البلوتوث المتاحة، ويمكنك توجيه الصوت إلى جهاز بلوتوث محدد.

اتصال VoIP وخدمة الاتصال

إنشاء صف VoIPConnection يمتد من Connection تتحكّم هذه الفئة في حالة المكالمة الحالية. نظرًا لأن العمود دليل إنشاء تطبيقات للاتصال جعل هذا التطبيق مُدارًا ذاتيًا وضبط وضع الصوت لتقنية VoIP التطبيق.

KotlinJava
class VoIPConnection : Connection() {
 
init {
    setConnectionProperties
(PROPERTY_SELF_MANAGED)
    setAudioModeIsVoip
(true)
 
}
}
public class VoIPConnection extends Connection {
 
public VoIPConnection() {
    setConnectionProperties
(PROPERTY_SELF_MANAGED);
    setAudioModeIsVoip
(true);
 
}
}

وبعد ذلك، نرجع مثيلاً لهذه الفئة في ConnectionService عند الواردة أو الصادرة.

KotlinJava
class VoIPConnectionService : ConnectionService() {
 
override fun onCreateOutgoingConnection(
    connectionManagerPhoneAccount
: PhoneAccountHandle,
    request
: ConnectionRequest,
 
): Connection {
   
return VoIPConnection()
 
}
}
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() وينبهك هذا الإجراء في حال حدوث أي تغييرات في الولاية.

KotlinJava
fun onCallAudioStateChanged(audioState: CallAudioState) {
  mAudioState
= audioState
}
@Override
public void onCallAudioStateChanged(CallAudioState audioState) {
  mAudioState
= audioState;
}

الحصول على الجهاز الحالي

الحصول على الجهاز النشط الحالي باستخدام CallAudioState.getActiveBluetoothDevice() تعرض هذه الدالة جهاز البلوتوث النشط.

KotlinJava
val activeDevice: BluetoothDevice = mAudioState.getActiveBluetoothDevice()
BluetoothDevice activeDevice = mAudioState.getActiveBluetoothDevice();

الحصول على الأجهزة التي تتضمّن بلوتوث

الحصول على قائمة بالأجهزة التي تتضمّن بلوتوث والمتاحة لتوجيه المكالمات الصوتية باستخدام CallAudioState.getSupportedBluetoothDevices()

KotlinJava
val availableBluetoothDevices: Collection
Collection

توجيه صوت المكالمة

يمكنك توجيه صوت المكالمة إلى جهاز بلوتوث متاح باستخدام requestBluetoothAudio(BluetoothDevice):

requestBluetoothAudio(availableBluetoothDevices[0]);

استخدام المستوى 23 من واجهة برمجة التطبيقات والمستويات الأعلى

تفعيل ROUTE_BLUETOOTH بدون تحديد الجهاز باستخدام setAudioRoute(int) يؤدي هذا الإعداد التلقائي إلى ضبط الإعدادات التلقائية على الأجهزة الحالية والنشطة التي تتضمّن بلوتوث على نظام التشغيل Android 9 والإصدارات الأحدث.

setAudioRoute(CallAudioState.ROUTE_BLUETOOTH);