MediaPlayer错误android
我有一个活动,有一系列的按钮,当按下时应播放音频文件。我一直在尝试使用MediaPlayer实现这一点,但我无法让它工作。 这里是代码我一直在努力:MediaPlayer错误android
final MediaPlayer mp = new MediaPlayer();
Button ger1play = (Button) findViewById(R.id.ger1play);ger1play.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
mp.setDataSource(this, R.raw.greet_1);
mp.prepare();
mp.start();
}
});
的setDateSource方法似乎没有工作,谁能告诉我在哪里,我错了? 我想然后根据按下哪个按钮将mediaPlayer设置为相关的音频文件,这可能吗?
更新
final MediaPlayer mp = new MediaPlayer();
Button ger1play = (Button) findViewById(R.id.ger1play);ger1play.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
try {
Uri myUri = Uri.parse(R.raw.greet_1);
mp.setDataSource(GreetingsLesson.this, R.raw.greet_1);
mp.prepare();
mp.start();
} catch (IllegalArgumentException e) {
e.printStackTrace();
} catch (IllegalStateException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
});
试试这个:
final MediaPlayer mp = new MediaPlayer();
Button ger1play = (Button) findViewById(R.id.ger1play);ger1play.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
try {
mp.setDataSource(CurrentActivity.this, R.raw.greet_1);
mp.prepare();
mp.start();
} catch (IllegalArgumentException e) {
e.printStackTrace();
} catch (IllegalStateException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
});
Ifyou想与其中一个文件发送的媒体播放器对象fromapplication原料资源或应用程序资产文件,您可以找时间做如下:
try {
AssetFileDescriptor fd = getResources().openRawResouceFd(R.raw.greet_1);
mp.setDataSource(fd.getFileDescriptor(), fd.getStartOffset(), fd.getLength());
mp.start();
fd.close();
} catch (IllegalArgumentException e) {
// handle exception
} catch (IllegalStateException e) {
// handle exception
} catch (IOException e) {
// handle exception
}
04-26 15:08:26.326:E/MediaPlayer(528):attachNewPlayer在状态8中调用 04-26 15:08:26.326:W/System.err(528):java.lang.IllegalStateException 04-26 15:08:26.326:W/System.err(528):\t at android.media.MediaPlayer.setDataSource(Native Method) 这是在添加代码后单击按钮时发生的情况 – user1356791 2012-04-26 14:09:48
Wh y不只是使用
mp = MediaPlayer.create(this, R.raw.greet_1);
然后你不需要准备或开始。
这不起作用说:“最后的局部变量mp不能被分配,因为它是在一个封闭类型中定义的” 仍然在努力获得这个工作 – user1356791 2012-04-26 15:01:17
你在模拟器中运行这个吗?如果是这样检查你的AVD管理器已经在硬件下,添加属性“音频播放支持|是”
当我尝试这个Eclipse仍然给我一个错误,它建议更改greet_1到Uri的类型? – user1356791 2012-04-26 13:21:27
请确保raw的位置是'res/raw /',并且您正在使用'mp.setDataSource(CurrentActivity.this,R.raw.greet_1);' – 2012-04-26 13:26:28
它是res/raw。我不明白为什么它不工作? – user1356791 2012-04-26 13:27:50