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
.
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 } }
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.
var channelMask: Int = AudioFormat.CHANNEL_IN_MONO if (audioDevice.channelCounts.size >= 2) { channelMask = AudioFormat.CHANNEL_IN_STEREO }
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.
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()
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.
Artık MediaRecorder kılavuzunda özetlendiği şekilde ses kaydedebilirsiniz.