2012-02-15 16 views
2

sdcardからオーディオを再生するときに、MediaPlayerがファイルを再生します。しかし、getCacheDir()から再生するとエラーになります。 MediaPlayergetCacheDir()のファイルを再生できません。ここでキャッシュディレクトリからオーディオを再生する

は、コードスニペットです:

private void startPlaying(String asAudioFileName) { 
    File fFile = new File(VocaPreview.this.getCacheDir() + "/" + asAudioFileName.toLowerCase() + ".mp3"); 

    if(!fFile.isFile()) { 
     Toast.makeText(getApplicationContext(), "File not found", Toast.LENGTH_SHORT).show(); 
    } else { 
     try { 
      FileInputStream fisAudio = new FileInputStream(fFile); 
      //fmpAudio.setDataSource(VocaPreview.this.getCacheDir() + "/" + asAudioFileName.toLowerCase() + ".mp3"); 
      //fmpAudio.setDataSource("/sdcard/2.mp3"); 

      fmpAudio.setDataSource(fisAudio.getFD()); 
      fmpAudio.prepare(); 
      fmpAudio.start(); 
     } catch(IOException ioe) { 
      Log.e("START PLAYING", ioe.getMessage()); 
     } 
    } 
} 

答えて

7

UPDATE: は、私はちょうどこのBlogから読み取られ、私の問題を解決しました私がキャッシュ内でオーディオを再生するために、私はこの行を追加しました。それだけです。これが将来誰にでも役立つことを願っています。 Here is the method

File file = new File(filepath) 
file.setReadable(true, false); 
0

ここでまたAPIレベル< 9上で動作機能があります:

Runtime.getRuntime().exec("chmod 644 "+ outputFile.getAbsolutePath());

関連する問題