Playing audio, video

Một phần của tài liệu Tìm hiểu lập trình mạng trên hệ điều hành Android. (Trang 62 - 68)

9. MULTIMEDIA

9.3. Playing audio, video

Android hỗ trợ âm thanh và phát các tập tin media bởi lớp MediaPlayer trong gói android.media. Bây giờ chúng ta thử làm một ví dụ để phát một tập tin âm thanh trên Android. Phần mềm sẽ có chức năng phát một tập tin media có sẵn trong ứng dụng ở đây là tập tin tên take.mp3 đã được đưa vào thư mục res/raw. Bấm phím giữa để phát bài hát, bấm phím xuống để dừng.

Chúng ta bắt đầu tạo một Android project với các thông số như sau: Project name: Audio

Build target: Android 1.6 Application name: Audio Package name: cit.lean Creative activity: Audio

Hình 2.29: new android project

Sau khi tạo xong project, ta chép tập tin mp3 vào thư mục res/raw bằng cách kéo tập tin và thả vào thư mục res/raw.

Đoạn code ví dụ: import android.app.Activity; import android.media.AudioManager; import android.media.MediaPlayer; import android.os.Bundle; import android.view.KeyEvent; import android.view.Menu; import android.view.MenuItem;

public class Audio extends Activity {

MediaPlayer mp = null; @Override

public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState);

setContentView(R.layout.main);

setVolumeControlStream(AudioManager.STREAM_MUSIC); }

@Override

// bat su kien tu cac nut bam

public boolean onKeyDown(int keyCode, KeyEvent event) { switch (keyCode) { case KeyEvent.KEYCODE_DPAD_DOWN: mp.pause(); break; case KeyEvent.KEYCODE_DPAD_CENTER: play(); break; default:

return super.onKeyDown(keyCode, event); }

return true; }

if(mp!=null){mp.stop();}

mp = MediaPlayer.create(this, R.raw.take); mp.start();

} }

Trong ví dụ trên ta khai báo biến mp để kế thừa lớp MediaPlayer.

Khai báo mp = MediaPlayer.create(this, R.raw.take); dùng để lấy tập tin take.mp3 từ nguồn tài nguyên của phần mềm, sau đó sử dụng hàm start() để phát bài hát, dùng hàm pause() để tạm dừng bài hát và dùng hàm release() để giải phóng tài nguyên. Ngoài ra ta còn sử dụng phương thức onKeyDown() để bắt lấy sự kiện nhấn các phím trên bàn phím của điện thoại.

Để phát một tập tin media từ tài nguyên hệ thống (bộ nhớ điện thoại, thẻ nhớ) hay từ một tập tin trên web cũng tương tự như phát từ tài nguyên của phần mềm chỉ khác ở điểm ta sẽ sử dụng hàm setDataSource(PATH_TO_FILE). Để đưa đường dẫn đến tập tin cần phát, sau khi sử dụng setDataSource() ta phải sử dụng try – catch để bắt lỗi. Và sử prepare() để gọi thiết bị sẵn sàng phát âm thanh. Đoạn code sẽ có thay đổi như sau: import java.io.IOException; import android.app.Activity; import android.media.AudioManager; import android.media.MediaPlayer; import android.os.Bundle; import android.view.KeyEvent; import android.view.Menu; import android.view.MenuItem;

public class Audio extends Activity {

@Override

public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState);

setContentView(R.layout.main);

setVolumeControlStream(AudioManager.STREAM_MUSIC); }

@Override

// bat su kien tu cac nut bam

public boolean onKeyDown(int keyCode, KeyEvent event) { switch (keyCode) { case KeyEvent.KEYCODE_DPAD_DOWN: mp.pause(); mp.release(); break; case KeyEvent.KEYCODE_DPAD_CENTER: try { play(); } catch (IllegalStateException e) {

// TODO Auto-generated catch block e.printStackTrace();

} catch (IOException e) {

// TODO Auto-generated catch block e.printStackTrace();

} catch (Exception e) {

// TODO Auto-generated catch block e.printStackTrace();

} break; default:

return super.onKeyDown(keyCode, event); }

return true; }

public void play() throws Exception, IllegalStateException,

IOException{ mp.setDataSource("/sdcard/take.mp3"); mp.prepare(); mp.start(); } }

Một ví dụ về phát tập tin video từ thẻ nhớ của thiết bị. Lưu ý trong file XML dùng để thiết kế giao diện phải có thẻ <VideoView> thẻ này là khung hình video dùng để hiển thị lên màn hình: Code main.xml: <?xml version="1.0" encoding="utf-8"?> <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent"> <VideoView android:id="@+id/video" android:layout_height="wrap_content"

android:layout_width="wrap_content" android:layout_gravity="center" /> </FrameLayout> Code lớp Video: import android.app.Activity; import android.os.Bundle; import android.widget.VideoView;

public class Video extends Activity {

@Override

public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState);

// Fill view from resource

setContentView(R.layout.main);

VideoView video = (VideoView) findViewById(R.id.video); // Load and start the movie

video.setVideoPath("/sdcard/samplevideo.3gp"); video.start();

} }

Một phần của tài liệu Tìm hiểu lập trình mạng trên hệ điều hành Android. (Trang 62 - 68)

Tải bản đầy đủ (DOCX)

(98 trang)
w