2017-02-09 2 views
0

Voici mon enregistrement de code de l'application d'enregistrement d'appel fichier audio dans le stockage interne, mais je veux stocker des fichiers audio dans le stockage externe. Ce que je vais changer et les fichiers stocker dans Sdcardstocker des fichiers audio dans la carte SdCard

Je fais application d'enregistrement qui stockent des fichiers audio dans le stockage

public void recordVoiceCall(String phNumber, String name, String type) { 

    File LastingSalesRecordingsDir = new File(Environment.getExternalStorageDirectory(), 
      audioFileDirectoryPath); 


    if (!LastingSalesRecordingsDir.exists()) { 
     LastingSalesRecordingsDir.mkdirs(); 
    } 

    file_name = "call_" + MyDateTimeStamp.getCurrentDate() + "_" + 
      MyDateTimeStamp.getCurrentTimeForFile() + "_" + type + "_" + phNumber + "_"; 
    try { 
     audioFile = File.createTempFile(file_name, ".mp3", LastingSalesRecordingsDir); 
    } catch (IOException e) { 
     Log.d(MyLogTags.recording, "Recording IOException: " + e.getMessage()); 
     e.printStackTrace(); 
    } 
    String path = Environment.getExternalStorageDirectory().getAbsolutePath(); 
    try { 
     file_name = audioFile.getName(); 

     if (recorder == null) { 
      recorder = new MediaRecorder(); 
      recorder.setAudioSource(MediaRecorder.AudioSource.VOICE_COMMUNICATION); 

      recorder.setOutputFormat(MediaRecorder.OutputFormat.MPEG_4); 
      recorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB); 
      recorder.setOutputFile(audioFile.getAbsolutePath()); 

      Log.d(MyLogTags.recording, "Recording output formats set."); 
     } 
    } catch (Exception e) { 
     Log.d(MyLogTags.recording, "Recording Exception: " + e); 
    } 
    try { 

     recorder.prepare(); 
     Log.d(MyLogTags.recording, "Recording Recorder prepared."); 
    } catch (IllegalStateException e) { 
     deleteVoiceFile(file_name); 
     Log.d(MyLogTags.recording, "Recording prepare IllegalStateException: " + e); 
    } catch (IOException e) { 
     deleteVoiceFile(file_name); 
     Log.d(MyLogTags.recording, "Recording prepare IOException: " + e); 
    } 

    try { 
     String state = Environment.getExternalStorageState(); 
     if (!state.equals(Environment.MEDIA_MOUNTED)) { 
      Log.d(MyLogTags.recording, "SD Card is not mounted. It is " + state + "."); 
      throw new IOException("SD Card is not mounted. It is " + state + "."); 
     } 

     recorder.start(); 
     Log.d(MyLogTags.recording, "Recording Recorder started for: " + phNumber); 
     recordStarted = true; 
    } catch (Throwable e) { 
     deleteVoiceFile(file_name); 
     Log.d(MyLogTags.recording, "Recording start Exception: " + e); 
    } 
} 
+1

'Environment.getExternalStorageDirectory()'. C'est déjà de la mémoire externe. Pas la carte SD. La seule chose dont vous avez besoin est un objet File ou un chemin de fichier vers la carte SD. Une fois que vous avez que le reste de votre code est le même. Vous devez également réaliser que sur les appareils Android modernes, votre application ne peut pas écrire sur une carte SD. Seulement lire. Je ne sais pas si l'enregistreur audio multimédia peut y écrire. – greenapps

+0

@greenapps Est-il possible de stocker des fichiers d'enregistrement audio dans un stockage de carte SD externe? – Ahmad

+0

@greenapps Je fais une application d'enregistrement Android et j'écris le même code, il va stocker des données dans la mémoire interne mais pas dans SdCard – Ahmad

Répondre

1

Vous pouvez utiliser le répertoire de stockage externe par défaut Android pour enregistrer vos fichiers audio.

File path = Environment.getExternalStoragePublicDirectory(
Environment.DIRECTORY_MUSIC); 

Vous pouvez également utiliser File Class Constructor pour créer un nouveau dossier sur la carte SD.

File audioFolder = new File(Environment.getExternalStorageDirectory(), 
"newaudiofolder") 
    if (!audioFolder.exists()) { 
boolean success = audioFolder.mkdir() 
if (success) { 
    // save the file 
} 
} 

Assurez-vous d'ajouter la permission à Manifest.xml

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