2013-04-26 66 views
0

我有按鈕不是這樣調用方法播放流:激活鍵來調用方法

// method for play stream after stop it. 
    public void startradio(View v) { 
     try{ 
      if(mp.isPlaying()){ 
       return; 
      } 
       mp.start(); 
     } catch(IllegalStateException ex){ 
      ex.printStackTrace(); 
     } 
    } 

和我定義按鈕是這樣的:

Button PlayBtn = (Button)findViewById(R.id.btnPlay); 

現在我想,當點擊PlayBtn我想用這種方式啓動該功能:

setOnClickListener

編輯:

我的代碼是這樣的:

package com.example.kam; 

import java.io.IOException; 

import android.os.Bundle; 
import android.app.Activity; 
import android.view.Menu; 
import android.view.View; 

import android.media.AudioManager; 
import android.media.MediaPlayer; 
import android.media.MediaPlayer.OnCompletionListener; 


public class MainActivity extends Activity { 
    public MediaPlayer mp; 
    boolean isPrepared = false; 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 

    } 

    public void onCompletion(MediaPlayer mediaPlayer) { 
     synchronized(this){ 
      isPrepared = false; 
     } 
    } 

    protected void onResume(){ 
     super.onResume(); 

     mp = new MediaPlayer(); 
     try { 
      mp.setDataSource("http://radio.arabhosters.com:8015/"); 
     } catch (IllegalArgumentException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } catch (SecurityException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } catch (IllegalStateException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } catch (IOException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } 
     mp.setAudioStreamType(AudioManager.STREAM_MUSIC); 
     try { 
      mp.prepare(); 
     } catch (IllegalStateException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } catch (IOException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } //also consider mp.prepareAsync(). 
     // defult start stream when start App. 
     mp.start(); 
    } 

    // method for play stream after stop it. 
     public void startradio(View v) { 
      try{ 
       if(mp.isPlaying()){ 
        return; 
       } 
        mp.start(); 
      } catch(IllegalStateException ex){ 
       ex.printStackTrace(); 
      } 
     } 

    // method for pause stream. 
    public void pauseradio(View v) { 
     mp.pause(); 
    } 

    public boolean isPlaying() { 
     return mp.isPlaying(); 
    } 

    public boolean isLooping() { 
     return mp.isLooping(); 
    } 

    public void setLooping(boolean isLooping) { 
     mp.setLooping(isLooping); 
    } 

    public void setVolume(float volumeLeft, float volumeRight) { 
     mp.setVolume(volumeLeft, volumeRight); 
    } 

    // method for stop stream. 
    public void stopradio(View v) { 
     if(mp.isPlaying()){ 
      mp.stop(); 
     } 
     mp.release(); 
    } 

    @Override 
    public boolean onCreateOptionsMenu(Menu menu) { 
     // Inflate the menu; this adds items to the action bar if it is present. 
     getMenuInflater().inflate(R.menu.main, menu); 

     return true; 
    } 

} 
+0

顯示代碼相關的媒體播放器(MP) – Unknown 2013-04-26 09:01:39

+0

@Cobra Ajgar我會更新我的文章 – k1gfx 2013-04-26 09:04:20

+0

發佈您的logcat – 2013-04-26 09:06:09

回答

0
public class MainActivity extends Activity implements OnClickListener{ 
    public MediaPlayer mp; 
    boolean isPrepared = false; 
    Button PlayBtn; 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     PlayBtn = (Button)findViewById(R.id.btnPlay); 
     PlayBtn.setOnClickListener(this); 
     mp = new MediaPlayer(); 
     try { 
      mp.setDataSource("http://radio.arabhosters.com:8015/"); 
      mp.prepare(); 
     } catch (IllegalArgumentException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } catch (SecurityException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } catch (IllegalStateException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } catch (IOException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } 
     mp.setAudioStreamType(AudioManager.STREAM_MUSIC); 
    } 
    @Override 
    public void onClick(View v){ 
    if(v == PlayBtn){ 
     start(); 
     } 
    else if(v == PauseBtn){ 
      pause(); 
     } 
    else if(v == StopBtn){ 
      stop(); 
     } 
    } 
    public void onCompletion(MediaPlayer mediaPlayer) { 
     synchronized(this){ 
      isPrepared = false; 
     } 
    } 



    // method for play stream after stop it. 
     public void start() { 
      try{ 
       if(mp.isPlaying()){ 
        return; 
       } 
        mp.start(); 
      } catch(IllegalStateException ex){ 
       ex.printStackTrace(); 
      } 
     } 

    // method for pause stream. 
    public void pause() { 
     mp.pause(); 
    } 

    public boolean isPlaying() { 
     return mp.isPlaying(); 
    } 

    public boolean isLooping() { 
     return mp.isLooping(); 
    } 

    public void setLooping(boolean isLooping) { 
     mp.setLooping(isLooping); 
    } 

    public void setVolume(float volumeLeft, float volumeRight) { 
     mp.setVolume(volumeLeft, volumeRight); 
    } 

    // method for stop stream. 
    public void stop() { 
     if(mp.isPlaying()){ 
      mp.stop(); 
     } 
     mp.release(); 
    } 

    @Override 
    public boolean onCreateOptionsMenu(Menu menu) { 
     // Inflate the menu; this adds items to the action bar if it is present. 
     getMenuInflater().inflate(R.menu.main, menu); 

     return true; 
    } 

} 

