【问题标题】:How to create a .wav file after a record - Android Studio如何在录制后创建 .wav 文件 - Android Studio
【发布时间】:2023-03-08 17:21:02
【问题描述】:

我尝试制作一个简单的记录器,当我开始操作时,我得到了 fileNotFoundException。如何在特定文件夹中创建 .wav 文件,比如说在外部卡上,这样我以后可以访问该文件夹以收听存储在那里的记录。

到目前为止,这是我的代码,我使用了 library 记录活动:

    public class MainActivity extends Activity {
    String filePath;
    int color ;
    int requestCode = 0;
    Button recordButton;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        recordButton = (Button) findViewById(R.id.recordButton);

        recordButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                filePath = Environment.getExternalStorageDirectory() + "/recorded_audio.wav";
                color = getResources().getColor(R.color.colorPrimaryDark);
                AndroidAudioRecorder.with(MainActivity.this)
                        .setFilePath(filePath)
                        .setColor(color)
                        .setRequestCode(requestCode)
                        .record();
            }
        });


    }
    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        if (requestCode == 0) {
            if (resultCode == RESULT_OK) {
                Toast.makeText(MainActivity.this, "Resoult ok", Toast.LENGTH_SHORT).show();
                // Great! User has recorded and saved the audio file
            } else if (resultCode == RESULT_CANCELED) {
                Toast.makeText(MainActivity.this, "Resoult not-ok", Toast.LENGTH_SHORT).show();
                // Oops! User has canceled the recording
            }
        }
    }
}

【问题讨论】:

    标签: android audio createfile recorder


    【解决方案1】:

    Android 有一个内置麦克风,您可以通过它捕获音频并将其存储,或在手机中播放。有很多方法可以做到这一点,但最常见的方法是通过 MediaRecorder 类。

    Android 提供 MediaRecorder 类来录制音频或视频。为了使用 MediaRecorder 类,您将首先创建一个 MediaRecorder 类的实例。其语法如下。

    MediaRecorder myAudioRecorder = new MediaRecorder();
    

    现在您将设置源、输出和编码格式以及输出文件。它们的语法如下所示。

    myAudioRecorder.setAudioSource(MediaRecorder.AudioSource.MIC);
    myAudioRecorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);
    myAudioRecorder.setAudioEncoder(MediaRecorder.OutputFormat.AMR_NB);
    myAudioRecorder.setOutputFile(outputFile);
    

    在指定音频源和格式及其输出文件后,我们就可以调用这两个基本方法准备并开始开始录制音频了。

    myAudioRecorder.prepare();
    myAudioRecorder.start();
    

    在您的代码中只需进行以下更改:-

     outputFile = Environment.getExternalStorageDirectory().getAbsolutePath() + "/recording.3gp";;
    
          myAudioRecorder=new MediaRecorder();
          myAudioRecorder.setAudioSource(MediaRecorder.AudioSource.MIC);
          myAudioRecorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);
          myAudioRecorder.setAudioEncoder(MediaRecorder.OutputFormat.AMR_NB);
          myAudioRecorder.setOutputFile(outputFile);
    
          record.setOnClickListener(new View.OnClickListener() {
             @Override
             public void onClick(View v) {
                try {
                   myAudioRecorder.prepare();
                   myAudioRecorder.start();
                }
    
                catch (IllegalStateException e) {
                   // TODO Auto-generated catch block
                   e.printStackTrace();
                }
    
                catch (IOException e) {
                   // TODO Auto-generated catch block
                   e.printStackTrace();
                }
    
                record.setEnabled(false);
                stop.setEnabled(true);
    
                Toast.makeText(getApplicationContext(), "Recording started", Toast.LENGTH_LONG).show();
             }
          });
    

    希望它有所帮助,并将权限也放入您的 android 清单文件中。

     <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
       <uses-permission android:name="android.permission.RECORD_AUDIO" /> 
    

    【讨论】:

    • 但是你回答的是 3gp 文件而不是 wav 文件?
    【解决方案2】:

    答案是我必须在 AndroidMainifers.xml 中添加这些权限:

    <uses-permission android:name="android.permission.RECORD_AUDIO"/>
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-12-31
      • 1970-01-01
      • 2019-07-19
      • 1970-01-01
      • 2013-06-28
      • 1970-01-01
      • 2016-04-26
      相关资源
      最近更新 更多