Android MediaPlayer没有准备。错误(1,-4)
问题描述:
所以我一直在尝试为android制作一个简单的音效应用程序。 下面是相关代码:Android MediaPlayer没有准备。错误(1,-4)
public static final String LOG_TAG = "BCA";
public MediaPlayer mp;
@Override
public void onCreate(Bundle savedInstanceState)
{
Log.v(LOG_TAG, "creating");
super.onCreate(savedInstanceState);
setContentView(R.layout.main_list);
mp = new MediaPlayer();
mp.setAudioStreamType(AudioManager.STREAM_MUSIC);
Log.v(LOG_TAG, "set stream type");
playSound();
}
public void playSound()
{
try {
mp.setDataSource("R.raw.sound1");
Log.v(LOG_TAG, "set data source");
mp.setOnPreparedListener(this);
mp.setOnErrorListener(this);
mp.prepareAsync();
Log.v(LOG_TAG, "preparing");
}
catch (IllegalArgumentException e) {
e.printStackTrace();
}
catch (IllegalStateException e) {
e.printStackTrace();
}
catch (IOException e) {
e.printStackTrace();
}
}
public void onPrepared(MediaPlayer mediaPlayer)
{
Log.v(LOG_TAG, "finished preparing; starting");
mp.start();
Log.v(LOG_TAG, "started music");
}
public boolean onError(MediaPlayer mp, int e, int f)
{
Log.v(LOG_TAG, "There was an error");
Log.v(LOG_TAG, mp + " " + e + " " + f);
mp.reset();
return true;
}
基本上它得到了一组“设置数据源”标签,但从未完成准备。错误代码是(1,4)1显然是未知错误。我已经使用了多种声音文件,其中一个我知道作品的玩家只要使用mp.create(等)
我不知道这是怎么回事就提前
由于工作时
编辑: 所以我跟着亚历克西斯卡地亚给出的链接的例子,现在没有错误。但是,FileinputStream永远不会结束。该计划似乎失速。 这是新代码:
public void playMusic()
{
File file = new File("R.raw.music1");
Log.v(LOG_TAG, "set file");
try {
Log.v(LOG_TAG, "in try block");
FileInputStream is = new FileInputStream(file);
Log.v(LOG_TAG, "set file input stream");
mp.setDataSource(is.getFD());
Log.v(LOG_TAG, "set data source");
mp.setOnPreparedListener(this);
mp.setOnErrorListener(this);
Log.v(LOG_TAG, "set on prepared/error listeners");
mp.prepareAsync();
Log.v(LOG_TAG, "preparing");
}
答
看到这个问题的答案修改代码:MediaPlayer.setDataSource causes IOException for valid file
但你不能做mp.setDataSource("R.raw.sound1");
好,谢谢!这是有道理的。我现在似乎还有另一个问题。没有错误,但程序只是永远不会完成设置FileInputStream。这里是新的代码: – user1600704 2012-08-16 14:47:04
但是你想玩什么类型的声音?如果它的短裤听起来,它更好地使用SoundPool类:http://developer.android.com/reference/android/media/SoundPool.html – 2012-08-16 14:49:39
有些会更长......在20-30秒左右。我可以在'FileInputStream = new FileInputStream(file);'行之前获得日志消息,但它永远不会结束。该文件只是R.raw.music1文件 – user1600704 2012-08-16 14:54:27