این راهنما برنامههای ارتباطی، مانند «صدا در پروتکل اینترنت» (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);
پیدا کردن دستگاه صوتی مجهز به بلوتوث کممصرف
از getAvailableCommuncationDevices() استفاده کنید تا ببینید کدام دستگاهها برای تماس VoIP دردسترس هستند. از AudioDeviceInfo استفاده کنید تا ببینید دستگاه هدست «بلوتوث کممصرف» است یا نه. این مثال بهدنبال اولین دستگاهی میگردد که از BLE Audio پشتیبانی میکند، اما میتوانید همه دستگاههای پشتیبانیشده را پیدا کنید و به کاربران اجازه دهید انتخاب کنند.
کاتلین
// 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<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;
}
}
تنظیم دستگاه ارتباطی
پساز پیدا کردن دستگاه سازگار، از 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 Audio تنظیم شده است، هنگام برقراری تماس، جاریسازی صوتی مسیریابی صوتی صحیح را خواهد داشت.
پایان دادن جلسه
پساز اینکه برنامهتان تماس یا جلسهای را بهپایان رساند، دستگاه ارتباطی فعال را پاک کنید. این کار کمک میکند کاربر هنگام جابهجایی بین برنامههای مختلف تجربه عالی داشته باشد.
کاتلین
// Clear the selection, ready for next call
audioManager.clearCommunicationDevice()
جاوا
// Clear the selection, ready for next call
audioManager.clearCommunicationDevice();