ब्लूटूथ कम ऊर्जा (BLE) ऑडियो पर आधारित ब्लूटूथ ऑडियो प्रोफ़ाइल अच्छी क्वालिटी के ऑडियो को दोनों तरफ़ से स्ट्रीम करने की अनुमति दें. उदाहरण के लिए, स्टीरियो ऑडियो सैंपल रेट 32 किलोहर्ट्ज़ (kHz) के साथ होना चाहिए. ऐसा एलई के निर्माण की वजह से मुमकिन हो सका आइसोक्रोनस चैनल (आईएसओ). आईएसओ, सिंक्रोनस कनेक्शन-ओरिएंटेड की तरह है (SCO) लिंक ऐसा इसलिए है, क्योंकि यह रिज़र्व किए गए वायरलेस बैंडविथ का भी इस्तेमाल करता है, लेकिन अब रिज़र्वेशन 64 केबीपीएस तक सीमित नहीं है और इसे डाइनैमिक तौर पर अडजस्ट किया जा सकता है.
ब्लूटूथ ऑडियो इनपुट नए वर्शन का इस्तेमाल कर सकता है करीब सभी तरह के इस्तेमाल के लिए AudioManager API फ़ोन कॉल के मामले. इस गाइड में स्टीरियो ऑडियो रिकॉर्ड करने का तरीका बताया गया है BLE ऑडियो सुनने लायक.
अपनी ऐप्लिकेशन कॉन्फ़िगर करें
सबसे पहले, build.gradle
में सही SDK टूल को टारगेट करने के लिए, अपना ऐप्लिकेशन कॉन्फ़िगर करें:
targetSdkVersion 31
ऑडियो कॉलबैक रजिस्टर करें
किसी प्रॉडक्ट की पिच के लिए
AudioDeviceCallback
जो आपके ऐप्लिकेशन को कनेक्ट या डिसकनेक्ट होने में होने वाले किसी भी बदलाव के बारे में बताता है
AudioDevices
.
final AudioDeviceCallback audioDeviceCallback = new AudioDeviceCallback() {
@Override
public void onAudioDevicesAdded(AudioDeviceInfo[] addedDevices) {
};
@Override
public void onAudioDevicesRemoved(AudioDeviceInfo[] removedDevices) {
// Handle device removal
};
};
audioManager.registerAudioDeviceCallback(audioDeviceCallback);
BLE ऑडियो डिवाइस ढूंढें
इनपुट के साथ कनेक्ट किए गए सभी ऑडियो डिवाइसों की सूची पाएं. इसके बाद, इनका इस्तेमाल करें
getType()
देखें कि क्या
इस डिवाइस में एक हेडसेट है
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; } }
स्टीरियो की सुविधा
यह देखने के लिए कि चुने गए डिवाइस पर स्टीरियो माइक्रोफ़ोन काम करते हैं या नहीं, देखें कि क्या डिवाइस में दो या ज़्यादा चैनल हों. अगर डिवाइस में सिर्फ़ एक चैनल है, तो चैनल मास्क को मोनो पर सेट करें.
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; };
ऑडियो रिकॉर्डर सेट अप करना
ऑडियो रिकॉर्डर को AudioRecord
बिल्डर का इस्तेमाल करके सेट अप किया जा सकता है.
स्टीरियो या मोनो कॉन्फ़िगरेशन चुनने के लिए, चैनल मास्क का इस्तेमाल करें.
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();
पसंदीदा डिवाइस सेट करें
किसी पसंदीदा डिवाइस को सेट करने से, ऑडियो recorder
को पता चलता है कि कौनसा ऑडियो डिवाइस
जिसके साथ आपको रिकॉर्ड करना है.
Kotlin
recorder.preferredDevice = audioDevice
Java
recorder.setPreferredDevice(bleInputDevice);
अब MediaRecorder गाइड में बताए गए तरीके से ऑडियो रिकॉर्ड किया जा सकता है.