/ / एंड्रॉइड फोर्स AudioRecord में हेडफोन माइक का उपयोग करने के लिए - एंड्रॉइड, माइक्रोफ़ोन, ऑडियोरकार्ड

हेडफोन माइक - एंड्रॉइड, माइक्रोफोन, ऑडियोओकोरॉर्ड का उपयोग करने के लिए एंड्रॉइड फोर्स ऑडियो रिकॉर्ड

मैं AudioRecord का उपयोग संगीत रिकॉर्ड करने के लिए करता हूं लेकिन जब मैं रिकॉर्ड करता हूं तो यह फोन माइक का उपयोग करता है। मैं उसे हेडफ़ोन के चैनल का उपयोग करने के लिए कैसे मजबूर कर सकता हूं?

मैं इस कोड का उपयोग करता हूं:

  int minSize = AudioRecord.getMinBufferSize(8000, AudioFormat.CHANNEL_IN_MONO, AudioFormat.ENCODING_PCM_16BIT);
AudioRecord ar = new AudioRecord(MediaRecorder.AudioSource.DEFAULT, 8000, AudioFormat.CHANNEL_IN_MONO, AudioFormat.ENCODING_PCM_16BIT, minSize);
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
recorder[0] = false;
}
}, timeInSecondsToRecord * 1000);

short[] buffer = new short[minSize];
ar.startRecording();
Log.d("Started","Reording");
while (recorder[0]) {
ar.read(buffer, 0, minSize);
for (short s : buffer) {
if (s>1000)
System.out.println("signalVal=" + s);
}
}
Log.d("Finished","Reording");
ar.stop();

धन्यवाद

उत्तर:

उत्तर № 1 के लिए 1

आप AudioManager का उपयोग कर सकते हैं।यह देखने के लिए कि क्या हेडसेट प्लग किया गया है या नहीं, isWiredHeadsetOn ()। यदि उपरोक्त मूल्य गलत है, तो कोई कार्रवाई न करें या आप जो भी करना चाहते हैं। और इसके लिए भी आपको पहले अनुमति चाहिए: MODIFY_AUDIO_SETTINGS

उम्मीद है की यह मदद करेगा। :)


जवाब के लिए 0 № 2

मुझे यह समस्या उल्टी करने पर मजबूर करने की थीफोन का उपयोग "हेडफ़ोन माइक के बजाय)। आप AudioManager में AudioDeviceInfo सरणी को स्कैन करके एक माइक का चयन कर सकते हैं। यहां" मुझे लगता है कि यह आपके लिए कैसा लगेगा (यदि TYPE_LINE_ANALOOGN "टी काम है, तो देखें) AudioDeviceInfo पृष्ठ अधिक संभावनाओं या डिबग के लिए कि कौन से उपकरण आते हैं):

    AudioRecord audioRecord =
new AudioRecord(...);
// Force use of the line in mic
AudioManager audioManager = (AudioManager) context.getSystemService(Context.AUDIO_SERVICE);
for ( AudioDeviceInfo device : audioManager.getDevices(AudioManager.GET_DEVICES_INPUTS)) {
if ( device.getType() == AudioDeviceInfo.TYPE_LINE_ANALOG) {
audioRecord.setPreferredDevice(device);
break;
}
}