2016-04-26 92 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

相关问题