Android MediaRecorder:一段时间后录制的音频静音

时间:2021-05-25 06:43:26

标签: android service mediarecorder android-audiorecord

我正在尝试以 .amr 格式开始录制来自麦克风输入的音频。完成录制操作后,当我播放文件时,它在大约 3 分钟后静音,全长约为 6 分钟。我有一个处理录音部分的服务。我从一个片段开始录制并从另一个片段结束。在记录执行期间,应用程序生命周期保持活跃。附上以下代码:

public class RecorderService extends Service {
    private String fileName;
    private MediaRecorder recorder;
    private String mobile;


    @Nullable
    @Override
    public IBinder onBind(Intent intent) {
        return null;
    }

    @Override
    public int onStartCommand(Intent intent, int flags, int startId) {
        String recordCommand = intent.getStringExtra("RECORD_STATUS");
        mobile = intent.getStringExtra("mobile");
        assert recordCommand != null;
        switch (recordCommand) {
            case "Start":
                startRecording();
                break;
            case "Stop":
                stopRecording();
                break;
        }
        return START_STICKY;
    }


    private void startRecording() {
        fileName = getExternalCacheDir().getAbsolutePath() + "/" + mobile + ".amr";
        if (recorder != null) {
            recorder.release();
            recorder = null;
        }
        recorder = new MediaRecorder();
        recorder.setAudioSource(MediaRecorder.AudioSource.MIC);
        recorder.setOutputFormat(MediaRecorder.OutputFormat.AMR_NB);
        recorder.setOutputFile(fileName);
        recorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);
        try {
            recorder.prepare();
        } catch (IOException e) {
            Log.e("filerecorder", "prepare() failed");
        }

        recorder.start();
    }

    private void stopRecording() {
        if (recorder != null) {
            recorder.release();
            recorder = null;
        }
        stopSelf();
    }
}

我不知道为什么录音被静音了。这是否与使用麦克风而不通知用户有关?

0 个答案:

没有答案
相关问题