我是新手,我试图播放音频播放并仅停止1个按钮,但我现在遇到了麻烦。
如果我在播放音频时触摸按钮,它就不会停止,甚至再次播放音频并发出双重声音。
这是我的代码
public class ProjectisengActivity extends Activity{
ImageButton mainkan;
MediaPlayer mp;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.test2);
mainkan=(ImageButton)findViewById(R.id.imageButton1);
mainkan.setOnClickListener(new OnClickListener(){
@Override
public void onClick(View v){
go();
}
});
public void go(){
mp=MediaPlayer.create(ProjectisengActivity.this, R.raw.test);
if(mp.isPlaying()){
mp.stop();
try {
mp.prepare();
} catch (IllegalStateException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
mp.seekTo(0);
}
else {
mp.start();
}
我是为Android 3.0(HoneyComb)创建的
答案 0 :(得分:2)
在go函数中尝试以下代码....
public void go() {
if(mp == null) {
mp=MediaPlayer.create(ProjectisengActivity.this, R.raw.test);
}
if(mp.isPlaying()){
mp.stop();
try {
mp.prepare();
} catch (IllegalStateException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
mp.seekTo(0);
}
else {
mp.start();
}
}
答案 1 :(得分:2)
很简单,您应该按照以下步骤来实现这一目标。
在test2.xml中创建两个名称start和stop的按钮。
在xml文件中设置停止按钮的android:visibility
属性。
现在在你的活动中获取这两个按钮的id并编写代码 启动和停止媒体播放器。
设置可见性属性在开始点击时停止,并且可以看到停止按钮, 按住相反的方式停止点击。
答案 2 :(得分:1)
我认为你错了这句话:
mp=MediaPlayer.create(ProjectisengActivity.this, R.raw.test);
每次用户点击按钮时都会创建新实例,因此它永远不会播放并重新开始。将此行放入onCreate
而不是go()
答案 3 :(得分:0)
试试这个,
public class MainActivity extends Activity {
MediaPlayer mPlayer;
int flag = 0;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button mButton = (Button) findViewById(R.id.button1);
mButton.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
if (flag == 0) {
Log.v("Inside if", "Success" + "");
mPlayer = MediaPlayer.create(getApplicationContext(),
R.raw.sample);
mPlayer.start();
flag++;
} else {
Log.v("Inside else", "Success" + "");
mPlayer.stop();
mPlayer.release();
flag = 0;
}
}
});
}
}