2012-10-05 94 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. 將可見性屬性設置爲開始點擊和停止按鈕可見, 跟隨其停止點擊相反。

相關問題