我设计了4个RaidoButton 然后对4个 进行监听 然后一选择后播放 地区方言 以前没用过 MediaPlayerMediaPlayer 是否可以这么写虽然可以做到 播放下一个音效 然后停止上一个音效 但是 问题来了 如果播放完整的音效 再选择的时候 却报错了.public void onClick(View v) {
// TODO Auto-generated method stub
String media = titls;
switch (v.getId()) {
case R.id.radioButton1:
if (rbtPt.isChecked()) {
rbtPt.setChecked(true);
rbtGd.setChecked(false);
rbtSc.setChecked(false);
rbtKa.setChecked(false);
if (mediaPlayer.isPlaying()) {
mediaPlayer.stop();
mediaPlayer.reset();
mediaPlayer.release();
}
if (media.equals("开会")) {
mediaPlayer = MediaPlayer.create(Scenese.this,
R.drawable.meeting_tw);
} else if (media.equals("开车")) {
mediaPlayer = MediaPlayer.create(Scenese.this,
R.drawable.car_tw);
} else if (media.equals("出差")) {
mediaPlayer = MediaPlayer.create(Scenese.this,
R.drawable.travel_tw);
} else if (media.equals("培训")) {
mediaPlayer = MediaPlayer.create(Scenese.this,
R.drawable.train_tw);
} else if (media.equals("手机没电")) {
mediaPlayer = MediaPlayer.create(Scenese.this,
R.drawable.nobattery_tw);
} else if (media.equals("运动")) {
mediaPlayer = MediaPlayer.create(Scenese.this,
R.drawable.sport_tw);
} else if (media.equals("不方便接听")) {
mediaPlayer = MediaPlayer.create(Scenese.this,
R.drawable.nocall_tw);
}
mediaPlayer.start(); }
break;
case R.id.radioButton2:
if (rbtGd.isChecked()) {
rbtPt.setChecked(false);
rbtGd.setChecked(true);
rbtSc.setChecked(false);
rbtKa.setChecked(false);
if (mediaPlayer.isPlaying()) {
mediaPlayer.stop();
mediaPlayer.reset();
mediaPlayer.release();
}
if (media.equals("开会")) {
mediaPlayer = MediaPlayer.create(Scenese.this,
R.drawable.meeting_yy);
} else if (media.equals("开车")) {
mediaPlayer = MediaPlayer.create(Scenese.this,
R.drawable.car_yy);
} else if (media.equals("出差")) {
mediaPlayer = MediaPlayer.create(Scenese.this,
R.drawable.travel_yy);
} else if (media.equals("培训")) {
mediaPlayer = MediaPlayer.create(Scenese.this,
R.drawable.train_yy);
} else if (media.equals("手机没电")) {
mediaPlayer = MediaPlayer.create(Scenese.this,
R.drawable.nobattery_yy);
} else if (media.equals("运动")) {
mediaPlayer = MediaPlayer.create(Scenese.this,
R.drawable.sport_yy);
} else if (media.equals("不方便接听")) {
mediaPlayer = MediaPlayer.create(Scenese.this,
R.drawable.nocall_yy);
}
mediaPlayer.start(); }
break;
case R.id.radioButton3:
if (rbtSc.isChecked()) {
rbtPt.setChecked(false);
rbtGd.setChecked(false);
rbtSc.setChecked(true);
rbtKa.setChecked(false);
if (mediaPlayer.isPlaying()) {
mediaPlayer.stop();
mediaPlayer.reset();
mediaPlayer.release();
}
if (media.equals("开会")) {
mediaPlayer = MediaPlayer.create(Scenese.this,
R.drawable.meeting_sc);
} else if (media.equals("开车")) {
mediaPlayer = MediaPlayer.create(Scenese.this,
R.drawable.car_sc);
} else if (media.equals("出差")) {
mediaPlayer = MediaPlayer.create(Scenese.this,
R.drawable.travel_sc);
} else if (media.equals("培训")) {
mediaPlayer = MediaPlayer.create(Scenese.this,
R.drawable.train_sc);
} else if (media.equals("手机没电")) {
mediaPlayer = MediaPlayer.create(Scenese.this,
R.drawable.nobattery_sc);
} else if (media.equals("运动")) {
mediaPlayer = MediaPlayer.create(Scenese.this,
R.drawable.sport_sc);
} else if (media.equals("不方便接听")) {
mediaPlayer = MediaPlayer.create(Scenese.this,
R.drawable.nocall_sc);
}
mediaPlayer.start(); }
break;
case R.id.radioButton4:
if (rbtKa.isChecked()) {
rbtPt.setChecked(false);
rbtGd.setChecked(false);
rbtSc.setChecked(false);
rbtKa.setChecked(true);
if (mediaPlayer.isPlaying()) {
mediaPlayer.stop();
mediaPlayer.reset();
mediaPlayer.release();
}
if (media.equals("开会")) {
mediaPlayer = MediaPlayer.create(Scenese.this,
R.drawable.meeting_db);
} else if (media.equals("开车")) {
mediaPlayer = MediaPlayer.create(Scenese.this,
R.drawable.car_db);
} else if (media.equals("出差")) {
mediaPlayer = MediaPlayer.create(Scenese.this,
R.drawable.travel_db);
} else if (media.equals("培训")) {
mediaPlayer = MediaPlayer.create(Scenese.this,
R.drawable.train_db);
} else if (media.equals("手机没电")) {
mediaPlayer = MediaPlayer.create(Scenese.this,
R.drawable.nobattery_db);
} else if (media.equals("运动")) {
mediaPlayer = MediaPlayer.create(Scenese.this,
R.drawable.sport_db);
} else if (media.equals("不方便接听")) {
mediaPlayer = MediaPlayer.create(Scenese.this,
R.drawable.nocall_db);
}
mediaPlayer.start();
}
break;
case R.id.back4:
finish();
break;
case R.id.but_ci_intent:
break;
case R.id.but_ci_del:
finish();
break;
} mediaPlayer.setOnCompletionListener(new OnCompletionListener() { public void onCompletion(MediaPlayer mp) {
// TODO Auto-generated method stub
try {
mp.release();
} catch (Exception e) {
e.printStackTrace();
}
}
});
mediaPlayer.setOnErrorListener(new OnErrorListener() { public boolean onError(MediaPlayer mp, int what, int extra) {
// TODO Auto-generated method stub
try {
mp.release();
} catch (Exception e) {
e.printStackTrace();
}
return false;
}
});
// TODO Auto-generated method stub
String media = titls;
switch (v.getId()) {
case R.id.radioButton1:
if (rbtPt.isChecked()) {
rbtPt.setChecked(true);
rbtGd.setChecked(false);
rbtSc.setChecked(false);
rbtKa.setChecked(false);
if (mediaPlayer.isPlaying()) {
mediaPlayer.stop();
mediaPlayer.reset();
mediaPlayer.release();
}
if (media.equals("开会")) {
mediaPlayer = MediaPlayer.create(Scenese.this,
R.drawable.meeting_tw);
} else if (media.equals("开车")) {
mediaPlayer = MediaPlayer.create(Scenese.this,
R.drawable.car_tw);
} else if (media.equals("出差")) {
mediaPlayer = MediaPlayer.create(Scenese.this,
R.drawable.travel_tw);
} else if (media.equals("培训")) {
mediaPlayer = MediaPlayer.create(Scenese.this,
R.drawable.train_tw);
} else if (media.equals("手机没电")) {
mediaPlayer = MediaPlayer.create(Scenese.this,
R.drawable.nobattery_tw);
} else if (media.equals("运动")) {
mediaPlayer = MediaPlayer.create(Scenese.this,
R.drawable.sport_tw);
} else if (media.equals("不方便接听")) {
mediaPlayer = MediaPlayer.create(Scenese.this,
R.drawable.nocall_tw);
}
mediaPlayer.start(); }
break;
case R.id.radioButton2:
if (rbtGd.isChecked()) {
rbtPt.setChecked(false);
rbtGd.setChecked(true);
rbtSc.setChecked(false);
rbtKa.setChecked(false);
if (mediaPlayer.isPlaying()) {
mediaPlayer.stop();
mediaPlayer.reset();
mediaPlayer.release();
}
if (media.equals("开会")) {
mediaPlayer = MediaPlayer.create(Scenese.this,
R.drawable.meeting_yy);
} else if (media.equals("开车")) {
mediaPlayer = MediaPlayer.create(Scenese.this,
R.drawable.car_yy);
} else if (media.equals("出差")) {
mediaPlayer = MediaPlayer.create(Scenese.this,
R.drawable.travel_yy);
} else if (media.equals("培训")) {
mediaPlayer = MediaPlayer.create(Scenese.this,
R.drawable.train_yy);
} else if (media.equals("手机没电")) {
mediaPlayer = MediaPlayer.create(Scenese.this,
R.drawable.nobattery_yy);
} else if (media.equals("运动")) {
mediaPlayer = MediaPlayer.create(Scenese.this,
R.drawable.sport_yy);
} else if (media.equals("不方便接听")) {
mediaPlayer = MediaPlayer.create(Scenese.this,
R.drawable.nocall_yy);
}
mediaPlayer.start(); }
break;
case R.id.radioButton3:
if (rbtSc.isChecked()) {
rbtPt.setChecked(false);
rbtGd.setChecked(false);
rbtSc.setChecked(true);
rbtKa.setChecked(false);
if (mediaPlayer.isPlaying()) {
mediaPlayer.stop();
mediaPlayer.reset();
mediaPlayer.release();
}
if (media.equals("开会")) {
mediaPlayer = MediaPlayer.create(Scenese.this,
R.drawable.meeting_sc);
} else if (media.equals("开车")) {
mediaPlayer = MediaPlayer.create(Scenese.this,
R.drawable.car_sc);
} else if (media.equals("出差")) {
mediaPlayer = MediaPlayer.create(Scenese.this,
R.drawable.travel_sc);
} else if (media.equals("培训")) {
mediaPlayer = MediaPlayer.create(Scenese.this,
R.drawable.train_sc);
} else if (media.equals("手机没电")) {
mediaPlayer = MediaPlayer.create(Scenese.this,
R.drawable.nobattery_sc);
} else if (media.equals("运动")) {
mediaPlayer = MediaPlayer.create(Scenese.this,
R.drawable.sport_sc);
} else if (media.equals("不方便接听")) {
mediaPlayer = MediaPlayer.create(Scenese.this,
R.drawable.nocall_sc);
}
mediaPlayer.start(); }
break;
case R.id.radioButton4:
if (rbtKa.isChecked()) {
rbtPt.setChecked(false);
rbtGd.setChecked(false);
rbtSc.setChecked(false);
rbtKa.setChecked(true);
if (mediaPlayer.isPlaying()) {
mediaPlayer.stop();
mediaPlayer.reset();
mediaPlayer.release();
}
if (media.equals("开会")) {
mediaPlayer = MediaPlayer.create(Scenese.this,
R.drawable.meeting_db);
} else if (media.equals("开车")) {
mediaPlayer = MediaPlayer.create(Scenese.this,
R.drawable.car_db);
} else if (media.equals("出差")) {
mediaPlayer = MediaPlayer.create(Scenese.this,
R.drawable.travel_db);
} else if (media.equals("培训")) {
mediaPlayer = MediaPlayer.create(Scenese.this,
R.drawable.train_db);
} else if (media.equals("手机没电")) {
mediaPlayer = MediaPlayer.create(Scenese.this,
R.drawable.nobattery_db);
} else if (media.equals("运动")) {
mediaPlayer = MediaPlayer.create(Scenese.this,
R.drawable.sport_db);
} else if (media.equals("不方便接听")) {
mediaPlayer = MediaPlayer.create(Scenese.this,
R.drawable.nocall_db);
}
mediaPlayer.start();
}
break;
case R.id.back4:
finish();
break;
case R.id.but_ci_intent:
break;
case R.id.but_ci_del:
finish();
break;
} mediaPlayer.setOnCompletionListener(new OnCompletionListener() { public void onCompletion(MediaPlayer mp) {
// TODO Auto-generated method stub
try {
mp.release();
} catch (Exception e) {
e.printStackTrace();
}
}
});
mediaPlayer.setOnErrorListener(new OnErrorListener() { public boolean onError(MediaPlayer mp, int what, int extra) {
// TODO Auto-generated method stub
try {
mp.release();
} catch (Exception e) {
e.printStackTrace();
}
return false;
}
});
03-20 11:07:04.388: E/AndroidRuntime(29703): java.lang.IllegalStateException
03-20 11:07:04.388: E/AndroidRuntime(29703): at android.media.MediaPlayer.isPlaying(Native Method)
03-20 11:07:04.388: E/AndroidRuntime(29703): at com.eastcom.intelligentanswer.ui.Scenese.onClick(Scenese.java:111)
03-20 11:07:04.388: E/AndroidRuntime(29703): at android.view.View.performClick(View.java:2538)
03-20 11:07:04.388: E/AndroidRuntime(29703): at android.widget.CompoundButton.performClick(CompoundButton.java:105)
03-20 11:07:04.388: E/AndroidRuntime(29703): at android.view.View$PerformClick.run(View.java:9152)
03-20 11:07:04.388: E/AndroidRuntime(29703): at android.os.Handler.handleCallback(Handler.java:587)
03-20 11:07:04.388: E/AndroidRuntime(29703): at android.os.Handler.dispatchMessage(Handler.java:92)
03-20 11:07:04.388: E/AndroidRuntime(29703): at android.os.Looper.loop(Looper.java:130)
03-20 11:07:04.388: E/AndroidRuntime(29703): at android.app.ActivityThread.main(ActivityThread.java:3691)
03-20 11:07:04.388: E/AndroidRuntime(29703): at java.lang.reflect.Method.invokeNative(Native Method)
03-20 11:07:04.388: E/AndroidRuntime(29703): at java.lang.reflect.Method.invoke(Method.java:507)
03-20 11:07:04.388: E/AndroidRuntime(29703): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:907)
03-20 11:07:04.388: E/AndroidRuntime(29703): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:665)
03-20 11:07:04.388: E/AndroidRuntime(29703): at dalvik.system.NativeStart.main(Native Method)
喷完之后又觉得不对,找我谈话啦,给出上面的建议,嘿嘿让我们初学者遇到问题,自己先试着搞,看资料,google都可以,告诉我说像你现在遇到的错误别人大部分都已经碰到过啦,google一下说不定有同样的问题呢。这样提高才快。
楼主一起加油吧,
判断 原来我播放start()后 没有销毁 TAT
做了一判断
if (mediaPlayer.isPlaying()) {
mediaPlayer.stop();
mediaPlayer.reset();
mediaPlayer.release();
}