Сохранение аудиофайла Android по пользовательскому вводу - PullRequest
0 голосов
/ 30 июня 2019

Я пытаюсь сохранить имя аудиофайла по пользовательскому вводу, но когда я сохраняю файл № 1 с именем, например, (test1), ничего не сохраняется, а когда я пытаюсь повторить его с именем (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;

1 Ответ

0 голосов
/ 30 июня 2019

Пожалуйста, попробуйте это;

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());
        }
...