Bluetooth Düşük Enerji (BDE) Ses'e dayalı Bluetooth ses profilleri Yüksek kaliteli sesin (örneğin, stereo ses) iki yönlü akışına izin verilir 32 kHz örnekleme hızıyla). Bu, LE'nin oluşturulması sayesinde mümkün İki kronik kanal (ISO). ISO, Eşzamanlı Bağlantı Yönelimli ile benzerdir (SCO) Bağlantı, ayrılmış kablosuz bant genişliğine rağmen rezervasyon artık 64 Kb/sn ile sınırlı değildir ve dinamik olarak ayarlanabilir.
Bluetooth ses girişi en yeni cihazı kullanabilir Neredeyse tüm kullanımlar için AudioManager API kılıfları (telefon aramaları hariç). Bu kılavuzda, BDE Audio duyulabilir.
Uygulamanızı yapılandırma
İlk olarak, uygulamanızı build.gradle
içinde doğru SDK'yı hedefleyecek şekilde yapılandırın:
targetSdkVersion 31
Sesli geri arama kaydet
Bir metin oluştur:
AudioDeviceCallback
uygulamanızın bağlı veya bağlantısı kesik durum değişikliklerini öğrenmesini sağlayan
AudioDevices
.
final AudioDeviceCallback audioDeviceCallback = new AudioDeviceCallback() {
@Override
public void onAudioDevicesAdded(AudioDeviceInfo[] addedDevices) {
};
@Override
public void onAudioDevicesRemoved(AudioDeviceInfo[] removedDevices) {
// Handle device removal
};
};
audioManager.registerAudioDeviceCallback(audioDeviceCallback);
BDE Ses Cihazı Bul
Desteklenen tüm bağlı ses cihazlarının listesini al, ardından şunu kullan:
Kontrol etmek için getType()
Bu cihaz,
AudioDeviceInfo.TYPE_BLE_HEADSET
.
Kotlin
val allDeviceInfo = audioManager.getDevices(GET_DEVICES_INPUTS) var bleInputDevice: AudioDeviceInfo? = null for (device in allDeviceInfo) { if (device.type == AudioDeviceInfo.TYPE_BLE_HEADSET) { bleInputDevice = device break } }
Java
AudioDeviceInfo[] allDeviceInfo = audioManager.getDevices(GET_DEVICES_INPUTS); AudioDeviceInfo bleInputDevice = null; for (AudioDeviceInfo device : allDeviceInfo) { if (device.getType() == AudioDeviceInfo.TYPE_BLE_HEADSET) { bleInputDevice = device; break; } }
Stereo destek
Seçilen cihazda stereo mikrofonların desteklenip desteklenmediğini kontrol etmek için cihazın iki veya daha fazla kanalı varsa Cihazın yalnızca bir kanalı varsa kanal maskesini mono olarak ayarlayın.
Kotlin
var channelMask: Int = AudioFormat.CHANNEL_IN_MONO if (audioDevice.channelCounts.size >= 2) { channelMask = AudioFormat.CHANNEL_IN_STEREO }
Java
if (bleInputDevice.getChannelCounts() >= 2) { channelMask = AudioFormat.CHANNEL_IN_STEREO; };
Ses kaydediciyi kurma
Ses kaydediciler, standart AudioRecord
oluşturucu kullanılarak ayarlanabilir.
Stereo veya mono yapılandırmayı seçmek için kanal maskesini kullanın.
Kotlin
val recorder = AudioRecord.Builder() .setAudioSource(MediaRecorder.AudioSource.MIC) .setAudioFormat(AudioFormat.Builder() .setEncoding(AudioFormat.ENCODING_PCM_16BIT) .setSampleRate(32000) .setChannelMask(channelMask) .build()) .setBufferSizeInBytes(2 * minBuffSizeBytes) .build()
Java
AudioRecord recorder = new AudioRecord.Builder() .setAudioSource(MediaRecorder.AudioSource.MIC) .setAudioFormat(new AudioFormat.Builder() .setEncoding(AudioFormat.ENCODING_PCM_16BIT) .setSampleRate(32000) .setChannelMask(channelMask) .build()) .setBufferSizeInBytes(2*minBuffSizeBytes) .build();
Tercih edilen cihazı ayarlayın
Tercih edilen bir cihazın ayarlanması, sese recorder
ses sistemiyle ilgili bilgi verir
yanındaki kutuyu işaretleyin.
Kotlin
recorder.preferredDevice = audioDevice
Java
recorder.setPreferredDevice(bleInputDevice);
Artık MediaRecorder kılavuzunda özetlendiği şekilde ses kaydedebilirsiniz.