Сохранение звука на SD-КАРТУ

#java #android #android-sdcard

#java #Android #android-sdcard

Вопрос:

Я искал возможность сохранить аудио на SD-карту.

 File dir = new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_MUSIC)   "/AUDIO/");
        boolean success1;
        if (!dir.exists()) {

            MessageSystem("SAVING FOLDER: "   dir   " -- DON'T EXISTS ");

            //CASE NOT -  We create
            success1 = dir.mkdir();


            if (success1) {
                // Do something on success
                MessageSystem("foldersd: "   dir.toString()    " CREATED!!");


            } else {
                // Do something else on failure
                MessageSystem("foldersd: "   dir.toString()    " NOT CREATED!!");

            }

        }
  

Я попытался сохранить также на:

 
        File dir = new File(Environment.getExternalStorageDirectory()   "/AUDIO/");

  

В обоих случаях это сработало, но оно сохраняется во ВНУТРЕННЕМ ХРАНИЛИЩЕ. НИКОГДА НА SD-КАРТУ

Я использовал getExternalFilesDirs() для. Но пользователь потеряет файлы, если он удалит приложение.

Я этого не хочу.

Как я могу сохранить аудио в общей папке SD-карты или создать новую.

В любое время он создает во внутренней памяти.

Есть решение???

Я попробовал с этим, и я смог создать документ на SD-КАРТЕ. И пустой. Теперь я хотел бы сохранить в нем звук MediaRecorder. Но мне нужен путь. Как я могу это получить?

 Intent intent = new Intent(Intent.ACTION_CREATE_DOCUMENT);
        intent.addCategory(Intent.CATEGORY_OPENABLE);
        intent.setType("application/mpeg");
        intent.putExtra(Intent.EXTRA_TITLE, audio_name);

        // Optionally, specify a URI for the directory that should be opened in
        // the system file picker when your app creates the document.
        intent.putExtra(DocumentsContract.EXTRA_INITIAL_URI, pickerInitialUri);

        startActivityForResult(intent, CREATE_FILE);
  

Комментарии:

1. Это зависит от используемой версии Android. Но использование SAF работает для всех версий выше kitkat.

2. не могли бы вы привести пример?

Ответ №1:

вы можете попробовать это,

 public static final String DEFAULT_STORAGE_LOCATION = "/sdcard/AudioRecording";

File dir = new File(DEFAULT_STORAGE_LOCATION);

if (!dir.exists()) {
try {
    dir.mkdirs();
} catch (Exception e) {
    Log.e("CallRecorder", "RecordService::makeOutputFile unable to create directory "   dir   ": "   e);
    Toast t = Toast.makeText(getApplicationContext(), "CallRecorder was unable to create the directory "   dir   " to store recordings: "   e, Toast.LENGTH_LONG);
    t.show();
    return null;
}
} else {
if (!dir.canWrite()) {
    Log.e(TAG, "RecordService::makeOutputFile does not have write permission for directory: "   dir);
    Toast t = Toast.makeText(getApplicationContext(), "CallRecorder does not have write permission for the directory directory "   dir   " to store recordings", Toast.LENGTH_LONG);
    t.show();
    return null;
}
  
  1. вы можете получить местоположение SD-карты, запросив систему как,

    Environment.getExternalStorageDirectory();

и не забудьте добавить разрешение пользователя

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

Комментарии:

1. Я пробовал это! Environment.getExternalStorageDirectory () как я уже сказал в своем вопросе; Я также попробовал это «/ sdcard / AudioRecording», оба сохраняются во внутренней памяти!