我正在制作一个简单的媒体播放器应用程序。它会输入一个文本字段(et),用户只需输入要播放的歌曲的确切名称,然后按下要播放的播放按钮(ib1)即可。歌曲保存在SD卡内。我的代码是:
ib1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
final String value = et.getText().toString();
String full_path = "/mnt/media_rw/sdcard/mymusic/" + value + ".mp3";
et.setText("");
mp = new MediaPlayer();
mp.setDataSource(full_path);
mp.prepare();
mp.start();
} });
但这会产生Media Player错误(-38.0)。因此,在Media Player called in state 0, error (-38,0)之后,我尝试用以下代码替换mp行:
mp.setDataSource(full_path);
mp.setOnPreparedListener(null);
mp.prepareAsync();
mp.start();
但它也不起作用,产生错误(1,-2147483648)。有人可以帮我或为代码提出一些建议吗?非常感谢
答案 0 :(得分:0)
您需要使用侦听器在onPrepared方法中调用mediaPlayer.start()。您收到此错误是因为您在达到准备状态之前调用了mp.start()。
以下是如何做到这一点:
mp.setDataSource(full_path);
mp.setOnPreparedListener(this);
mp.prepareAsync();
public void onPrepared(MediaPlayer player) {
player.start();
}