当前位置: 首页 > 知识库问答 >
问题:

如何在Android中暂停录音?

曾宏毅
2023-03-14

我的目标是暂停录制文件。我在Android开发者网站上看到了它的但Media Recorder并没有暂停选项。

Java支持以编程方式合并两个音频文件,但在android中不起作用。

从Java中加入两个WAV文件?

而且我还使用了默认设备录音机应用程序,该应用程序适用于所有设备,但在三星中,很少有设备没有返回录制路径。

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

任何一个帮助语音录音暂停功能

共有3个答案

侯向文
2023-03-14

如果还有这个问题,你可以在这里参考我的回答。对于API级别

对于API级别

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用作音频文件的true和视频文件的false。

楚丰羽
2023-03-14

在我的一个项目中,我有这样一个需求,我们所做的就像制作一个原始文件,用于在开始记录时使用< code>AudioRecord保存记录的数据,对于每个简历,我们将数据附加到同一个文件中

喜欢

FileOutputStream fos= new FileOutputStream(filename, true); 

此处的文件名是原始文件的名称,并将新的录制数据附加到其中。

当用户停止录制时,我们会将整个原始文件转换为.wav(或其他)格式。对不起,我不能发布整个代码。希望这能给你一个工作方向。

马朝斑
2023-03-14

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

媒体记录器没有暂停和恢复方法。您需要改用停止和启动方法。

 类似资料:
  • 我正在构建具有恢复/暂停功能的m4a录制的Android应用程序。可能吗?如果是,请告诉我解决方案。 谢谢

  • 我试图实现一个播放/暂停按钮,用于连接到ARKit场景中节点的位置音频。我希望用户能够暂停音频,然后在以后的时间从暂停点恢复它。因此不好,因为这会在重新连接音频时将其重置到起始位置。 我能找到的唯一与SCNAudioPlayers相关联的暂停方法深藏在下面: 有人知道这能不能做到吗? 提前谢了。

  • 问题内容: 在Spring Framework手册中,它们声明对于PROPAGATION_REQUIRES_NEW,当前事务将被挂起。 那“暂停交易”是什么?超时计时器停止指望当前事务吗?这种暂停的实际含义是什么? 谢谢, 问题答案: 这并不意味着什么特别的事情,挂起的事务只是暂时不用于插入,更新,提交或回滚的事务,因为由于指定的传播属性应创建一个新事务,并且只能激活一个事务同时。 基本上有两种事

  • 我们有一个Spring应用程序使用JavaKCL客户端从Kinesis流中消费记录。有没有办法让KCL“暂停”以停止处理记录,然后安全地重新启动它?对此推荐的方法是什么?

  • 抱歉我的问题,我被卡住了。我是lib gdx开发游戏的新手,不要严格评判我。我有我的游戏活动: } 我有两个屏幕: 还有我有暂停按钮的游戏屏幕: 还有我的主要问题--

  • 我相信答案是否定的,但是Twilio提供暂停/恢复录音的能力吗?用例是记录一个呼叫,但在收集敏感信息时暂停记录。从REST文档来看,它似乎不是一个受支持的功能。我想有人可能已经为这个要求找到了一些选择。