首页 > 解决方案 > 如何从 MediaRecorder 获取输出记录并将其保存到 Firebase 存储中

问题描述

所以我正在构建一个应用程序,用户可以在其中使用媒体记录器录制音频,然后将其保存到 firebase 存储中,对于记录器,我使用来自https://github.com/3llomi/RecordView的外部库,这只是动画我正在使用媒体记录器的实际录制,所以我想做的是当用户停止录制时,它会从媒体录制器中保存录制文件并将其上传到 firebase

这些是我的录音方法

 private void stopRecording() {
 mediaRecorder.stop();
 mediaRecorder.release();
 mediaRecorder = null;

 uploadAudio(); }

private void uploadAudio() {
       //Here is where i want to get output file from the media recorder and save it into firebase
}

private void startRecording() {
    String recordPath = SarimPage.this.getExternalFilesDir("/").getAbsolutePath();
    SimpleDateFormat formatter = new SimpleDateFormat("yyyy_MM_dd_hh_mm_ss", Locale.getDefault());
    Date now = new Date();
    recordFile = "/Recording_" + formatter.format(now) + ".3gp";

    mediaRecorder = new MediaRecorder();
    mediaRecorder.setAudioSource(MediaRecorder.AudioSource.MIC);
    mediaRecorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);
    mediaRecorder.setOutputFile(recordPath + "/" + recordFile);
    mediaRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);

    try {
        mediaRecorder.prepare();
    } catch (IOException e) {
        e.printStackTrace();
    }

    mediaRecorder.start();
}

这是我在外部录音库中的方法

     RecordView recordView = findViewById(R.id.record_view);
    recordButton = findViewById(R.id.record_button);

    recordButton.setRecordView(recordView);
    recordView.setOnRecordListener(new OnRecordListener() {
        @Override
        public void onStart() {
            if (checkPermissions()) {
                startRecording();
                messageInput.setVisibility(View.INVISIBLE);
            }
        }

        @Override
        public void onCancel() {

        }

        @Override
        public void onFinish(long recordTime) {
            stopRecording();
            messageInput.setVisibility(View.VISIBLE);
        }

        @Override
        public void onLessThanSecond() {
            messageInput.setVisibility(View.VISIBLE);
            Toast.makeText(SarimPage.this, "Sorry Your Recording Was Too short, Please Try Again", Toast.LENGTH_SHORT).show();
        }
    });

    recordView.setOnBasketAnimationEndListener(new OnBasketAnimationEnd() {
        @Override
        public void onAnimationEnd() {
            messageInput.setVisibility(View.VISIBLE);
        }
    });

标签: android

解决方案


推荐阅读