2013-12-12 140 views
1

今天我一直在努力讓自己的按鈕發聲。 我想讓按鈕,當你點擊它播放聲音,當你再次點擊停止播放聲音 第一部分是工作,但後來我加入點擊停止播放媒體播放器問題

if(mpButtonClick1.isPlaying()) 
{ 
    mpButtonClick1.stop(); 
} 
else 
{ 
    mpButtonClick1.start(); 
} 

而且因爲我添加的那部分,當我點擊按鈕時沒有任何反應。沒有聲音。 Eclipse不顯示任何錯誤。 這裏是我的活動

package com.example.splashzor; 

import android.app.Activity; 
import android.media.MediaPlayer; 
import android.os.Bundle; 
import android.view.View; 
import android.widget.Button; 

public class Prvi extends Activity{ 

    MediaPlayer mpButtonClick1; 


    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     // TODO Auto-generated method stub 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.prvi); 

     final MediaPlayer mpButtonClick1 = MediaPlayer.create(this, R.raw.spalshm); 

     mpButtonClick1.isPlaying(); 

     Button dugme = (Button) findViewById(R.id.dugme); 
     dugme.setOnClickListener(new View.OnClickListener() { 

      @Override 
      public void onClick(View v) { 
       // TODO Auto-generated method stub 
       mpButtonClick1.start(); 
       { 
        if(mpButtonClick1.isPlaying()) 
        { 
         mpButtonClick1.stop(); 
        } 
        else 
        { 
         mpButtonClick1.start(); 
        } 

       } 
      } 
     });  
    } 
} 

如果你告訴我我做錯了什麼,以及如何解決它,我將不勝感激。

回答

2

在您的if/else塊之前刪除mpButtonClick1.start();呼叫。

否則,只要你點擊按鈕,你總是啓動它,然後立即停止它,導致沒有聲音播放。

邏輯應該是:

@Override 
public void onClick(View v) { 
    if (mpButtonClick1.isPlaying()) { 
     mpButtonClick1.pause(); 
    } 
    else { 
     mpButtonClick1.start(); 
    } 
} 

EDIT:還改變stop()pause()。撥打stop()表示它進入停止狀態,直到您致電prepare()http://developer.android.com/reference/android/media/MediaPlayer.html

+0

之後才能再次播放我寫了這個,但有一個問題。一旦我點擊任何按鈕,我不能再播放任何聲音,MP不會啓動。我必須重新啓動應用程序。 – user3094736

+0

我編輯了我的答案 - 您需要將'stop()'調用更改爲'pause()' –

+0

太棒了!非常感謝 – user3094736