首页 > 解决方案 > MediaPlayer 不会停止或暂停

问题描述

我正在尝试制作一个简单的应用程序来帮助我学习如何为 Android 编写代码。应用程序的原理很简单:当您按下按钮时,它开始播放声音文件。当您松开按钮时,音频停止。按下按钮有效,但释放按钮无效。提前致谢!这是我的java代码:

package com.example.siriu.presstoplay;

import android.media.MediaPlayer;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.view.MotionEvent;
import android.util.Log;


public class MainActivity extends AppCompatActivity {
private MediaPlayer mp;

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

    Button button = findViewById(R.id.pressbutton);
    button.setOnTouchListener(handleTouch);
    mp = MediaPlayer.create(this, R.raw.test);

}


private View.OnTouchListener handleTouch = new View.OnTouchListener() {
    @Override
    public boolean onTouch(View v, MotionEvent event) {

        switch (event.getAction()) {
            case MotionEvent.ACTION_DOWN:
                    Log.d("button", "down");
                    play();
                break;
            case MotionEvent.ACTION_UP:
                Log.d("button", "up");
                pause();
                break;
        }

        return true;
    }
};

public void play (){
    final MediaPlayer mp = MediaPlayer.create(this, R.raw.test);
    mp.start();
    Log.d("MediaPlayer", "started");
}

public void pause (){
    mp.stop();
    Log.d("MediaPlayer", "paused");
}

}

标签: androidandroid-mediaplayer

解决方案


Android MediaPlayer will not stop or pause

Because in your play () method you are starting local declared MediaPlayer of play () method and in your pause () you are trying to stop MediaPlayer that you have declared global

in this situation your global declared MediaPlayer mp; hasn't start yet

Try this

Remove final MediaPlayer mp = MediaPlayer.create(this, R.raw.test); from Your play() Method

public void play (){

    mp.start();
    Log.d("MediaPlayer", "started");
}

推荐阅读