Koleksiyonlar ile düzeninizi koruyun
İçeriği tercihlerinize göre kaydedin ve kategorilere ayırın.
Bu kılavuz, ses ve duyulabilir cihaz durumunu kendilerinin yönetmek isteyen, İnternet Üzerinden Ses Protokolü (VoIP) gibi iletişim uygulamalarını kapsar.
Sesli geri arama kaydet
Öncelikle, ses cihazları cihaza bağlandığında veya cihazda bağlantı kesildiğinde uygulamanızı bilgilendirecek bir AudioDeviceCallback oluşturun.
Bir iletişim cihazının değiştiğini dinlemek, yönlendirme uygulandığında ve seçtiğiniz cihaz etkin olduğunda uygulamanızın bundan haberdar olmasını sağlar.
VoIP araması için hangi cihazların uygun olduğunu görmek istiyorsanız getAvailableCommuncationDevices() simgesini kullanın. Cihazın bir BDE mikrofonlu kulaklık olup olmadığını görmek için AudioDeviceInfo öğesini kullanın. Bu örnekte, BLE Audio'yu destekleyen ilk cihaz aranır, ancak desteklenen tüm cihazları bulup kullanıcıların seçmesine 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<AudioDeviceInfo> 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önlendirme yapmak istediğiniz cihazı ayarlamak için setCommunicationDevice öğesini kullanın. Sonucu kontrol etmek, uygulamanıza ses yöneticisi cihazı ayarlamaya mı çalışıyor yoksa bir hatayla mı karşılaştığını bildirir.
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)
BDE Audio cihazı ayarlandığına göre arama yaparken ses yayını doğru ses yönlendirmesine sahip olacaktır.
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();
Bu sayfadaki içerik ve kod örnekleri, İçerik Lisansı sayfasında açıklanan lisanslara tabidir. Java ve OpenJDK, Oracle ve/veya satış ortaklarının tescilli ticari markasıdır.
Son güncelleme tarihi: 2025-08-13 UTC.
[[["Anlaması kolay","easyToUnderstand","thumb-up"],["Sorunumu çözdü","solvedMyProblem","thumb-up"],["Diğer","otherUp","thumb-up"]],[["İhtiyacım olan bilgiler yok","missingTheInformationINeed","thumb-down"],["Çok karmaşık / çok fazla adım var","tooComplicatedTooManySteps","thumb-down"],["Güncel değil","outOfDate","thumb-down"],["Çeviri sorunu","translationIssue","thumb-down"],["Örnek veya kod sorunu","samplesCodeIssue","thumb-down"],["Diğer","otherDown","thumb-down"]],["Son güncelleme tarihi: 2025-08-13 UTC."],[],[],null,["# Audio Manager self-managed call guide\n\nThis guide covers communication applications, such as Voice over Internet Protocol (VoIP), that want to self-manage their audio and hearable device state.\n| **Note:** Starting in Android 13 (API level 33), applications must migrate from [`AudioManager#startBluetoothSco()`](/reference/android/media/AudioManager#startBluetoothSco()) to [`AudioManager#setCommunicationDevice()`](/reference/android/media/AudioManager#setCommunicationDevice(android.media.AudioDeviceInfo)) to support upcoming BLE audio headsets. This change is backward-compatible with Hands-Free Profile (HFP) devices.\n\nRegister audio callback\n-----------------------\n\nFirst, create an `AudioDeviceCallback`, which notifies your app when audio devices connect or disconnect from the device. \n\n### Kotlin\n\n```kotlin\nval audioDeviceCallback: AudioDeviceCallback = object : AudioDeviceCallback() {\n override fun onAudioDevicesAdded(addedDevices: Array) {}\n override fun onAudioDevicesRemoved(removedDevices: Array) {}\n}\n\naudioManager.registerAudioDeviceCallback(audioDeviceCallback)\n```\n\n### Java\n\n```java\nfinal AudioDeviceCallback audioDeviceCallback = new AudioDeviceCallback() {\n @Override\n public void onAudioDevicesAdded(AudioDeviceInfo[] addedDevices) {\n }\n\n @Override\n public void onAudioDevicesRemoved(AudioDeviceInfo[] removedDevices) {\n // Handle device removal\n }\n};\n\naudioManager.registerAudioDeviceCallback(audioDeviceCallback);\n```\n\nCheck for active communication device\n-------------------------------------\n\nThe audio manager lets you know which communication device is currently active. \n\n### Kotlin\n\n```kotlin\nval currentCommunicationDevice: AudioDeviceInfo? = audioManager.communicationDevice\n```\n\n### Java\n\n```java\nAudioDeviceInfo currentCommunicationDevice = audioManager.getCommunicationDevice();\n```\n\nListening for when a communication device has changed lets your app know when routing is applied and the device that you selected is active. \n\n### Kotlin\n\n```kotlin\nval listener =\n OnCommunicationDeviceChangedListener { device -\u003e // Handle changes\n currentCommunicationDevice = device\n }\naudioManager.addOnCommunicationDeviceChangedListener(executor, listener)\n```\n\n### Java\n\n```java\nAudioManager.OnCommunicationDeviceChangedListener listener = \n new AudioManager.OnCommunicationDeviceChangedListener() {\n @Override\n void onCommunicationDeviceChanged(AudioDeviceInfo device) {\n // Handle changes\n currentCommunicationDevice = device;\n }\n};\nAudioManager.addOnCommunicationDeviceChangedListener(executor, listener);\n```\n\nFind BLE audio device\n---------------------\n\nUse [`getAvailableCommuncationDevices()`](/reference/android/media/AudioManager#getAvailableCommunicationDevices()) to see which devices are available for a VoIP call. Use `AudioDeviceInfo` to see if the device is a BLE headset. This example looks for the first device that supports BLE Audio, but you might also consider finding all supported devices and allowing users to choose. \n\n### Kotlin\n\n\n // Get list of currently available devices\n val devices = audioManager.availableCommunicationDevices\n\n // User choose one of the devices, let's say, TYPE_BLE_HEADSET\n val userSelectedDeviceType = AudioDeviceInfo.TYPE_BLE_HEADSET\n\n //for the device from the list\n var selectedDevice: AudioDeviceInfo? = null\n for (device in devices) {\n if (device.type == userSelectedDeviceType) {\n selectedDevice = device\n break\n }\n }\n\n### Java\n\n\n // Get list of currently available devices\n List\u003cAudioDeviceInfo\u003e devices = audioManager.getAvailableCommunicationDevices();\n\n // User choose one of the devices, for example, TYPE_BLE_HEADSET\n int userSelectedDeviceType = AudioDeviceInfo.TYPE_BLE_HEADSET;\n\n // Filter for the device from the list\n AudioDeviceInfo selectedDevice = null;\n for (AudioDeviceInfo device : devices) {\n if (device.getType() == userSelectedDeviceType) {\n selectedDevice = device;\n break;\n }\n }\n\nSet communication device\n------------------------\n\nAfter you find a compatible device, use `setCommunicationDevice` to set the device you wish to route to. Checking the result informs your app if the audio manager is trying to set the device or if it encountered an error. \n\n### Kotlin\n\n\n val result = audioManager.setCommunicationDevice(selectedDevice)\n if (!result) {\n // Handle error.\n }\n // Wait for currentCommunicationDevice to become selectedDevice with a timeout (e.g. 30s)\n\n### Java\n\n\n boolean result = audioManager.setCommunicationDevice(selectedDevice);\n if (!result) {\n // Handle error.\n }\n // Wait for currentCommunicationDevice to become selectedDevice with a timeout (e.g. 30s)\n\n| **Note:** Once you set a communication device, wait a maximum of 30 seconds. Unless an error occurs, `AudioDeviceCallback` is called within 30 seconds. If an error occurs, call `clearCommuncationDevice()`, and then call `setCommunicationDevice()`.\n\nNow that the BLE Audio device has been set, when placing a call, the audio stream will have the correct audio routing.\n\nEnd the session\n---------------\n\nAfter your app finishes a call or session, clear the active communication device. This helps ensure the user has a great experience when moving between different applications. \n\n### Kotlin\n\n\n // Clear the selection, ready for next call\n audioManager.clearCommunicationDevice()\n\n### Java\n\n\n // Clear the selection, ready for next call\n audioManager.clearCommunicationDevice();"]]