【发布时间】:2013-08-28 19:18:29
【问题描述】:
我正在尝试播放 res/raw 文件夹中的音频文件。
但收到错误
准备失败:状态 = 0x1
我的代码:
package com.example.lvm;
import java.io.IOException;
import android.media.MediaPlayer;
import android.media.MediaPlayer.OnCompletionListener;
import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.Toast;
public class MainActivity extends Activity {
Button introAudio;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
introAudio=(Button)findViewById(R.id.introAudio);
introAudio.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
MediaPlayer mp = new MediaPlayer();
String name = "greeting";
mp.setOnCompletionListener(new OnCompletionListener() {
@Override
public void onCompletion(MediaPlayer mp) {
mp.release();
}
});
try {
mp.setDataSource("android.resource://com.example.lvm/raw/"+name);
mp.prepare();
mp.start();
} catch (Exception e) {
Toast.makeText(MainActivity.this, e.getMessage(), Toast.LENGTH_LONG).show();
}
}
});
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.activity_main, menu);
return true;
}
}
【问题讨论】:
-
我也有同样的问题。但是在我的情况下,我下载文件并存储它。文件在我调用准备之前就存在,所有其他流都已关闭。如果我稍后调用 prepare 它不会引发异常。不知道是什么问题,但还没有找到解决办法。文件名只是 guid
-
像往常一样,我一分享我的评论就找到了解决方案。首先,我检查了 DDMS 中的日志以查看有关错误的任何其他信息。我在异常
Failed to open file 'audio/2f32a5de.mp4'. (No such file or directory)之前发现了该错误。之后我发现在一种特定情况下我没有正确创建完整路径:)