android上的活动按钮调用方法

时间:2013-04-26 08:42:51

标签: android button

我有按钮而不是调用方法播放流如下:

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

}

5 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

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

答案 2 :(得分:0)

您可以使用此代码:

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

我不确定您的View v方法中为什么需要startradio;你可以从方法声明和调用中删除它。

答案 3 :(得分: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();

onCreate().内删除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;
    }

}

答案 4 :(得分: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;
    }

}

为您的媒体播放器PauseStop创建一个按钮