2012-10-05 90 views
1

我是新手,我试图使播放音频播放和停止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(蜂巢)

+0

看看我的答案,在这里我添加一个标志值,来检查。 – Aerrow

+0

尝试使用切换按钮而不是按钮.. –

+0

每次创建新的媒体播放器实例时,都会发生这种情况......这是错误的! –

回答

2

试试下面的去功能代码....

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(); 
    } 
} 
+0

感谢它的工作,并且很简单。所以我使用这个答案 – Ardi

+0

欢迎你... –

1

我想你错了这行:

mp=MediaPlayer.create(ProjectisengActivity.this, R.raw.test); 

创建新实例每次用户点击按钮,所以它不会播放并重新开始。把这一行到onCreate,而不是go()

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; 
       } 


      } 

     }); 
    } 



} 
2

这很简单,你应该按照以下步骤来做到这一点。

  1. 在你的test2.xml中创建两个按钮名称start和stop。

  2. 设置android:visibility属性在xml文件中没有了停止按钮。

  3. 现在在您的活动中获取这两个按钮的ID并编写代码为 启动和停止媒体播放器。

  4. 将可见性属性设置为开始点击和停止按钮可见, 跟随其停止点击相反。

相关问题