Media player trong android (Bài 4)

Media player trong android (Bài 4)

media-player-trong-android-7
Phát triển app android

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.

 STTPhương thức và miêu tả
1isPlaying() Phương thức này trả về true nếu âm nhạc đang được phát và ngược lại
2seekTo(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
3getCurrentDuration() 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
4getDuration() 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
5setVolume(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

Media player trong AndroidHướ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

media player trong android

Nhập tên thư mục là raw tại Directory name và chỉ định raw tại Resource type

media player trong android 3

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.

media player trong android 6

Thiết kế layout

media player trong android 5

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 7

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.

Alert: You are not allowed to copy content or view source !!