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

相關問題