MusicPlayer暂停并从头开始

时间:2012-04-11 11:04:14

标签: android android-activity android-music-player

我正在开发音乐应用程序。

我想暂停播放器,当我去恢复时,它将从那一点开始。

Music.java

public class Music {

    private static MediaPlayer mp = null;

    public static void play(Context context,int resource){
        stop(context);
        mp = MediaPlayer.create(context, resource);
        mp.setLooping(true);
        mp.start();
    }

    static void stop(Context context) {
        if(mp != null){
            mp.stop();
            mp.release();
            mp = null;
        }
    }
}

SMusicActivity

public class SMusicActivity extends Activity {

    @Override
    public void onCreate(Bundle savedInstanceState){
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        Button btnplay = (Button)findViewById(R.id.play);
        btnplay.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
                onResume();
            }
        });

        Button btnstop = (Button)findViewById(R.id.pause);
        btnstop.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
                onPause();
            }
        });
    }

    @Override
    protected void onResume() {
        super.onResume();
        Music.play(this,R.raw.govind_bolo);
    }

    @Override
    protected void onPause() {
        super.onPause();
        Music.stop(this);
    }
}

我想使用停止按钮作为暂停和播放。 我为它做了编码但是你知道我没有完美的一个..所以 如何进行Play和Pause等操作。

2 个答案:

答案 0 :(得分:2)

摆脱静态音乐幕墙。在您的活动中使用真正的MediaPlayer

  • 仅限一次(onCreate)
  • 点击按钮时播放和暂停
  • 使用mediaPlayer.isPlaying()检查您是否可以实际播放或暂停播放器。在使用此对象时需要考虑状态图,有关状态的更多详细信息以及允许从特定状态转换,请参阅javadoc

答案 1 :(得分:0)

创建一个像“private int currentPosition”这样的局部变量,然后使用以下命令:

    btnplay.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {
            mp.seekTo(currentPosition);
            onResume();
        }
    });

    Button btnstop = (Button)findViewById(R.id.pause);
    btnstop.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {
        currentPosition = mp.getCurrentPosition();
            onPause();
        }
    });