2015-10-20 5 views
6

जब मैं निम्नलिखित कोडAudioRecord वस्तु एक परियोजना में आरंभ नहीं

record = new AudioRecord(MediaRecorder.AudioSource.MIC, sampleRate, AudioFormat.CHANNEL_IN_MONO, AudioFormat.ENCODING_PCM_8BIT, BYTE_OF_SAMPLE * bufferSampleSize); 
record.startRecording(); 

तब मैं logcat में अपवाद निम्न हो रही है का उपयोग करते हुए अपना नेक्सस 5 के माध्यम से एक ऑडियो रिकार्ड करने की कोशिश कर रहा हूँ:

E/AudioRecord: AudioFlinger could not create record track, status: -1 
E/AudioRecord-JNI: Error creating AudioRecord instance: initialization check failed with status -1. 
E/android.media.AudioRecord: Error code -20 when initializing native AudioRecord object. 
E/AndroidRuntime: FATAL EXCEPTION: Thread-855 
E/AndroidRuntime: Process: com.*.*, PID: 14206 
E/AndroidRuntime: java.lang.IllegalStateException: startRecording() called on an uninitialized AudioRecord. 
E/AndroidRuntime:  at android.media.AudioRecord.startRecording(AudioRecord.java:885) 
E/AndroidRuntime:  at com.*.*.MainActivity$Looper.run(MainActivity.java:265) 
E/Surface: getSlotFromBufferLocked: unknown buffer: 0x9e476d00 

मैं मैंने मैनिफेस्ट फ़ाइल में निम्न पंक्ति जोड़ दी है।

<uses-permission android:name="android.permission.RECORD_AUDIO" /> 

मैंने AudioRecord object not initializing का परीक्षण किया है। काम करने वाले उन समाधानों में से कोई भी नहीं।

लेकिन यह एक और परियोजना में काम कर रहा है। क्या कुछ याद आ रही है?

उत्तर

11

पूरा कोड को खोजने के समाधान मिल गया: हाल ही में मैं Marshmallow करने के लिए अपने फोन अपडेट किया गया। मार्शमलो में एक नई अनुमति प्रणाली है। मैंने रिकॉर्डिंग कार्यों को ठीक करने के लिए इन अनुमतियों पर स्विच किया।

enter image description here

+0

आप सबसे अच्छे हैं! –

+0

बिल्कुल मेरी समस्या है! – StarWind0

+0

क्या मेरे सभी उपयोगकर्ताओं को सेटिंग्स में जाना है और इसे मैन्युअल रूप से अनुमति देना है? क्या मैं इसे प्रोग्रामेटिक रूप से नहीं कर सकता। – nilsi

1

मैंने रिकॉर्डिंग के लिए इसका इस्तेमाल किया। यहाँ से Android Audio recording example

private void startRecording() { 
    mRecorder = new MediaRecorder(); 
    mRecorder.setAudioSource(MediaRecorder.AudioSource.MIC); 
    mRecorder.setOutputFormat(MediaRecorder.OutputFormat.MPEG_4); 
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) { 
     mRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.HE_AAC); 
     mRecorder.setAudioEncodingBitRate(48000); 
    } else { 
     mRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AAC); 
     mRecorder.setAudioEncodingBitRate(64000); 
    } 
    mRecorder.setAudioSamplingRate(16000); 
    mOutputFile = getOutputFile(); 
    mOutputFile.getParentFile().mkdirs(); 
    mRecorder.setOutputFile(mOutputFile.getAbsolutePath()); 

    try { 
     mRecorder.prepare(); 
     mRecorder.start(); 
     mStartTime = SystemClock.elapsedRealtime(); 
     mHandler.postDelayed(mTickExecutor, 100); 
     Log.d("Voice Recorder","started recording to "+mOutputFile.getAbsolutePath()); 
    } catch (IOException e) { 
     Log.e("Voice Recorder", "prepare() failed "+e.getMessage()); 
    } 
} 

Android Audio recording

+0

मैं MediaRecorder उपयोग नहीं कर सकते जैसा कि मैंने स्पेक्ट्रम विश्लेषक बनाने के लिए ऑडियो नमूने पढ़ने की जरूरत है। – skabir

संबंधित मुद्दे