2017-02-09 2 views
0

Вот мой код записи приложения для записи звука Audio File во внутреннем хранилище, но я хочу хранить аудиофайлы во внешнем хранилище. Что я изменю и файлы хранить в SDCardмагазин Аудиофайлы в SdCard

Я делаю приложение записи, хранение аудио файлов в хранилище

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()'. Это уже внешняя память. Не SD-карта. Единственное, что вам нужно - это объект File или файл на SD-карте. Как только у вас есть, остальная часть вашего кода будет одинаковой. Вы также должны понимать, что на современных устройствах Android ваше приложение не может писать на SD-карту. Только читать. Я не знаю, может ли там записываться медиарекордер. – greenapps

+0

@greenapps Возможно ли хранить файлы аудиозаписи во внешнем хранилище sdcard? – Ahmad

+0

@greenapps Я занимаюсь записью Android и записываю тот же код, он будет хранить данные во внутренней памяти, но не в SdCard – Ahmad

ответ

1

Вы можете использовать внешний каталог хранения Андроида по умолчанию для сохранения аудио файлов.

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

Вы также можете использовать File Class Constructor для создания новой папки на SD-карте.

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

Убедитесь, что добавить разрешение в Manifest.xml

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> 
Смежные вопросы