Telecom API का इस्तेमाल करके कॉल मैनेज करें

इस गाइड में बताया गया है कि 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

Collection availableBluetoothDevices = mAudioState.getSupportedBluetoothDevices();

कॉल का ऑडियो रूट करें

इसका इस्तेमाल करके कॉल के ऑडियो को किसी उपलब्ध ब्लूटूथ डिवाइस पर रूट करें requestBluetoothAudio(BluetoothDevice):

requestBluetoothAudio(availableBluetoothDevices[0]);

एपीआई लेवल 23 और उसके बाद के लेवल का इस्तेमाल किया जा रहा है

सक्षम करें ROUTE_BLUETOOTH डिवाइस को निर्दिष्ट किए बिना setAudioRoute(int). यह डिफ़ॉल्ट रूप से, Android 9 और इसके बाद के वर्शन पर काम करने वाले मौजूदा ब्लूटूथ डिवाइसों पर रूट हो जाता है.

setAudioRoute(CallAudioState.ROUTE_BLUETOOTH);