2016-04-26 18 views
0

私は、ユーザーがオーディオクリップを録画してアクセスできるようにするアプリを作っています。私は、私のギャラリーのカスタムフォルダ内に録音されたオーディオファイルを保存しようとしています。ギャラリーフォルダ内に新しいディレクトリを作成できません

私は、ファイルを作成し、その場所を設定する関数を持っている:

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