[英]Play sound from sdcard with MediaPlayer on android 2.3
This works with android 4.2: 这适用于android 4.2:
SOUNDS_DIR = getFilesDir().getAbsolutePath() + "/";
SoundToPlay = new MediaPlayer();
SoundToPlay.setDataSource(SOUNDS_DIR + ResourceID
+ ".mp3");
SoundToPlay.prepare();
SoundToPlay.start();
When i run it on android 2.3, LogCat prints: 当我在android 2.3上运行它时,LogCat会打印:
MediaPlayer error(1, -2147483648) MediaPlayer错误(1,-2147483648)
If i use the exactly same file as resource (/res/raw/), works fine also with 2.3 如果我使用与资源(/ res / raw /)完全相同的文件,则在2.3上也可以正常工作
Maybe try before to validate your path, like: 也许先尝试验证路径,例如:
File path = Environment.getExternalStoragePublicDirectory(
Environment.DIRECTORY_MUSIC);
File file = new File(path, ResourceID+".mp3");
// if file exists ....
After you can write: 写完之后:
SoundToPlay = new MediaPlayer();
SoundToPlay.setDataSource(path + "/" + ResourceID + ".mp3");
SoundToPlay.prepare();
SoundToPlay.start();
[EDIT] [编辑]
Instead of 代替
SoundToPlay.setDataSource(SOUNDS_DIR + ResourceID + ".mp3");
set 组
FileInputStream fileInputStream = new FileInputStream(SOUNDS_DIR + ResourceID
+ ".mp3");
SoundToPlay.setDataSource(fileInputStream.getFD());
SoundToPlay.prepare();
Try this: 尝试这个:
String path = Environment.getExternalStorageDirectory() + "/sound.mp3";
File file = new File(path);
Uri uri = Uri.fromFile(file);
MediaPlayer mp = MediaPlayer.create(this, uri);
if (mp != null)
{
mp.setOnCompletionListener(new OnCompletionListener() {
@Override
public void onCompletion(MediaPlayer mp) {
mp.release();
}
});
mp.start();
}
Good Luck. 祝好运。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.