Cómo pausar y reanudar la grabación de audio en android

Estoy desarrollando una aplicación de grabación de audio usando la clase MediaRecorder. Tengo el siguiente requisito:

1. Cuando se pulsa un botón de pausa, haga una pausa en la grabación.

2. Cuando se pulsa un botón de reanudación, reanude la grabación en el punto en que se detuvo. Intento este enlace

Pero no puedo implementar la funcionalidad.

Cualquier ayuda / sugerencia sería muy apreciada.

La clase Media Recorder no admite pausar y reanudar, vea la vista general de la segunda clase de vínculos. Intenta usar detener y reiniciar

¿Cómo puedo pausar la grabación de voz en Android?

http://developer.android.com/reference/android/media/MediaRecorder.html

http://www.techotopia.com/index.php/Android_Audio_Recording_and_Playback_using_MediaPlayer_and_MediaRecorder

Este enlace también puede ser útil para aquellos que necesitan pausar y grabar audio.

https://github.com/lassana/continuous-audiorecorder

Puede remitir mi respuesta aquí si todavía tiene este problema.

La solución es detener la grabadora cuando el usuario pausa y empezar de nuevo en reanudar como ya se mencionó en muchas otras respuestas en stackoverflow. Almacene todos los archivos de audio / vídeo generados en una matriz y utilice el siguiente método para combinar todos los archivos multimedia. El ejemplo se toma de la biblioteca de mp4parser y poco modificado según mi necesidad.

public static boolean mergeMediaFiles(boolean isAudio, String sourceFiles[], String targetFile) { try { String mediaKey = isAudio ? "soun" : "vide"; List<Movie> listMovies = new ArrayList<>(); for (String filename : sourceFiles) { listMovies.add(MovieCreator.build(filename)); } List<Track> listTracks = new LinkedList<>(); for (Movie movie : listMovies) { for (Track track : movie.getTracks()) { if (track.getHandler().equals(mediaKey)) { listTracks.add(track); } } } Movie outputMovie = new Movie(); if (!listTracks.isEmpty()) { outputMovie.addTrack(new AppendTrack(listTracks.toArray(new Track[listTracks.size()]))); } Container container = new DefaultMp4Builder().build(outputMovie); FileChannel fileChannel = new RandomAccessFile(String.format(targetFile), "rw").getChannel(); container.writeContainer(fileChannel); fileChannel.close(); return true; } catch (IOException e) { Log.e(LOG_TAG, "Error merging media files. exception: "+e.getMessage()); return false; } } 

Utilice flag isAudio como true para archivos de audio y false para archivos de vídeo.

  • AudioRecord: registros de "Overrun user" - ¿qué significan?
  • Amplificación del volumen de reproducción de un archivo AMR local
  • Javax.sound.sampled.AudioInputStream para android
  • Múltiples AudioTracks, Single Thread o Multiple?
  • ¿Cómo acelerar la reproducción de música en tiempo real en android sin cambiar el tono?
  • Android aplicación de sonido de forma gratuita
  • Límites de efectos de audio de Android a 5 bandas
  • ¿Cómo agregar efectos de sonido en Android?
  • Recuperar la carátula del álbum utilizando FFmpeg
  • Android Sonido: seekTo y setPlaybackRate
  • Cómo mezclar archivos de audio y música del archivo midi en Android?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.