android - 录制音频并保存到应用程序的数据文件夹中

标签 android audio storage internal recording

我对编程还很陌生,我想学习如何制作一个允许用户录制音频的应用程序,从而将其保存到应用程序的数据文件夹中。我设法完成了录音部分,但只设法将其保存到 SD 卡中。有人愿意帮我弄清楚如何将我的音频保存到内部存储器中吗?

private void playRecording() throws Exception {
    ditchMediaPlayer();
    mediaPlayer = new MediaPlayer();
    mediaPlayer.setDataSource(OUTPUT_FILE);
    mediaPlayer.prepare();
    mediaPlayer.start();
}

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

private void beginRecording() throws Exception {
    ditchMediaRecorder();
    File outFile = new File(OUTPUT_FILE);

    if(outFile.exists())
        outFile.delete();

    recorder = new MediaRecorder();
    recorder.setAudioSource(MediaRecorder.AudioSource.MIC);
    recorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);
    recorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);
    recorder.setOutputFile(OUTPUT_FILE);

    recorder.prepare();
    recorder.start();

}

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

  public void recordOnClick(View v) {
      //when record button is pressed
      try{
            beginRecording();
        }catch (Exception e){
            e.printStackTrace();
        }
        btnRecord.setVisibility(View.INVISIBLE);
        btnStop.setVisibility(View.VISIBLE);
  }

  public void stopOnClick(View v) {
      //when stop button is pressed
      try{
            stopRecording();
        }
        catch (Exception e){
            e.printStackTrace();
        }

        btnStop.setVisibility(View.INVISIBLE);
        btnRecord.setVisibility(View.INVISIBLE);

        btnDelete.setVisibility(View.VISIBLE);
        btnPlay.setVisibility(View.VISIBLE);
        btnShare.setVisibility(View.VISIBLE);
  }

  public void playOnClick(View v) {
      //when play button is pressed
        try{
            playRecording();
        }
        catch (Exception e){
            e.printStackTrace();
        }

        btnStop.setVisibility(View.INVISIBLE);
        btnRecord.setVisibility(View.INVISIBLE);
  }

这是我的 onClick,我将在其中指定每个按钮的输出(我正在做一个图表,所以我有大约 44 个按钮!)

    public void onClick(View v) {
switch (v.getId()) {

case R.id.btn1:

      OUTPUT_FILE=Environment.getExternalStorageDirectory()+"/y1.3gpp";     
  File file1 = new File(Environment.getExternalStorageDirectory()+"/y1.3gpp");
        if (file1.exists()) {

            btnPlay.setVisibility(View.VISIBLE);
            btnDelete.setVisibility(View.VISIBLE);
            btnShare.setVisibility(View.VISIBLE);
        }
        else {
            btnRecord.setVisibility(View.VISIBLE);
        }   
 break;

case R.id.btn2:

OUTPUT_FILE=Environment.getExternalStorageDirectory()+"/y2.3gpp";   
File file2 = new File(Environment.getExternalStorageDirectory()+ "/y2.3gpp" );
        if (file2.exists()) {

            btnPlay.setVisibility(View.VISIBLE);
            btnDelete.setVisibility(View.VISIBLE);
            btnShare.setVisibility(View.VISIBLE);
        }
        else {
            btnRecord.setVisibility(View.VISIBLE);
        }   

 break;

最佳答案

也许你想看看这个? Creating folder in internal Memory to save files and retrieve them later

//Creating an internal directory
File mydir = context.getDir("mydir", Context.MODE_PRIVATE); 
//Getting a file within the dir.
File fileWithinMyDir = new File(mydir, "myfile"); 
FileOutputStream out = new FileOutputStream(fileWithinMyDir); 
//Use the stream as usual to write    into the file

关于android - 录制音频并保存到应用程序的数据文件夹中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14271122/

相关文章:

Android:API v19 之前的 Null 安全等于

android - 在 Facebook Audience Network SDK 5.2.1 版中,我应该使用什么代替 AdIconView?

android - 如何在Android中选择声音设备

python - Python3 裁剪音频文件时出现 MemoryError

database - 存储多个图像并将其显示在大文本中

java - 在复杂的 Google 地理编码 JSON 对象中按键获取值 - Java - android

Android:如何从首选项标题启动 Activity ?

javascript - 创建一个外部音频播放器

MongoDB作为文件存储

android - 如何获取我的 Android 设备内部下载文件夹路径?