从缓存目录播放音频

时间:2012-02-15 08:17:36

标签: android

从SD卡播放音频时,MediaPlayer播放该文件。但是从getCacheDir()播放时,这是一个错误。我的结论是正确的MediaPlayer无法播放来自getCacheDir()的文件吗?

以下是代码段:

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());
        }
    }
}

2 个答案:

答案 0 :(得分:7)

更新: 我只是从这个Blog读取并解决了我的问题,为了让我在缓存中播放音频,我添加了这一行,就是这样。希望这对未来的任何人都有帮助。 Here is the method

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

答案 1 :(得分:0)

这是一个也适用于API级别的函数< 9:

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