我的布局 xml 文件显示如下:
Song1 playbutton
Song2 playbutton
Song3 playbutton
当用户点击 Song1 播放按钮时,我需要播放 Song1,如果用户点击 Song2 播放按钮,我需要在中间检查 Song2 和 Song3 mediapalyer 实例
我收到 IllegalStateException 和有时 NullPointerException 如何检查,有人可以帮忙吗?
这是我的代码:
MediaPlayer mp1=new MediaPlayer();
MediaPlayer mp2=new MediaPlayer();
playbtn.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
if(mp2!=null){
if(mp2.isPlaying()){
mp2.stop();
mp2.release();
mp2=null;
play20.setVisibility(View.VISIBLE);
}
}
playbtn.setVisibility(View.INVISIBLE);
pausebtn.setVisibility(View.VISIBLE);
try {
Log.d("Start Media Player", "Start Media Player");
AssetFileDescriptor descriptor = MediaActivity.this
.getApplicationContext().getAssets()
.openFd("volumc.mp3");
mp1.setDataSource(descriptor.getFileDescriptor(),
descriptor.getStartOffset(), descriptor.getLength());
// descriptor.close();
mp1.prepare();
mp1.setLooping(true);
mp1.start();
} catch (IllegalArgumentException e) {
e.printStackTrace();
} catch (IllegalStateException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
});
pausebtn.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
Log.d("pausebtn", "pausebtn");
playbtn.setVisibility(View.VISIBLE);
pausebtn.setVisibility(View.INVISIBLE);
mp1.stop();
mp1.release();
mp1=null;
}
});
// 20
play20.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
if(mp1!=null){
if(mp1.isPlaying()){
mp1.stop();
mp1.release();
mp1=null;
playbtn.setVisibility(View.VISIBLE);
}
}
play20.setVisibility(View.INVISIBLE);
pause20.setVisibility(View.VISIBLE);
try {
Log.d("Start Media Player", "Start Media Player");
AssetFileDescriptor descriptor = MediaActivity.this
.getApplicationContext().getAssets()
.openFd("volumc.mp3");
mp2.setDataSource(descriptor.getFileDescriptor(),
descriptor.getStartOffset(), descriptor.getLength());
// descriptor.close();
mp2.prepare();
mp2.setLooping(true);
mp2.start();
} catch (IllegalArgumentException e) {
e.printStackTrace();
} catch (IllegalStateException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
});
pause20.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
Log.d("pausebtn", "pausebtn");
play20.setVisibility(View.VISIBLE);
pause20.setVisibility(View.INVISIBLE);
mp2.stop();
mp2.release();
}
});