只使用一个按钮在Android中播放和暂停Mediaplayer

时间:2010-11-30 17:51:12

标签: android

我是Android新手,我的要求是只使用一个按钮进行播放并暂停使用媒体播放器课程?

6 个答案:

答案 0 :(得分:4)

设置完MediaPlayer后,我只需在onCreate()和onResume()方法中进行设置,检查MediaPlayer当前是否正在播放(MediaPlayerisPlaying()方法应该适用于你),如果它正在播放,设置按钮的图像并单击处理程序将其更改为暂停按钮。如果未播放MediaPlayer,则将其设置为播放按钮。

您还需要处理事件的监听,例如MediaPlayer停止播放(完成播放音频文件),以及按下时反转按钮状态(即按播放更改按钮暂停,反之亦然) )。

答案 1 :(得分:2)

我会使用2个按钮并隐藏其中一个:

public class MyActivity extends Activity implements View.OnClickListener {
    Button playBtn;
    Button pauseBtn;

    public void onCreate() {
        playBtn = (Button) findViewById(R.id.playButton);
        pauseBtn = (Button) findViewById(R.id.pauseButton);
        playBtn.setOnClickListener(this);
        pauseBtn.setOnClickListener(this);
    }

    public void onClick(View v) {
        switch (v.getId()) {
        case R.id.playButton:
            // play music here
            playBtn.setVisibility(Button.GONE);
            pauseBtn.setVisibility(Button.VISIBLE);
            break;
        case R.id.pauseButton:
            // pause music here
            pauseBtn.setVisibility(Button.GONE);
            playBtn.setVisibility(Button.VISIBLE);
            break;
        }
    }
}

答案 2 :(得分:2)

您可以使用单个 Imagebutton 并更改可绘制图像,同时使用切换布尔变量来检查按钮的状态(播放/暂停)。 这就是我实现它的方式

ImageButton playButton;
private boolean playOn;
@Override
protected void onCreate(Bundle savedInstanceState) {

    // some code here
    playButton = (ImageButton)findViewById(R.id.btn_play);
    //other specifications and your code
    }

public void play(View view){   
        myplayfunction();
}

public void myplayfunction(){
    if (playOn){
        playOn=false;
        playButton.setImageResource(R.drawable.icn_pause);
    //your mediaplayer functions
    }else{
        playOn=true;
        playButton.setImageResource(R.drawable.icn_play);
    //pause the mediaplayer
    }
}   

此外,不要忘记在媒体播放器的 onCompletionListener()方法结束时切换图像按钮

答案 3 :(得分:0)

final Button bPlay = (Button)findViewById(R.id.bPlay);
            MediaPlayer song1 = MediaPlayer.create(tutorialFour.this, R.raw.fluet);
        Button bStop = (Button)findViewById(R.id.bStop);
        bPlay.setWidth(10);
        song1.setOnCompletionListener(new OnCompletionListener() {

            public void onCompletion(MediaPlayer mp) {

                bPlay.setText("Play");


            }
        });
        bPlay.setOnClickListener(new View.OnClickListener() {

            public void onClick(View v) {
                // TODO Auto-generated method stub
                b=true;

                if(bPlay.getText().equals("Play") && b==true)
                {

                    song1.start();

                    bPlay.setText("Pause");
                    b=false;
                }

                else if(bPlay.getText().equals("Pause"))
                {
                    x=song1.getCurrentPosition();
                    song1.pause();
                    bPlay.setText("Resume");
                    Log.v("log",""+x);
                    b=false;
                }
                else if(bPlay.getText().equals("Resume") && b==true)
                {
                    song1.seekTo(x);
                    song1.start();
                    bPlay.setText("Pause");
                    b=false;
                }


            }

        });

答案 4 :(得分:0)

以下代码对我有用。还应将“ playedLength”变量的值初始化为零,并在媒体播放器停止功能中将“ mediaPlaying”布尔值设置为false,以免发生错误。

公共类MainActivity扩展了AppCompatActivity {

private Button btnPlay;
private MediaPlayer mPlayer;
private String mFileName = null;
private int playedLength; //variable for the CurrentPosition of audio when paused
private boolean mediaPlaying;  // boolean variable for toggling play, pause and resume actions

// some custom codes for my app...

@Override 受保护的void onCreate(Bundle savedInstanceState){

super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

// some custom codes for my app.....

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

btnPlay.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        if (mediaPlaying){
            mediaPlaying = false;

            //pause the media player
            mPlayer.pause();
            playedLength = mPlayer.getCurrentPosition();
            btnPlay.setBackgroundResource(R.mipmap.ic_pause_focused_background);
        }else{
            mediaPlaying = true;
            if(mPlayer == null){
                // create the media player
                mPlayer = new MediaPlayer();
                try {
                    mPlayer.setDataSource(mFileName);
                    mPlayer.prepare();
                    mPlayer.start();

                } catch (IOException e) {
                    Log.e(LOG_TAG, "prepare() failed");
                }      
                btnPlay.setBackgroundResource(R.mipmap.ic_play_focused_background);
                } else
                    // resume playing
                    mPlayer.seekTo(playedLength);
                    mPlayer.start();
                  btnPlay.setBackgroundResource(R.mipmap.ic_play_focused_background);
            }
        }
    });

}

答案 5 :(得分:0)

   Button
            android:id="@+id/buttonPlay"
            android:onClick="Play"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginStart="160dp"
            android:layout_marginTop="243dp"
            android:layout_marginEnd="163dp"
            android:layout_marginBottom="100dp"
            android:text="@string/play"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintTop_toTopOf="parent" /> 

// --------------------------------------------- --------------------------

   public class MainActivity extends AppCompatActivity {
        MediaPlayer mediaPlayer;
        boolean isPlaing = true;
        Button buttonPlay;



        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            buttonPlay = findViewById(R.id.buttonPlay);

            mediaPlayer = MediaPlayer.create(getApplicationContext(), R.raw.stuff);


        }

        public void Play(View view) {
            if(isPlaing) {
                mediaPlayer.start();
                buttonPlay.setText("Pause");
                isPlaing = false;
            }else {
                mediaPlayer.pause();
                buttonPlay.setText("Play");
                isPlaing = true;
            }
        }

    }