4. CHƯƠNG 4: XÂY DỰNG ỨNG DỤNG STREAM AUDIO VÀ VIDEO
4.1.3 Xây dựng một ứng dụng Audio
Dĩ nhiên là ta có thể tự xây dụng một ứng dụng audio riêng, tạo giao diện theo ý thích và lựa chọn các tính năng cần thiết cho ứng dụng. Để làm được điều này, Android cung cấp một class là MediaPlayer. Class này được sử dụng cho playback và điều khiển cho cả audio và video. Ví dụ đơn giản nhất về MediaPlayer là chạy một file audio được đóng gói trong chính ứng dụng. Ta phải tạo một folder tài nguyên tên là raw như sau :
57
Tạo một đối tượng MediaPlayer sử dụng phương thức create của class MediaPlayer với tham số truyền vào là đường dãn tới thư mục chứa file cần mở :
Sau đó sử dụng phương thức start để mở :
Control playback
Class MediaPlayer chứa nhiều class để bắt sự kiện mà MediaPlayer gửi tới.Nó sẽ gọi phương thức onCompletionListener và được cài đặt thông qua phương thức setOnCompletionListener khi mà file audio được chạy xong.
Sau đây em xin trình bày một ví dụ về tạo giao diện điều khiển đơn giản để chạy một file audio được đóng gói sẵn trong ứng dụng.
Tạo giao diện điều khiển như sau :
Hình: 4Layout audio custom
mediaPlayer = MediaPlayer.create(this, R.raw.goodmorningandroid);
58
Sử dụng hàm findViewById , ta truy cập đến đối tượng nút nhấn được định nghĩa trong file Layout XML
Để activity có thể đáp ứng được sự kiện click, ta phải khai báo bộ listener cho 2 nút này :
Tạo một đối tượng theView và khai báo sự kiện chạm tay vào màn hình:
Dưới đây là phương thức onComletion, được gọi khi MediaPlayer hoàn tất việc chạy file audio. Ta sẽ gọi phương thức start để chạy audio sau đó gọi phương thức seekTo đến vị trí đã lưu vào biến position :
Khi người dùng chạm vào màn hình cảm ứng , phương thức onTouch sẽ được gọi. Trong phương thức này chúng ta chỉ quan tâm đến sự kiện ACTION_MOVE, đây là sự kiện khi người dùng chạm và di chuyển ngón tay trên màn hình.
stopButton = (Button) this.findViewById(R.id.StopButton);
startButton.setOnClickListener(this);
stopButton.setOnClickListener(this);
theView = this.findViewById(R.id.theview);
theView.setOnTouchListener(this);
mediaPlayer.start();
@Override
public boolean onTouch(View v, MotionEvent me) {
if (me.getAction() == MotionEvent.ACTION_MOVE) {
if (mediaPlayer.isPlaying()) {
position = (int) (me.getX() *
mediaPlayer.getDuration() / theView
.getWidth());
Log.v("SEEK", "" + position);
59
Cuối cùng, thiết lập sự kiện nút nhấn cho 2 Button :
4.2 Background and Networked Audio 4.2.1 Background Audio Playback