Media player trong android (Bài 4)
Media player trong Android cung cấp nhiều cách để điều khiển tập tin audio hoặc video. Một trong những cách này là sử dụng lớp MediaPlayer. Xử lý media player trong android chính là việc phát các tập tin audio/video, ….
Để sử dụng lớp MediaPlayer trong android, chúng ta phải gọi phương thức create(). Phương thức này giúp chúng ta tạo một thể hiện của lớp MediaPlayer.
Phương thức start() sẽ được phát audio ngay từ đầu khi gọi phương thức này. Nếu phương thức start() được gọi sau phương thức pause() thì audio sẽ được phát từ chỗ nó bị dừng chứ không phải được phát từ đầu.
Để phát audio ngay từ đầu, chúng ta phải sử dụng phương thức reset(). Ngoài ra MediaPlayer còn cung cấp các phương thức khác như bảng mô tả bên dưới.
STT | Phương thức và miêu tả |
1 | isPlaying() Phương thức này trả về true nếu âm nhạc đang được phát và ngược lại |
2 | seekTo(position) Nhận vào một số nguyên và di chuyển bài hát đến vị trí được chỉ định dựa vào position |
3 | getCurrentDuration() Phương thức này trả về vị trí hiện tại của bài hát theo đơn vị mili giây |
4 | getDuration() Phương thức này trả về tổng thời gian của bài hát theo đơn vị mili giây |
5 | setVolume(float leftVolume, float rightVolume) Thiết lập âm lượng to nhỏ |
Ví dụ xây dựng ứng dụng xử lý media player trong android cho phép bạn phát một bài hát (Play), dừng một bài hát (Pause), …
Media player trong Android – Hướng dẫn
Sử dụng project hiện có hoặc tạo mới project trong Android Studio và thực hiện các bước sau
Bước 1: Tạo thư mục tên raw và copy file nhạc vào thư mục này
Chuột phải package -> chọn New -> chọn Android resource directory
Nhập tên thư mục là raw tại Directory name và chỉ định raw tại Resource type
Copy file nhạc vào thư mục raw
Bước 2: Tạo activity và đặt tên MediaPlayerActivity
Tải hình và đặt vào thư mục drawable.
Thiết kế layout
Viết xử lý
public class MediaPlayerActivity extends AppCompatActivity { private ImageButton btnForward,btnPause,btnPlay,btnBackward; private MediaPlayer mediaPlayer; private double startTime = 0; private double finalTime = 0; private Handler myHandler = new Handler();; private int forwardTime = 5000; private int backwardTime = 5000; private SeekBar seekbar; private TextView tvStatus,tvStartTime,tvFinalTime,tvSongName; public static int oneTimeOnly = 0; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_media_player); // Tham chiếu id của các View // ... tvSongName.setText("Nguoi Mien Tay"); mediaPlayer = MediaPlayer.create(this,R.raw.nguoi_mien_tay); seekbar=(SeekBar)findViewById(R.id.seekBar); seekbar.setClickable(false); btnPause.setEnabled(false); } private Runnable UpdateSongTime = new Runnable() { public void run() { startTime = mediaPlayer.getCurrentPosition(); tvStartTime.setText(String.format("%d min, %d sec", TimeUnit.MILLISECONDS.toMinutes((long) startTime), TimeUnit.MILLISECONDS.toSeconds((long) startTime) - TimeUnit.MINUTES.toSeconds(TimeUnit.MILLISECONDS. toMinutes((long) startTime))) ); seekbar.setProgress((int)startTime); myHandler.postDelayed(this, 100); } }; public void playAction(View view){ tvStatus.setText("Playing sound"); mediaPlayer.start(); finalTime = mediaPlayer.getDuration(); startTime = mediaPlayer.getCurrentPosition(); if (oneTimeOnly == 0) { seekbar.setMax((int) finalTime); oneTimeOnly = 1; } tvFinalTime.setText(String.format("%d min, %d sec", TimeUnit.MILLISECONDS.toMinutes((long) finalTime), TimeUnit.MILLISECONDS.toSeconds((long) finalTime) - TimeUnit.MINUTES.toSeconds(TimeUnit.MILLISECONDS.toMinutes((long) finalTime))) ); tvStartTime.setText(String.format("%d min, %d sec", TimeUnit.MILLISECONDS.toMinutes((long) startTime), TimeUnit.MILLISECONDS.toSeconds((long) startTime) - TimeUnit.MINUTES.toSeconds(TimeUnit.MILLISECONDS.toMinutes((long) startTime))) ); seekbar.setProgress((int)startTime); myHandler.postDelayed(UpdateSongTime,100); } public void pauseAction(View v) { tvStatus.setText("Pausing sound"); mediaPlayer.pause(); } public void forwardAction(View v) { int temp = (int)startTime; if((temp+forwardTime)<=finalTime){ startTime = startTime + forwardTime; mediaPlayer.seekTo((int) startTime); tvStatus.setText("You have Jumped forward 5 seconds"); } else{ tvStatus.setText("Cannot jump forward 5 seconds"); } } public void backwardAction(View v) { int temp = (int)startTime; if((temp-backwardTime)>0){ startTime = startTime - backwardTime; mediaPlayer.seekTo((int) startTime); tvStatus.setText("You have Jumped backward 5 seconds"); } else{ tvStatus.setText("Cannot jump backward 5 seconds"); } } }
Bước 3: Đăng ký sự kiện onClick cho các button
Media player trong android – Bài tập thực hành
Viết một ứng dụng nghe nhạc cho phép nghe nhạc từ một list.