במדריך הזה מוסבר איך לנתב אודיו למכשירי Bluetooth באמצעות Telecom API ומגדירים את החיבור עבור שיחות VoIP. לקריאת מדריך לבניית אפליקציית שיחות לפני שממשיכים.
באמצעות ConnectionService
ו-Connection
כיתות, יש לך גישה
מצב אודיו ורשימה של מכשירי Bluetooth זמינים, ויכול לנתב
אודיו למכשיר Bluetooth שנבחר.
חיבור VoIP ו-ConnectionService
יצירת כיתת 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()
מחזירה אם המכשיר מבצע סטרימינג באמצעות Bluetooth, אוזניה, חיבור קווי או
רמקול.
mAudioState = connection.getCallAudioState()
המצב 'במצב' השתנה
הרשמה לשינויים ב-CallAudioState על ידי התעלמות
onCallAudioStateChanged()
השירות הזה מתריע על שינויים במדינה.
Kotlin
fun onCallAudioStateChanged(audioState: CallAudioState) { mAudioState = audioState }
Java
@Override public void onCallAudioStateChanged(CallAudioState audioState) { mAudioState = audioState; }
קבלת המכשיר הנוכחי
משיגים את המכשיר הפעיל הנוכחי באמצעות
CallAudioState.getActiveBluetoothDevice()
הפונקציה הזו מחזירה את מכשיר ה-Bluetooth הפעיל.
Kotlin
val activeDevice: BluetoothDevice = mAudioState.getActiveBluetoothDevice()
Java
BluetoothDevice activeDevice = mAudioState.getActiveBluetoothDevice();
רכישת מכשירי Bluetooth
קבלת רשימה של מכשירי Bluetooth שזמינים לניתוב שיחות באמצעות
CallAudioState.getSupportedBluetoothDevices()
Kotlin
val availableBluetoothDevices: Collection= mAudioState.getSupportedBluetoothDevices()
Java
CollectionavailableBluetoothDevices = mAudioState.getSupportedBluetoothDevices();
ניתוב האודיו של השיחה
שימוש ברמת API 28 ומעלה (מומלץ)
ניתוב האודיו של השיחה למכשיר Bluetooth זמין באמצעות
requestBluetoothAudio(BluetoothDevice)
:
requestBluetoothAudio(availableBluetoothDevices[0]);
שימוש ברמת API 23 ומעלה
אפשר
ROUTE_BLUETOOTH
בלי לציין את המכשיר באמצעות
setAudioRoute(int)
הגדרת ברירת המחדל הזו היא ניתוב למכשירי Bluetooth פעילים הנוכחיים ב-Android 9 ואילך.
setAudioRoute(CallAudioState.ROUTE_BLUETOOTH);