java.lang.RuntimeException: setAudioSource failed

后端 未结 8 2078
灰色年华
灰色年华 2021-01-01 15:13

I am new to android development. I am just trying to record an audio with android studio(2.1.1) testing with 6.0.1 Marshmallow device.

public class MainActiv         


        
相关标签:
8条回答
  • 2021-01-01 15:44

    startRecording

     public void startRecording(View view) throws IOException {  
          startButton.setEnabled(false);  
          stopButton.setEnabled(true);  
              //Creating file  
          File dir = Environment.getExternalStorageDirectory();  
          try {  
            audiofile = File.createTempFile("sound", ".3gp", dir);  
          } catch (IOException e) {  
            Log.e(TAG, "external storage access error");  
            return;  
          }  
              //Creating MediaRecorder and specifying audio source, output format, encoder & output format  
          recorder = new MediaRecorder();  
          recorder.setAudioSource(MediaRecorder.AudioSource.MIC);  
          recorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);  
          recorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);  
          recorder.setOutputFile(audiofile.getAbsolutePath());  
          recorder.prepare();  
          recorder.start();  
        }  
    

    stopRecording

     public void stopRecording(View view) {  
          startButton.setEnabled(true);  
          stopButton.setEnabled(false);  
              //stopping recorder  
          recorder.stop();  
          recorder.release();  
             //after stopping the recorder, create the sound file and add it to media library.  
          addRecordingToMediaLibrary();  
        }  
    

    AddtoLib

       protected void addRecordingToMediaLibrary() {  
              //creating content values of size 4  
          ContentValues values = new ContentValues(4);  
          long current = System.currentTimeMillis();  
          values.put(MediaStore.Audio.Media.TITLE, "audio" + audiofile.getName());  
          values.put(MediaStore.Audio.Media.DATE_ADDED, (int) (current / 1000));  
          values.put(MediaStore.Audio.Media.MIME_TYPE, "audio/3gpp");  
          values.put(MediaStore.Audio.Media.DATA, audiofile.getAbsolutePath());  
    
               //creating content resolver and storing it in the external content uri  
          ContentResolver contentResolver = getContentResolver();  
          Uri base = MediaStore.Audio.Media.EXTERNAL_CONTENT_URI;  
          Uri newUri = contentResolver.insert(base, values);  
    
             //sending broadcast message to scan the media file so that it can be available  
          sendBroadcast(new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE, newUri));  
          Toast.makeText(this, "Added File " + newUri, Toast.LENGTH_LONG).show();  
        } 
    
    0 讨论(0)
  • 2021-01-01 15:46

    Try this.Hope it helps you

    change 
    
    recorder.setAudioSource(1);
    
    to
    
    recorder.setAudioSource(MediaRecorder.AudioSource.MIC); in your startRecord method.
    
    0 讨论(0)
提交回复
热议问题