java - 通过用户输入保存音频文件android

标签 java android record mediarecorder

我试图通过用户输入保存音频文件名,但是当我使用名称(test1)保存文件号1时,没有保存任何内容,当我使用名称(test2)再次尝试时,第二个文件使用第一个名称保存( test1),第三个是第二个名字(test2)

 private Button play, stop, record;
    private MediaRecorder myAudioRecorder;
    private String outputFile = "";
    final String format = ".3gp";
    private String inputText = "";
//make dir
    boolean exists = (new File("/storage/emulated/0/PonezRecorder/")).exists();
        if (!exists){new File("/storage/emulated/0/PonezRecorder").mkdirs();}

//user input name 
  builder.setPositiveButton("OK", new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialog, int which) {
                outputFile = input.getText().toString();
// Record button click listener 
record.setOnClickListener(new View.OnClickListener() {
           @Override
           public void onClick(View v) {
               myAudioRecorder = new MediaRecorder();
               myAudioRecorder.setAudioSource(MediaRecorder.AudioSource.MIC);
               myAudioRecorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);
               myAudioRecorder.setAudioEncoder(MediaRecorder.OutputFormat.AMR_NB);
               myAudioRecorder.setOutputFile("/storage/emulated/0/PonezRecorder/"+ outputFile + format );
 try {
                   myAudioRecorder.prepare();
                   myAudioRecorder.start();
               } catch (IllegalStateException ise) {
                   // make something ...
               } catch (IOException ioe) {
                   // make something
}
// stop click listener 
   stop.setOnClickListener(new View.OnClickListener() {
           @Override
           public void onClick(View v) {
               myAudioRecorder.stop();
           myAudioRecorder.release();
           myAudioRecorder = null;

最佳答案

请尝试这个;

String audioName;    
     public void recordAndSaveAudioFile(String customizedName) {
                saved_path = Environment.getExternalStorageDirectory().getAbsolutePath() + "/" + "Voice Recorder";
                File destinationDirectory = new File(saved_path);
                if (!destinationDirectory.exists()) {
                    destinationDirectory.mkdirs();
                }
                this.audioName = customizedName;;
                destinationFile = new File(destinationDirectory, audioName);

                try {
                    FileOutputStream outputStream = new FileOutputStream(destinationFile);
                    outputStream.flush();
                    outputStream.close();
                } catch (FileNotFoundException e) {
                    e.printStackTrace();
                } catch (IOException e) {
                    e.printStackTrace();
                }
                setupMediaRecorder(destinationFile);
                try {
                    mediaRecorder.prepare();
                    mediaRecorder.start();

                } catch (IOException e) {
                    e.printStackTrace();
                }
                Toast.makeText(this, "Recording...", Toast.LENGTH_SHORT).show();
            }
    private void setupMediaRecorder(File destination) {
            mediaRecorder = new MediaRecorder();
            mediaRecorder.setAudioSource(MediaRecorder.AudioSource.MIC);
            mediaRecorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);
            mediaRecorder.setAudioEncoder(MediaRecorder.OutputFormat.AMR_NB);
            mediaRecorder.setOutputFile(Uri.parse(String.valueOf(destination)).toString());
        }

关于java - 通过用户输入保存音频文件android,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56823930/

相关文章:

serialization - Clojure defrecord 序列化 ClassNotFoundException

java - 使用cloudera hadoop java培训项目时加载类失败

java - 迭代后跳过一行

java - BigInteger 负值

java - JPA- hibernate : UniqueConstraint on OneToOne & ManyToOne JoinColumns

android - 有没有办法通过 Google API 获取用户的 "home"和 "work"位置?

android - 选择android listview中的所有复选框

android - Google Play 游戏、Firebase 和新的 Google 登录

Javascript错误: Either BOF or EOF is True,或当前记录已被删除

mysql - 如何在MySql中复制多条记录?