2014-04-01 118 views
0

我需要一个按钮,当按下时会启动,再次按下时会停止。否则,我有重叠的声音。请问您能帮助我吗?以下是我目前拥有的功能,并且无法再次单击时停止按钮,因此当前只是播放并在声音完成时停止,导致声音重叠。当另一个人按下时停下来也是理想的,但我不知道如何轻松地加入这一点。启动后声音按钮停止

protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_boardone); 

    Button one = (Button) findViewById(R.id.button1); 
    one.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      MediaPlayer mp = MediaPlayer.create(BoardoneActivity.this, R.raw.mouse_laughter); 
      mp.start(); 

     } 
    }); 

    Button two = (Button) findViewById(R.id.button2); 
    two.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      MediaPlayer mp = MediaPlayer.create(BoardoneActivity.this, R.raw.evil_laugh); 
      mp.start(); 
     } 
    }); 
+0

请尝试下面的代码,让我知道它是否工作与否。 – InnocentKiller

回答

3

不使用媒体播放器的两个对象。 Bleow是我的项目中的一部分方法。如果有任何错误让我知道。

private MediaPlayerManager mRecordingPlayer = null; 



     private void initAudioPlayer(){ 
     if(mRecordingPlayer == null){ 
      mRecordingPlayer = new MediaPlayerManager(); 

     } 
    } 


     private void playMusic(int position){ 
     initAudioPlayer(); 
     mRecordingPlayer.resetPlayer(); 
     mRecordingPlayer.setupPlayback("your reasource"); 
     mRecordingPlayer.startPlaying(); 
    } 

     private void stopPlaying(){ 
     initAudioPlayer(); 
     if(mRecordingPlayer.isPlaying()){ 
      mRecordingPlayer.pausePlaying(); 

     } 

    } 


    @Override 
    public void onPause() { 
     clearAudioPlayer(); 
     super.onPause(); 
    } 


    private void clearAudioPlayer(){ 
     if(mRecordingPlayer != null){ 
      mRecordingPlayer.resetPlayer(); 
     } 
    } 


    @Override 
    public void onClick(View view) { 

     boolean on = ((ToggleButton) view).isChecked(); 
      if(on){ 
       playMusic("play music"); 
       ((ToggleButton) view).setChecked(true); 
      }else{ 
       stopPlaying(); 
      } 

    } 
+0

你好,谢谢你的答复,我已经试过你的方法无辜,不肯定Ranjith关于录音。我正在创建一个音板。我尝试了一下代码,但还是一无所获。你能否使用我的代码来演示一个例子。我花了数小时,仍然无法弄清楚这一点,在Youtube上没有任何内容。谢谢你们的帮助。我真的希望你们中的一位能够为我做这项工作。 – user3365065

+0

选中此项并让我们知道它的工作 – Ranjith

0

请尝试使用以下代码。

mPlayPause.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View arg0) { 
       if (mp.isPlaying()) { 
        if (mp != null) { 
         mp.pause(); 
         mPlayPause.setText("Play"); 
        } 
       } else { 
        if (mp != null) { 
         mp.start(); 
         mPlayPause.setText("Pause"); 
        } 
       } 
      } 
     });