मैं 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;
}
}