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