2016-04-26 3 views
0

Я делаю приложение, которое позволяет пользователям записывать аудиоклипы и получать к ним доступ. Я пытаюсь сохранить записанные аудиофайлы внутри пользовательской папки в моей галерее.Невозможно создать новый каталог внутри папки Gallery

У меня есть функция, которая создает файл и устанавливает его местоположение:

private File getOutputMediaFile(int type) { 
     File mediaStorageDir = new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DCIM) + File.separator + "dirName" + File.separator); 
     if (!mediaStorageDir.exists()) { 
      if (!mediaStorageDir.mkdirs()) { 
       return null; 
      } 
     } 
     String timeStamp = new SimpleDateFormat("yyyyMMdd_HHmmss").format(new Date()); 
     File mediaFile; 
     if (type == MEDIA_TYPE_IMAGE) { 
      mediaFile = new File(mediaStorageDir.getPath() + File.separator + 
        "IMG_" + timeStamp + ".jpg"); 
     } else if (type == MEDIA_TYPE_VIDEO) { 
      mediaFile = new File(mediaStorageDir.getPath() + File.separator + 
        "VID_" + timeStamp + ".mp4"); 
     } else if (type == MEDIA_TYPE_AUDIO) { 
      mediaFile = new File(mediaStorageDir.getPath() + File.separator + 
        "AUD" + timeStamp + ".WAV"); 
     } 
     else { 
      return null; 
     } 
     return mediaFile; 
    } 

Я использую getOutputMediaFile, чтобы сохранить записанный звуковой файл, как так:

audioRecorder = new MediaRecorder(); 
audioFilename = getOutputMediaFile(MEDIA_TYPE_AUDIO).getAbsolutePath(); 
//more code 
audioRecorder.setOutputFile(getOutputMediaFile(MEDIA_TYPE_AUDIO).getAbsolutePath()); 

Когда я вхожу audioFilename, я получаю следующий путь: /storage/emulated/0/DCIM/folderName/AUD20160425_172620.WAV

Я могу сохранить и воспроизвести аудиофайл, но с оговоркой:

  1. Файл НЕ хранится в gallery/myFolder; Я могу просматривать только аудиофайл, если я запускаю приложение по умолчанию play music и заглядываю в «мои плейлисты».

Я следующие права в моем манифесте:

<uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" /> 
    <uses-permission android:name="android.permission.RECORD_AUDIO" /> 
    <uses-permission android:name="android.permission.RECORD_VIDEO" /> 
    <uses-permission android:name="android.permission.WAKE_LOCK" /> 
    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /> 
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> 

Что я делаю неправильно?

+0

Согласно вашему описанию, вы должны перезагрузить свой телефон, чтобы просмотреть записанный аудиофайл в диспетчере файлов, правильно? – sonngaytho

+0

Да, это правильно – Frosty619

ответ

0

Я думаю, нам нужно сообщить MediaStore, что «создается новый файл». Попробуйте следующее:

public void refreshGallery(File file, Context context) { 
    Intent scanIntent = new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE); 
    Uri contentUri = Uri.fromFile(file); 
    scanIntent.setData(contentUri); 
    context.sendBroadcast(scanIntent); 
} 
+0

Я пробовал это, но у меня такая же проблема. – Frosty619

+0

Я не вижу ничего плохого в вашем коде. Возможно, мне нужно отлаживать, чтобы найти, откуда эта проблема. – sonngaytho

Смежные вопросы