onCreate().刪除創建一個按鈕爲PauseStop您的媒體播放器

+0

我嘗試,但告訴我這個消息: - **不幸的是,RadioStream已停止** – k1gfx 2013-04-26 09:51:26

+0

是:)非常感謝你,我會得到一些你對我的代碼,謝謝 – k1gfx 2013-04-26 11:39:23

+0

@ k1gfx永遠歡迎:) – 2013-04-26 12:14:47

0
Button PlayBtn = (Button) findViewById(R.id.btnPlay); 
PlayBtn.setOnClickListener(new View.OnClickListener() { 
    @Override 
    public void onClick(View v) { 
     startradio(v); 
    } 
}); 
+0

我嘗試但顯示此錯誤'不幸的是,RadioApp已停止.' – k1gfx 2013-04-26 08:50:50

+0

試試這個,我編輯了我的答案。 – 2013-04-26 08:51:33

+0

不工作,但我嘗試 – k1gfx 2013-04-26 09:05:39

0
PlayBtn.setOnClickListener(new OnClickListener(){ 
public void onClick(View v){ 
//to do ur function 
} 
}); 
+0

我嘗試但顯示此錯誤'不幸的是,RadioApp已停止.' – k1gfx 2013-04-26 09:02:42

+0

添加您的logcat – 2013-04-26 09:04:01

0

您可以使用此代碼:

Button PlayBtn = (Button)findViewById(R.id.btnPlay); 
PlayBtn.setOnClickListener(new View.OnClickListener() { 
    public void onClick(View v) { 
     startradio(v); 
    } 
}); 

我不知道爲什麼你需要View v在你的startradio方法中;您可以從方法聲明和調用中將其刪除。

+0

我嘗試但顯示此錯誤'不幸的是,RadioApp已停止.' – k1gfx 2013-04-26 08:58:46

+0

發佈您的logcat – 2013-04-26 08:59:26

+0

我將更新我的文章 – k1gfx 2013-04-26 09:04:55

0

1-實現與onClickListener您的活動(這應該是圖中不對話框)

2-

Button PlayBtn = (Button)findViewById(R.id.btnPlay); 
    playBtn.setOnClickListener(this); 

3-

@override 
    public void onClick(View v) 
    { 
     try{ 
     if(mp.isPlaying()){ 
      return; 
     } 
      mp.start(); 
    } catch(IllegalStateException ex){ 
     ex.printStackTrace(); 
    } 
} 

更新: -

把這個

mp = new MediaPlayer(); 

內從onResume()

//

public class MainActivity extends Activity implements OnClickListener{ 
    public MediaPlayer mp; 
    boolean isPrepared = false; 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     mp = new MediaPlayer(); 
     Button PlayBtn = (Button)findViewById(R.id.btnPlay); 
     PlayBtn .setonClickListener(this); 


    } 

@override 
public void onClick(View v) 
{ 
startradio(v); 
} 

    public void onCompletion(MediaPlayer mediaPlayer) { 
     synchronized(this){ 
      isPrepared = false; 
     } 
    } 

    protected void onResume(){ 
     super.onResume(); 

     try { 
      mp.setDataSource("http://radio.arabhosters.com:8015/"); 
     } catch (IllegalArgumentException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } catch (SecurityException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } catch (IllegalStateException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } catch (IOException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } 
     mp.setAudioStreamType(AudioManager.STREAM_MUSIC); 
     try { 
      mp.prepare(); 
     } catch (IllegalStateException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } catch (IOException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } //also consider mp.prepareAsync(). 
     // defult start stream when start App. 
     mp.start(); 
    } 

    // method for play stream after stop it. 
     public void startradio(View v) { 
      try{ 
       if(mp.isPlaying()){ 
        return; 
       } 
        mp.start(); 
      } catch(IllegalStateException ex){ 
       ex.printStackTrace(); 
      } 
     } 

    // method for pause stream. 
    public void pauseradio(View v) { 
     mp.pause(); 
    } 

    public boolean isPlaying() { 
     return mp.isPlaying(); 
    } 

    public boolean isLooping() { 
     return mp.isLooping(); 
    } 

    public void setLooping(boolean isLooping) { 
     mp.setLooping(isLooping); 
    } 

    public void setVolume(float volumeLeft, float volumeRight) { 
     mp.setVolume(volumeLeft, volumeRight); 
    } 

    // method for stop stream. 
    public void stopradio(View v) { 
     if(mp.isPlaying()){ 
      mp.stop(); 
     } 
     mp.release(); 
    } 

    @Override 
    public boolean onCreateOptionsMenu(Menu menu) { 
     // Inflate the menu; this adds items to the action bar if it is present. 
     getMenuInflater().inflate(R.menu.main, menu); 

     return true; 
    } 

} 
+0

它顯示我的錯誤,我可以把這個? – k1gfx 2013-04-26 09:02:09

+0

自動您的活動會給它的地方只是寫yourActivity實現onClickListeren – Unknown 2013-04-26 09:03:30

+0

看到我的更新.. – Unknown 2013-04-26 09:08:17