অডিও ম্যানেজার স্ব-পরিচালিত কল গাইড

এই নির্দেশিকাটি যোগাযোগের অ্যাপ্লিকেশনগুলিকে কভার করে, যেমন ভয়েস ওভার ইন্টারনেট প্রোটোকল (VoIP), যারা তাদের অডিও এবং শ্রবণযোগ্য ডিভাইসের অবস্থা স্ব-পরিচালনা করতে চায়।

অডিও কলব্যাক নিবন্ধন করুন

প্রথমে, একটি AudioDeviceCallback তৈরি করুন, যা অডিও ডিভাইসগুলি ডিভাইস থেকে সংযোগ বা সংযোগ বিচ্ছিন্ন করার সময় আপনার অ্যাপকে বিজ্ঞপ্তি দেয়৷

কোটলিন

val audioDeviceCallback: AudioDeviceCallback = object : AudioDeviceCallback() {
  override fun onAudioDevicesAdded(addedDevices: Array) {}
  override fun onAudioDevicesRemoved(removedDevices: Array) {}
}

audioManager.registerAudioDeviceCallback(audioDeviceCallback)

জাভা

final AudioDeviceCallback audioDeviceCallback = new AudioDeviceCallback() {
  @Override
  public void onAudioDevicesAdded(AudioDeviceInfo[] addedDevices) {
  }

  @Override
  public void onAudioDevicesRemoved(AudioDeviceInfo[] removedDevices) {
    // Handle device removal
  }
};

audioManager.registerAudioDeviceCallback(audioDeviceCallback);

সক্রিয় যোগাযোগ ডিভাইসের জন্য পরীক্ষা করুন

অডিও ম্যানেজার আপনাকে জানাতে দেয় যে কোন যোগাযোগ ডিভাইস বর্তমানে সক্রিয় আছে।

কোটলিন

val currentCommunicationDevice: AudioDeviceInfo? = audioManager.communicationDevice

জাভা

AudioDeviceInfo currentCommunicationDevice = audioManager.getCommunicationDevice();

একটি যোগাযোগ ডিভাইস কখন পরিবর্তিত হয়েছে তা শোনার ফলে আপনার অ্যাপ জানতে দেয় কখন রাউটিং প্রয়োগ করা হয় এবং আপনার নির্বাচিত ডিভাইসটি সক্রিয় রয়েছে।

কোটলিন

val listener =
  OnCommunicationDeviceChangedListener { device -> // Handle changes
    currentCommunicationDevice = device
  }
audioManager.addOnCommunicationDeviceChangedListener(executor, listener)

জাভা

AudioManager.OnCommunicationDeviceChangedListener listener = 
      new AudioManager.OnCommunicationDeviceChangedListener() {
  @Override
  void onCommunicationDeviceChanged(AudioDeviceInfo device) {
      // Handle changes
      currentCommunicationDevice = device;
  }
};
AudioManager.addOnCommunicationDeviceChangedListener(executor, listener);

BLE অডিও ডিভাইস খুঁজুন

একটি VoIP কলের জন্য কোন ডিভাইসগুলি উপলব্ধ তা দেখতে getAvailableCommuncationDevices() ব্যবহার করুন৷ ডিভাইসটি একটি BLE হেডসেট কিনা তা দেখতে AudioDeviceInfo ব্যবহার করুন। এই উদাহরণটি BLE অডিও সমর্থন করে এমন প্রথম ডিভাইসের সন্ধান করে, তবে আপনি সমস্ত সমর্থিত ডিভাইসগুলি খুঁজে বের করার এবং ব্যবহারকারীদের চয়ন করার অনুমতি দেওয়ার কথাও বিবেচনা করতে পারেন।

কোটলিন


// Get list of currently available devices
val devices = audioManager.availableCommunicationDevices

// User choose one of the devices, let's say, TYPE_BLE_HEADSET
val userSelectedDeviceType = AudioDeviceInfo.TYPE_BLE_HEADSET

//for the device from the list
var selectedDevice: AudioDeviceInfo? = null
for (device in devices) {
  if (device.type == userSelectedDeviceType) {
    selectedDevice = device
    break
  }
}

জাভা


// Get list of currently available devices
List devices = audioManager.getAvailableCommunicationDevices();

// User choose one of the devices, for example, TYPE_BLE_HEADSET
int userSelectedDeviceType = AudioDeviceInfo.TYPE_BLE_HEADSET;

// Filter for the device from the list
AudioDeviceInfo selectedDevice = null;
for (AudioDeviceInfo device : devices) {
    if (device.getType() == userSelectedDeviceType) {
        selectedDevice = device;
        break;
    }
}

যোগাযোগ ডিভাইস সেট করুন

আপনি একটি সামঞ্জস্যপূর্ণ ডিভাইস খুঁজে পাওয়ার পরে, আপনি যে ডিভাইসে রুট করতে চান সেটি সেট করতে setCommunicationDevice ব্যবহার করুন। অডিও ম্যানেজার ডিভাইসটি সেট করার চেষ্টা করছে কিনা বা এটি কোনও ত্রুটির সম্মুখীন হলে ফলাফলটি পরীক্ষা করা আপনার অ্যাপকে জানায়।

কোটলিন


val result = audioManager.setCommunicationDevice(selectedDevice)
if (!result) {
  // Handle error.
}
// Wait for currentCommunicationDevice to become selectedDevice with a timeout (e.g. 30s)

জাভা


boolean result = audioManager.setCommunicationDevice(selectedDevice);
if (!result) {
  // Handle error.
}
// Wait for currentCommunicationDevice to become selectedDevice with a timeout (e.g. 30s)

এখন যেহেতু BLE অডিও ডিভাইস সেট করা হয়েছে, একটি কল করার সময়, অডিও স্ট্রিম সঠিক অডিও রাউটিং থাকবে।

অধিবেশন শেষ করুন

আপনার অ্যাপ একটি কল বা সেশন শেষ করার পরে, সক্রিয় যোগাযোগ ডিভাইস সাফ করুন। এটি বিভিন্ন অ্যাপ্লিকেশনের মধ্যে চলার সময় ব্যবহারকারীর একটি দুর্দান্ত অভিজ্ঞতা রয়েছে তা নিশ্চিত করতে সহায়তা করে।

কোটলিন


// Clear the selection, ready for next call
audioManager.clearCommunicationDevice()

জাভা


// Clear the selection, ready for next call
audioManager.clearCommunicationDevice();