টেলিকম API ব্যবহার করে কল পরিচালনা করুন

টেলিকম এপিআই ব্যবহার করে ব্লুটুথ ডিভাইসের জন্য কীভাবে অডিও রুট করতে হয় এবং ভিওআইপি কলের জন্য সংযোগ সেট করতে হয় তা এই নির্দেশিকা কভার করে। চালিয়ে যাওয়ার আগে একটি কলিং অ্যাপ তৈরি করুন গাইড পড়ুন।

ConnectionService এবং Connection ক্লাসগুলি ব্যবহার করে, আপনি অডিও স্টেট এবং উপলব্ধ ব্লুটুথ ডিভাইসগুলির একটি তালিকা অ্যাক্সেস করতে পারেন এবং একটি নির্বাচিত ব্লুটুথ ডিভাইসে অডিও রুট করতে পারেন।

ভিওআইপি সংযোগ এবং সংযোগ পরিষেবা

একটি VoIPConnection ক্লাস তৈরি করুন যা Connection থেকে প্রসারিত হয়। এই ক্লাসটি বর্তমান কলের অবস্থা নিয়ন্ত্রণ করে। একটি কলিং অ্যাপ তৈরি করুন নির্দেশিকা হিসাবে, এটি একটি স্ব-পরিচালিত অ্যাপ্লিকেশন তৈরি করুন এবং একটি VoIP অ্যাপ্লিকেশনের জন্য অডিও মোড সেট করুন৷

কোটলিন

class VoIPConnection : Connection() {
  init {
    setConnectionProperties(PROPERTY_SELF_MANAGED)
    setAudioModeIsVoip(true)
  }
}

জাভা

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

এরপরে, একটি ইনকামিং বা আউটগোয়িং কল হলে ConnectionService এ এই ক্লাসের একটি উদাহরণ ফেরত দিন।

কোটলিন

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()

রাষ্ট্র পরিবর্তন করা হয়েছে

onCallAudioStateChanged() ওভাররাইড করে CallAudioState-এ পরিবর্তনের জন্য সদস্যতা নিন। এটি রাজ্যের যেকোনো পরিবর্তন সম্পর্কে আপনাকে সতর্ক করে।

কোটলিন

fun onCallAudioStateChanged(audioState: CallAudioState) {
  mAudioState = audioState
}

জাভা

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

বর্তমান ডিভাইস পান

CallAudioState.getActiveBluetoothDevice() ব্যবহার করে বর্তমান সক্রিয় ডিভাইসটি পান। এই ফাংশনটি সক্রিয় ব্লুটুথ ডিভাইস প্রদান করে।

কোটলিন

val activeDevice: BluetoothDevice = mAudioState.getActiveBluetoothDevice()

জাভা

BluetoothDevice activeDevice = mAudioState.getActiveBluetoothDevice();

ব্লুটুথ ডিভাইস পান

CallAudioState.getSupportedBluetoothDevices() ব্যবহার করে কল অডিও রাউটিংয়ের জন্য উপলব্ধ ব্লুটুথ ডিভাইসগুলির একটি তালিকা পান৷

কোটলিন

val availableBluetoothDevices: Collection =
  mAudioState.getSupportedBluetoothDevices()

জাভা

Collection availableBluetoothDevices = mAudioState.getSupportedBluetoothDevices();

কল অডিও রুট করুন

requestBluetoothAudio(BluetoothDevice) ব্যবহার করে একটি উপলব্ধ ব্লুটুথ ডিভাইসে কল অডিও রুট করুন:

requestBluetoothAudio(availableBluetoothDevices[0]);

API স্তর 23 এবং উচ্চতর ব্যবহার করে৷

setAudioRoute(int) ব্যবহার করে ডিভাইসটি নির্দিষ্ট না করে ROUTE_BLUETOOTH সক্ষম করুন৷ এটি ডিফল্ট বর্তমান, সক্রিয় ব্লুটুথ ডিভাইসে Android 9 এবং উচ্চতর ডিভাইসে রাউটিং করে।

setAudioRoute(CallAudioState.ROUTE_BLUETOOTH);