2012-05-14 1 views
8

से एंड्रॉइड ऑडियो रिकॉर्डॉर्ड आयाम पढ़ना मैं एमआईसी से ध्वनि रिकॉर्ड करने और लाइव ग्राफ खींचने की कोशिश कर रहा हूं। मैं ग्राफ को रिकॉर्ड और आकर्षित करने में सक्षम हूं। समस्या यह है कि नीचे दिए गए कोड का उपयोग करके दर्ज किए गए मान उदाहरण के लिए सटीक नहीं हैं ... नीचे दी गई छवि वह है जो मुझे तब मिलती है जब कोई आवाज नहीं होती है। मैंने एफएफटी का उपयोग करके उदाहरण देखे हैं, लेकिन मुझे यकीन नहीं है कि अगर मेरे पास समय डोमेन ग्राफ़ खींचने की कोशिश की जा रही है तो मुझे कोई मदद नहीं होगी और मुझे इसे आवृत्ति डोमेन (अब के लिए) में परिवर्तित करने का कोई उद्देश्य नहीं दिख रहा है। अन्य औसत शक्ति का उपयोग कर रहे हैं, यह सहायक हो सकता है लेकिन मुझे यकीन नहीं है।एमआईसी

किसी भी मदद के लिए धन्यवाद।

enter image description here

bufferSize = AudioRecord.getMinBufferSize(RECORDER_SAMPLERATE,RECORDER_CHANNELS,RECORDER_AUDIO_ENCODING); 

    recorder = new AudioRecord(MediaRecorder.AudioSource.MIC, 
      RECORDER_SAMPLERATE, RECORDER_CHANNELS,RECORDER_AUDIO_ENCODING, bufferSize); 

    short data [] = new short[bufferSize]; 

    while (!Thread.interrupted()) { 

     recorder.startRecording(); 

     recorder.read(data, 0, bufferSize); 

     recorder.stop(); 

     for (short s : data) 
     { 
      try { 
       Thread.sleep((long) 300.00); 
      } catch (InterruptedException e) { 
       // TODO Auto-generated catch block 
       e.printStackTrace(); 
      } 
      postUI (Math.abs(s)); 
     } 
    } 

    recorder.release(); 
+0

हाय की जाँच कैसे आप audiorecorder में ध्वनि के आयाम मिला कृपया मदद –

+1

रिकॉर्डर = नए AudioRecord (MediaRecorder.AudioSource.MIC, RECORDER_SAMPLERATE, RECORDER_CHANNELS, RECORDER_AUDIO_ENCODING, बफर आकार); recorder.startRecording(); \t \t \t recorder.read (डेटा, 0, बफर आकार); \t \t \t recorder.stop(); (लघु एस: डेटा) { औसत + = Math.abs (ओं); } – user591124

उत्तर

12

यह करने के लिए एक रास्ता तलाश किसी और के लिए, Samsung's fantastic example complete with source code

Samsung example

+2

मैं इसका उपयोग कर रहा हूं, लेकिन सैमसंग ने (गलत तरीके से) अधिकतम मात्रा को "4,000" पर सेट किया है, भले ही मेरा डिवाइस कम से कम "7,000" (जो भी इसका मतलब है) पंजीकृत कर सके। –

+0

हे @ केयरसिमन्स जो मान डिवाइस से डिवाइस में भिन्न होता है। – Gourneau

1

उच्च नमूना दर का उपयोग करें। अधिकतम 48000 है, लेकिन 44100 मानक है।

इसके अलावा, यह संभव है कि माइक्रोफ़ोन केवल पृष्ठभूमि शोर रिकॉर्ड कर रहा हो।

+0

मैंने पेट के बजाय शॉर्ट सरणी में सभी मानों का औसत लिया। यह ठीक काम करता है। – user591124