歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux編程 >> Linux編程 >> Android音樂播放MediaPlayer

Android音樂播放MediaPlayer

日期:2017/3/1 10:09:28   编辑:Linux編程

Android音樂播放MediaPlayer代碼,很簡單的例子程序,根據拖動,可是實現歌曲的不同位置的播放。

  1. package mars.com;
  2. import android.app.Activity;
  3. import android.media.MediaPlayer;
  4. import android.media.MediaPlayer.OnCompletionListener;
  5. import android.os.AsyncTask;
  6. import android.os.Bundle;
  7. import android.view.View;
  8. import android.view.View.OnClickListener;
  9. import android.widget.Button;
  10. import android.widget.SeekBar;
  11. import android.widget.SeekBar.OnSeekBarChangeListener;
  12. import android.widget.TextView;
  13. public class DemoMP3Activity extends Activity {
  14. private Button play;
  15. private Button pause;
  16. private Button stop;
  17. private TextView info;
  18. private SeekBar seekBar;
  19. private MediaPlayer mediaPlayer;
  20. private boolean isPlay = true;// 播放標記
  21. private boolean isPause = false;// 暫停標記
  22. @Override
  23. public void onCreate(Bundle savedInstanceState) {
  24. super.onCreate(savedInstanceState);
  25. setContentView(R.layout.main);
  26. info = (TextView) findViewById(R.id.textView1);
  27. play = (Button) findViewById(R.id.button1);
  28. pause = (Button) findViewById(R.id.button2);
  29. stop = (Button) findViewById(R.id.button3);
  30. seekBar = (SeekBar) findViewById(R.id.seekBar1);
  31. this.play.setOnClickListener(new OnClickListener() {
  32. public void onClick(View v) {
  33. mediaPlayer = MediaPlayer.create(getApplicationContext(),
  34. R.raw.bird);
  35. if (mediaPlayer != null) {
  36. mediaPlayer.stop();
  37. }
  38. seekBar.setMax(mediaPlayer.getDuration());// 設置拖拽條的長度
  39. UpdateThread update = new UpdateThread();
  40. update.execute(1000);// 每一秒就更新一次進度條
  41. DemoMP3Activity.this.mediaPlayer
  42. .setOnCompletionListener(new OnCompletionListener() {
  43. public void onCompletion(MediaPlayer mp) {
  44. // 如果播放完了
  45. isPlay = false;
  46. mediaPlayer.release();// 釋放資源
  47. }
  48. });
  49. try {
  50. mediaPlayer.prepare();
  51. mediaPlayer.start();
  52. info.setText("正在播放");
  53. } catch (Exception e) {
  54. info.setText(e.toString());
  55. }
  56. }
  57. });
  58. this.pause.setOnClickListener(new OnClickListener() {
  59. public void onClick(View v) {
  60. if (mediaPlayer != null) {
  61. if (isPause == false) {
  62. mediaPlayer.pause();
  63. isPause = true;
  64. info.setText("暫停播放");
  65. } else {
  66. mediaPlayer.start();
  67. isPause = false;
  68. info.setText("繼續播放");
  69. }
  70. }
  71. }
  72. });
  73. this.stop.setOnClickListener(new OnClickListener() {
  74. public void onClick(View v) {
  75. if (mediaPlayer != null) {
  76. mediaPlayer.stop();
  77. info.setText("停止播放");
  78. }
  79. }
  80. });
  81. this.seekBar.setOnSeekBarChangeListener(new OnSeekBarChangeListener() {
  82. public void onStopTrackingTouch(SeekBar seekBar) {
  83. mediaPlayer.seekTo(seekBar.getProgress());
  84. }
  85. public void onStartTrackingTouch(SeekBar seekBar) {
  86. }
  87. public void onProgressChanged(SeekBar seekBar, int progress,
  88. boolean fromUser) {
  89. }
  90. });
  91. }
  92. private class UpdateThread extends AsyncTask<Integer, Integer, String> {
  93. @Override
  94. protected void onPostExecute(String result) {
  95. super.onPostExecute(result);
  96. }
  97. @Override
  98. protected void onProgressUpdate(Integer... values) {
  99. seekBar.setProgress(values[0]);// 更新
  100. }
  101. @Override
  102. protected String doInBackground(Integer... params) {
  103. while (isPlay) {
  104. try {
  105. Thread.sleep(params[0]);
  106. } catch (InterruptedException e) {
  107. e.printStackTrace();
  108. }
  109. this.publishProgress(mediaPlayer.getCurrentPosition());// 將media的當前進度傳遞過去
  110. }
  111. return null;
  112. }
  113. }
  114. }
Copyright © Linux教程網 All Rights Reserved