Necesita un ejemplo sencillo para la grabación de audio

Estoy en la necesidad de grabación de audio simple y reproducir el ejemplo utilizando AudioRecorder en android. Lo intenté con MediaRecorder, funciona bien.

2 Solutions collect form web for “Necesita un ejemplo sencillo para la grabación de audio”

¿ AudioRecord decir AudioRecord ? Buscar, por ejemplo, "AudioRecord.OnRecordPositionUpdateListener" mediante Google Code Search. Btw, AudioRecord hace la grabación, no la reproducción.

Ver también:

  • Mejorar la calidad de grabación de audio Android?
  • Android AudioRecord clase – proceso de mic audio en vivo rápidamente, configurar la función de devolución de llamada

Aquí está el código de ejemplo para el registro de audio.

  private Runnable recordRunnable = new Runnable() { @Override public void run() { byte[] audiodata = new byte[mBufferSizeInBytes]; int readsize = 0; Log.d(TAG, "start to record"); // start the audio recording try { mAudioRecord.startRecording(); } catch (IllegalStateException ex) { ex.printStackTrace(); } // in the loop to read data from audio and save it to file. while (mInRecording == true) { readsize = mAudioRecord.read(audiodata, 0, mBufferSizeInBytes); if (AudioRecord.ERROR_INVALID_OPERATION != readsize && mFos != null) { try { mFos.write(audiodata); } catch (IOException e) { e.printStackTrace(); } } } // stop recording try { mAudioRecord.stop(); } catch (IllegalStateException ex) { ex.printStackTrace(); } getActivity().runOnUiThread(new Runnable() { @Override public void run() { mRecordLogTextView.append("\n Audio finishes recording"); } }); // close the file try { if (mFos != null) mFos.close(); } catch (IOException e) { e.printStackTrace(); } } }; 

Entonces usted necesita dos botones (o uno actúa como función diferente en el tiempo diferente) para iniciar y detener el hilo de grabación.

  mRecordStartButton = (Button) rootView .findViewById(R.id.audio_record_start); mRecordStartButton.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { // initialize the audio source int recordChannel = getChoosedSampleChannelForRecord(); int recordFrequency = getChoosedSampleFrequencyForRecord(); int recordBits = getChoosedSampleBitsForRecord(); Log.d(TAG, "recordBits = " + recordBits); mRecordChannel = getChoosedSampleChannelForSave(); mRecordBits = getChoosedSampleBitsForSave(); mRecordFrequency = recordFrequency; // set up the audio source : get the buffer size for audio // record. int minBufferSizeInBytes = AudioRecord.getMinBufferSize( recordFrequency, recordChannel, recordBits); if(AudioRecord.ERROR_BAD_VALUE == minBufferSizeInBytes){ mRecordLogTextView.setText("Configuration Error"); return; } int bufferSizeInBytes = minBufferSizeInBytes * 4; // create AudioRecord object mAudioRecord = new AudioRecord(MediaRecorder.AudioSource.MIC, recordFrequency, recordChannel, recordBits, bufferSizeInBytes); // calculate the buffer size used in the file operation. mBufferSizeInBytes = minBufferSizeInBytes * 2; // reset the save file setup String rawFilePath = WaveFileWrapper .getRawFilePath(RAW_PCM_FILE_NAME); try { File file = new File(rawFilePath); if (file.exists()) { file.delete(); } mFos = new FileOutputStream(file); } catch (Exception e) { e.printStackTrace(); } if (mInRecording == false) { mRecordThread = new Thread(recordRunnable); mRecordThread.setName("Demo.AudioRecord"); mRecordThread.start(); mRecordLogTextView.setText(" Audio starts recording"); mInRecording = true; // enable the stop button mRecordStopButton.setEnabled(true); // disable the start button mRecordStartButton.setEnabled(false); } // show the log info String audioInfo = " Audio Information : \n" + " sample rate = " + mRecordFrequency + "\n" + " channel = " + mRecordChannel + "\n" + " sample byte = " + mRecordBits; mRecordLogTextView.setText(audioInfo); } }); mRecordStopButton = (Button) rootView .findViewById(R.id.audio_record_stop); mRecordStopButton.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { if (mInRecording == false) { Log.d(TAG, "current NOT in Record"); } else { // stop recording if (mRecordThread != null) { Log.d(TAG, "mRecordThread is not null"); mInRecording = false; Log.d(TAG, "set mInRecording to false"); try { mRecordThread.join(TIMEOUT_FOR_RECORD_THREAD_JOIN); Log.d(TAG, "record thread joins here"); } catch (InterruptedException e) { e.printStackTrace(); } mRecordThread = null; // re-enable the start button mRecordStartButton.setEnabled(true); // disable the start button mRecordStopButton.setEnabled(false); } else { Log.d(TAG, "mRecordThread is null"); } } } }); 

Entonces puede guardar los datos de pcm en un archivo WAV.

  • Error de la cámara "No se puede conectar a la cámara" o en algunos teléfonos aparece el error "La cámara está usando otra aplicación"
  • ¿Cómo activar la vibración en la entrada de sonido?
  • Cómo silenciar el "pitido" por MediaRecorder.start ()?
  • Android MediaRecorder setCaptureRate () y velocidad de reproducción de vídeo
  • MediaRecorder start () falla si se llama demasiado rápido
  • Android MediaRecorder y setOutputFile
  • Android Video Recording de la superficie de OpenGL (GLSURFACEVIEW)
  • Android MediaRecorder para grabar una superficie (no la cámara)
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.