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.
- AudioRecord registra sonido intermitente en Android L Vista previa del desarrollador
- ¿Cómo reproducir el canal izquierdo y derecho por separado con AudioTrack?
- ¿Hay alguna manera de reemplazar o silenciar el sonido del obturador de la cámara en android?
- Grabar sonido Y reproducir sonido modulado En Android?
- Usar AudioTrack de Android para combinar bytes de muestras de sonido produce ruido
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.
- Decodificación de audio a través de Android utilizando FFMpeg
- Android mediaplayer errores de audio / tartamudez sólo en los dispositivos más nuevos
- Bajo retardo de audio en Android vía NDK
- Problemas de repetición de AudioTrack de Android en MODE_STATIC
- Audio Filtrado de android
- Android emulador en ADT plugin no se ejecuta
- Decibel Sound Meter para Android
- AudioManager.isWiredHeadsetOn () no funciona en android
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
Este enlace también puede ser útil para aquellos que necesitan pausar y grabar audio.
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.
- Cómo puedo importar java.awt.image.BufferedImage en Android Studio
- Dos bibliotecas de Android duplican el mismo tarro – Ant build error