#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;
}
-
вы можете получить местоположение SD-карты, запросив систему как,
Environment.getExternalStorageDirectory();
и не забудьте добавить разрешение пользователя
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
Комментарии:
1. Я пробовал это! Environment.getExternalStorageDirectory () как я уже сказал в своем вопросе; Я также попробовал это «/ sdcard / AudioRecording», оба сохраняются во внутренней памяти!