从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());
}
}
}
Run Code Online (Sandbox Code Playgroud)
更新:我刚刚从这个博客阅读并解决了我的问题,为了让我在缓存中播放音频,我添加了这一行,就是这样.希望这对未来的任何人都有帮助.这是方法.
File file = new File(filepath)
file.setReadable(true, false);
Run Code Online (Sandbox Code Playgroud)