Ses Yöneticisi'nin kendi yönettiği arama rehberi

Bu kılavuz, ses ve duyulabilir cihaz durumunu kendi başına yönetmek isteyen İnternet Üzerinden Ses Protokolü (VoIP) gibi iletişim uygulamalarını kapsar.

Sesli geri aramayı kaydet

Öncelikle, ses cihazları cihaza bağlandığında veya cihaz bağlantısı kesildiğinde uygulamanızı bilgilendiren bir AudioDeviceCallback oluşturun.

Kotlin

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

audioManager.registerAudioDeviceCallback(audioDeviceCallback)

Java

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

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

audioManager.registerAudioDeviceCallback(audioDeviceCallback);

Etkin iletişim cihazı olup olmadığını kontrol edin

Ses yöneticisi, hangi iletişim cihazının etkin durumda olduğunu size bildirir.

Kotlin

val currentCommunicationDevice: AudioDeviceInfo? = audioManager.communicationDevice

Java

AudioDeviceInfo currentCommunicationDevice = audioManager.getCommunicationDevice();

Bir iletişim cihazı değiştiğinde yapılan dinleme, uygulamanızın yönlendirmenin ne zaman uygulandığını ve seçtiğiniz cihazın etkin olduğunu bilmesini sağlar.

Kotlin

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

Java

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

BDE ses cihazını bul

VoIP araması için hangi cihazların kullanılabildiğini görmek için getAvailableCommuncationDevices() adresini kullanın. Cihazın BDE mikrofonlu kulaklık olup olmadığını görmek için AudioDeviceInfo kullanın. Bu örnekte, BDE Audio'yu destekleyen ilk cihaz aranır. Ancak, desteklenen tüm cihazları bulup kullanıcıların seçim yapmasına izin vermeyi de düşünebilirsiniz.

Kotlin


// 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
  }
}

Java


// 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;
    }
}

İletişim cihazını ayarla

Uyumlu bir cihaz bulduktan sonra, yönlendirmek istediğiniz cihazı ayarlamak için setCommunicationDevice uygulamasını kullanın. Sonucu kontrol ettiğinizde, ses yöneticisinin cihazı ayarlamaya çalışıp çalışmadığı veya cihazda bir hatayla karşılaşılıp karşılaşılmadığı bildirilir.

Kotlin


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

Java


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

BLE Audio cihazı ayarlandığına göre, arama yapılırken ses akışı doğru ses yönlendirmesine sahip olur.

Oturumu sonlandır

Uygulamanız bir aramayı veya oturumu bitirdikten sonra etkin iletişim cihazını temizleyin. Bu, kullanıcının farklı uygulamalar arasında geçiş yaparken harika bir deneyim yaşamasına yardımcı olur.

Kotlin


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

Java


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