Как приостановить запись голоса в Android?

Моя цель – приостановить запись файла. Я вижу на сайте разработчика Android, но Media Recorder не имеет опции паузы.

Java поддерживает слияние двух аудиофайлов программно, но In android не работает.

Присоединить два файла WAV от Java?

А также я использовал устройства записи аудио устройств по умолчанию, которые доступны на всех устройствах, но в Samsung несколько устройств не восстановили путь записи.

Intent intent = new Intent(MediaStore.Audio.Media.RECORD_SOUND_ACTION); startActivityForResult(intent,REQUESTCODE_RECORDING); 

Любая помощь для записи голоса с функцией паузы.

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

У MediaRecorder нет методов паузы и возобновления. Вместо этого вам нужно использовать методы остановки и запуска.

Вы можете отсылать мой ответ здесь, если у вас еще есть эта проблема. Для уровня API> = 24 метода паузы / возобновления доступны в классе Android MediaRecorder.

Для уровня API <24

Добавьте зависимость ниже в файле gradle:

 compile 'com.googlecode.mp4parser:isoparser:1.0.2' 

Решение состоит в том, чтобы остановить рекордер, когда пользователь приостанавливается и возобновляется снова, как уже упоминалось во многих других ответах в stackoverflow. Храните все аудио / видео файлы, сгенерированные в массиве, и используйте метод ниже для объединения всех медиафайлов. Пример берется из библиотеки mp4parser и немного модифицируется по моей потребности.

 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; } } 

Используйте флаг isAudio как истинный для аудиофайлов и false для видеофайлов.

У меня было такое требование в одном из моих проектов. Мы сделали так, как сделать необработанный файл для сохранения записанных данных в начале записи с использованием AudioRecord , для каждого резюме мы добавляем данные в тот же файл

как

 FileOutputStream fos= new FileOutputStream(filename, true); 

Здесь имя файла является именем необработанного файла и добавляет к нему новые данные записи.

И когда пользователь останавливает запись, мы преобразуем весь необработанный файл в .wav (или другие) форматы. Извините, что я не могу опубликовать весь код. Надеюсь, это даст вам направление для работы.

Вы не можете сделать это с помощью Android API, но вы можете сэкономить много файлов mp4 и объединить его с помощью mp4parser : мощная библиотека, написанная на Java. Также см. Мой простой рекордер с «паузой»: https://github.com/lassana/continuous-audiorecorder .

Intereting Posts
Шаблоны для разработки Android-игр? Удаление неиспользуемых ресурсов из сторонней библиотеки Как создать OpenSSL для генерации libcrypto.a с Android NDK и Windows Что такое ScrimInsetsFrameLayout? Размер шрифта Android WebView в пикселях Не может подключиться к метеориту с android-ddp после развертывания приложения метеоров Создание пакета библиотеки Android, включая внешний (Native или Java) пакет Разверните приложение для Android. Отсутствует задача installReleaseDebug для градиента Android for work – Как проверить, работает ли мое приложение в профиле работы? {Состояние сеанса: ОТКРЫТИЕ, токен: {токен AccessToken: ACCESS_TOKEN_REMOVED разрешения: }, appId: 1xxxxxxxxxxx} Как установить целочисленный тег в виджет в файле макета xml? Intellij IDEA форматирование XML с выравниванием атрибутов Создание жестких ссылок и Symlinks в Android Есть ли способ установить высоту и обернуть содержимое одновременно в андроиде? AppBarLayout + TabLayout + CollapsingToolbarLayout + SwipeToRefresh