Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 30 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
30
Dung lượng
813,62 KB
Nội dung
ĐẠI HỌC ĐÀ NẴNG TRƯỜNG ĐẠI HỌC BÁCH KHOA KHOA CÔNG NGHỆ THÔNG TIN BỘ MÔN: HỆ THỐNG NHÚNG BÁO CÁO CHUYÊN ĐỀ 1 ĐỀ TÀI : Chương trình nghe nhạc trên mobile. Sinh viên thực hiện : Phan Văn Tuấn Võ Văn Huy Phùng Duy Thiện Lớp : 07T1 Giáo viên hướng dẫn: Th.S Trịnh Công Duy_Khoa CNTT_Trường ĐH Bách Khoa SVTH: Võ Văn Huy_Phan Văn Tuấn_Phùng Duy Thiện_Lớp 07T1 Trang 2 MỤC LỤC I. Giới thiệu Java và ứng dụng lập trình trên thiết bị di động: 3 I.1. Giới thiệu về Java: 3 I.2. Ứng dụng lập trình trên thiết bị di động bằng J2ME: 3 I.2.1. MIDlet: 4 I.2.2. Đồ họa trong J2ME: 4 1) Đồ họa mức cao: 5 2) Đồ họa mức thấp: 5 I.2.3. Lớp Canvas: 5 I.2.4. Lớp Graphics: 6 I.2.5. Lập trình Bluetooth: 6 II. Thư viện lập trình đa phương tiện trong J2ME: 6 III. Chương trình: 16 III.1. Nội dung các lớp: 16 III.1.1. Lớp startmusic: 16 III.1.2. Lớp logon: 18 III.1.3. Lớp screensave : 18 III.1.4. Lớp adjustvolume: 21 III.1.5. Lớp midlet playaudio: 22 IV. Kết quả: 25 V. Kết luận: 29 Giáo viên hướng dẫn: Th.S Trịnh Công Duy_Khoa CNTT_Trường ĐH Bách Khoa SVTH: Võ Văn Huy_Phan Văn Tuấn_Phùng Duy Thiện_Lớp 07T1 Trang 3 I. Giới thiệu Java và ứng dụng lập trình trên thiết bị di động: I.1. Giới thiệu về Java: Vào những năm 1990, Java được ra đời từ dự án xanh và ban đầu được xây dựng để kiểm sóat các thí bị dân dụng và một số thiết bị cầm tay. Java được xây dựng chủ yếu dựa trong bộ công cụ phát triển (Java Development Kit – JDK) như là thư viện chuẩn trong đó chứa trình biên dịch, trình thông dịch,… Đây chính là nền tảng cho việc phát triển ứng dụng Java. Hiện nay các nhà phát triển đã xây dựng nhiều nhánh mới cho Java như: J2EE ( Java 2 Platform Enterprise Edition): Phiên bản dành cho máy chủ lớn với sức mạnh xử lý và dung lượng bộ nhớ lớn. J2SE ( Java 2 Platform Standard Edition): Phiên bản chuẩn chạy trên các máy PC và laptop. J2ME ( Java 2 Platform Micro Edition): là phiên bản rút gọn của Java cho các thiết di động giới hạn về bộ nhớ và bộ xử lý. I.2. Ứng dụng lập trình trên thiết bị di động bằng J2ME: Mục tiêu của J2ME là cho phép người lập trình viết các chương trình ứng ụng độc lập với thiết bị di động, không cần quan tâm đến phần cứng. J2ME được xây dựng bằng các tầng khác nhau để giấu đi việc thực hiện phần cứng khỏi nhà phát triển. Sau đây là các tầng của J2ME được xây dựng trên CLDC: Tầng phần cứng thiết bị: đây là thiết bị di động với cấu hình phần cứng của nó như bộ nhớ, tốc độ xử lý. Các thiết bị di động khác nhau có thể có các bộ xử lý khác nhau với các mã linh khác nhau. Mục tiêu của J2ME là cung cấp một chuẩn cho tất cả các loại thiết bị di động khác nhau. Tầng máy ảo Java: Khi mã nguồn Java đựoc biên dịch nó được chuyển đổi thành mã bytecode. Mã bytecode này sau đó được chuyển thành mã ngôn ngữ máy của thiết bị di động. Tầng máy ảo java bao gồm KVM ( K virtual Machine) là bộ biên dịch mã bytecode có nhiệm vụ chuyển mã bytecode của chương trình Java thành ngôn ngữ máy để chạy trên thiết bị di động. tầng này cung cấp một số chuẩn hóa cho các thiết bị di động ứng dụng J2ME sau khi đã biên dịch có thê họat động trên bất kì thiết bị di động nào có J2ME KVM. Phn cng thit bCác API khác Tầng cấu hình : tầng cấu hình của CLDC định nghĩa giao diện ngôn ngữ Java cơ bản để cho phép chương trình java chạy trên thiết bị di động. Đây là một tập các API định nghĩa lõi của ngôn ngữ J2ME . Người lập trình có thể sử dụng các lớp và phương thức của các API này tuy nhiên các API hữu dụng hơn được chứa trong tầng hiện trạng. Giáo viên hướng dẫn: Th.S Trịnh Công Duy_Khoa CNTT_Trường ĐH Bách Khoa SVTH: Võ Văn Huy_Phan Văn Tuấn_Phùng Duy Thiện_Lớp 07T1 Trang 4 Tầng hiện trạng: Tầng này cung cấp các API hữu dụng hơn cho người lập trình. Mục đích của hiện trạng là xây trên lớp cấu hình và cung cấp nhiều thư viện ứng dụng hơn. MIDP định nghia các API riêng biệt cho thiết bị di động. Cũng có thể có các hiện trạng và các API khác ngòai MIDP được dùng cho ứng dụng, cũng có thể có một hiện trạng định nghĩa các API cho việc tạo các ứng dụng Bluetooth. Hiện nay, MIDP có hai phiên bản là MIDP 1.0 và MIDP 2.0 và cung cấp: - Các lớp và các kiểu dữ liệu - Hỗ trợ đối tượng Display - Hỗ trợ Form và giao diện người dùng - Hỗ trợ Timer và Alert - hỗ trợ Record Management System( RMS) cho việc lưu trữ dữ liệu. Các tính năng nổi bật của MIDP 2.0 so với MIDP 1.0: - Nâng cấp tính năng bảo mật, hỗ trợ giao thức HTTPS, kiểm sóat việc kết nối máy di động với server. - Thêm các API hỗ trợ Multimedia. - Mở rộng các tính năng của Form I.2.1. MIDlet: Các ứng dụng J2ME được gọi là MIDlet ( Mobile Information Device Applet). MIDlet là một lớp java mở rộng của lớp trừu tượng javax.microedition.midlet.MIDlet và thực thi các phương thức startApp(), pauseApp(), và destroyApp(). Đoạn chương trình tối thiểu của MIDlet: import javax.microedition.midlet.*; public class exMIDlet extend MIDlet { public exMIDlet( ) { } public void startApp( ) { } public void pauseApp( ) { } public void destroyApp( boolean unconditional ) { } Trong đó : o Phương thức exMIDlet là hàm constructor . o Phương thức startApp( ) : được gọi bởi bộ quản lý ứng dụng khi MIDlet được khởi tạo hay khi MIDlet trở về trạng thái tạm dừng. o Phương thức pauseApp( ) : được gọi bởi bộ quản lý ứng dụng mỗi khi ứng dụng cần được tạm dừng. o Phương thức destroyApp( ): được gọi khi thoát khỏi MIDlet. I.2.2. Đồ họa trong J2ME: Giáo viên hướng dẫn: Th.S Trịnh Công Duy_Khoa CNTT_Trường ĐH Bách Khoa SVTH: Võ Văn Huy_Phan Văn Tuấn_Phùng Duy Thiện_Lớp 07T1 Trang 5 Các lớp MIDP cung cấp hai mức đồ họa: đồ họa mức thấp và đồ họa mức cao. Đồ họa mức cao dùng cho văn bản hay form. Đồ họa mức thấp dùng cho các ứng dụng games. 1) Đồ họa mức cao: Đồ họa mức cao là lớp con của lớp Screen. Nó cung cấp các thành phần như text box, form, list và alert. a) TextBox: Lớp Textbox cho phép người dùng nhập và sọan thảo văn bản. Người lập trình có thể định nghĩa số ký tự tối đa, giới hạn dữ liệu nhập ( số, mật khẩu, imail,…) và hiệu chỉnh nội dung của textbox. b) Form: Form là lớp hữu dụng nhất của các lớp Sreen bởi vì nó cho phép chứa nhiều item trên cùng một màn hình. Các item có thể là datafield, TextField, ImageItem. c) List: Lớp List là một Screen chứa danh sách các lựa chọn, ngừoi sử dụng có thể tương tác với List và chọn một hay nhiều item. 2) Đồ họa mức thấp: Đồ họa mức thấp là lớp con của lớp Canvas. Lớp này cung cấp các phương thức đồ họa cho phép vẽ lên màn hình hay vào một đệm hình cùng với các phương thức xử lý sự kiện bàn phím. Lớp này dùng cho các ứng dụng trò chơi cần điều khiển về màn hình. Canvas và Graphics là hai lớp chủ yếu của các hàm API cấp thấp. Canvas là một khung cho phép người lập trình có thể vẽ lên thiết bị trình bày cuũng như việc xử lý sự kiện. Còn lớp Graphics cung cấp các đối tượng để vẽ. I.2.3. Lớp Canvas: Lớp Canvas là một lớp trừu tượng, ta phải tạo các canvas của riêng để vẽ trên lớp mở rộng này và lớp Canvas cung cấp phương thức: - paint (Graphics g) để thực hiện vẽ lên canvas. - repaint() để thực hiện vẽ lại các hình đã hiện thị trên màn hình. Mỗi lớp canvas tự động nhận sự kiện của phím bằng cách sử dụng các phương thức: - void keyPressed (int keyCode): được gọi khi một phím được nhấn. - void keyReleased( int keyCode): được gọi khi một phím được thả. - void keyRepeated( int keyCode): được gọi khi một phím bị giữ. - int getKeyCode(int gameAction): Lấy một mã phím phản hồi lại hành động game xác định trên thiết bị. Giáo viên hướng dẫn: Th.S Trịnh Công Duy_Khoa CNTT_Trường ĐH Bách Khoa SVTH: Võ Văn Huy_Phan Văn Tuấn_Phùng Duy Thiện_Lớp 07T1 Trang 6 - String getKeyName (int keyCode): Lấy tên của phím có giá trị mã phím là keyCode. - int getGameAction(int keyCode): Lấy một hành động game liên quan đến mã phím được nhấn. - void pointerDragged( int x, int y): được gọi khi rê chuột đến tọa độ x, y mới. - void pointerPressed ( int x, int y) : được gọi khi nhấn chuột tới tọa độ x, y - void pointerReleased ( int x, int y): được gọi khi thả chuột tới tọa độ x, y. I.2.4. Lớp Graphics: Đốii tượng Graphics có thể được sử dụng để vẽ: hình vuông, hình chữ nhật, cung tròn, đường thẳng, ký tự, ảnh, văn bản trên đối tượng Canvas. Các phương thức: - void setColor(int red, int green, int blue) - void drawArc(…): vẽ cung tròn. - void drawRect(…): vẽ hình chữ nhật - void drawString(…): Vẽ chuỗi. - void drawImage(…): vẽ ảnh. I.2.5. Lập trình Bluetooth: Kĩ thuật bluetooth được dùng để truyền thông giữa điện thọai di động với điện thoại di động, hoặc giữa điện thoại di động và máy tính. Có 3 phương thức truyền thông được cài đặt trong kĩ thuật bluetooth: - OBEX - Object Exchange: dùng để chuyển dữ liệu dùng file, hình ảnh. - L2CAP- Logical Link Control and Adaptation Protocol: Dùng chuyển các gói dữ liệu giữa client và server. - RFCOMM- Radio Frequency COMMunication: Dùng để chuyển các luồng dữ liệu đơn giản. Sun Java cung cấp thư viện hàm API bluetooth: Bluetooth JSR82 API package và bao gồm tất cả các phương thức truyền thông nói trên. một ứng dụng bluetooth bao gồm hai phần: server dùng để tạo dịch vụ bluetooth và phần client kết nối đến server và thực hiện truyền thông. II. Thư viện lập trình đa phương tiện trong J2ME: Giáo viên hướng dẫn: Th.S Trịnh Công Duy_Khoa CNTT_Trường ĐH Bách Khoa SVTH: Võ Văn Huy_Phan Văn Tuấn_Phùng Duy Thiện_Lớp 07T1 Trang 7 Thư viện lập trình đa phương tiện J2ME hỗ trợ các khả năng như âm thanh hay \video cho ứng dụng trên thiết bị di động dựa trên nền tảng MIDP. Thư viện lập trình đa phương tiện J2ME (MMAPI - Mobile Media API) là một gói thư viện tùy chọn hỗ trợ các khả năng đa phương tiện như âm thanh hay video cho ứng dụng trên thiết bị di động dựa trên nền tảng MIDP. Bài viết này sẽ trình bày kiến trúc kỹ thuật của MMAPI cũng như các ví dụ thực tế để bạn đọc có thể thử các khả năng của thư viện này. Tổng quan về MMAPI Thư viện MMAPI được thiết kế để có thể chạy trên bất kỳ máy ảo nào dựa trên J2ME, bao gồm các máy ảo hỗ trợ CLDC (thường trên các điện thoại di động) hay CDC (trên các máy trợ giúp số cá nhân PDA hay smartphone). Bộ công cụ lập trình JaUmi của Samsung hỗ trợ lập trình cũng như kiểm tra các tính năng của thư viện MMAPI. MMAPI được thiết kế với những đặc tính sau: – Hỗ trợ phát lại (playback) và ghi lại (recording) các tập tin đa phương tiện, hỗ trợ định dạng âm thanh hay hình ảnh bất kỳ.– Sử dụng ít tài nguyên của hệ thống, chạy được với những cấu hình rất thấp của các thiết bị dựa trên CLDC như ĐTDĐ. – Không phân biệt nghi thức cũng như định dạng. – Khả năng chỉ sử dụng một số tính năng: các lập trình viên có thể giới hạn những tính năng trong chương trình, ví dụ như chỉ hỗ trợ tính năng âm thanh cơ bản hay chỉ hỗ trợ một vài định dạng nào đó. – Khả năng mở rộng: những khả năng mới có thể được thêm vào mà không được làm ảnh hưởng đến các tính năng trước đó. Một số ví dụ như khả năng mở rộng thêm các định dạng tập tin hay khả năng bổ sung các lớp điều khiển cho từng định dạng. BẢNG 1: CÁC LỚP TRONG MMAPI Gói Lớp Mô tả javax.microedition.media Manager Điểm bắt đầu đ ể nhận các đối t ương Player đ ể xử lý các tập tin đa phương tiện. javax.microedition.media.protocol ContentDescriptor Mô t ả kiểu nội dung của dữ liệu. javax.microedition.media.protocol DataSource Bi ểu diễn một cách trừu tượng khả n ăng x ử lý các giao thức bằng cách che đi chi ti ết cách nhận dữ liệu, ví dụ như t ừ m ột tập tin hay từ máy chủ. Đối tư ợng Giáo viên hướng dẫn: Th.S Trịnh Công Duy_Khoa CNTT_Trường ĐH Bách Khoa SVTH: Võ Văn Huy_Phan Văn Tuấn_Phùng Duy Thiện_Lớp 07T1 Trang 8 Player s ử dụng những phương th ức của lớp này đ ể nhận các dữ liệu nhập. – Khả năng tùy chọn cho các nhà sản xuất thiết bị: mặc dù thư viện này cung cấp các tính năng cho nhiều mục đích khác nhau nhưng nó phải cho phép các nhà sản xuất bỏ qua một số tính năng nếu như thiết bị của họ không hỗ trợ. Việc xử lý tập tin đa phương tiện bao gồm 2 thành phần: – Xử lý giao thức truyền: đọc dữ liệu từ một nguồn như tập tin hay máy chủ để chuyển đến bộ phận xử lý nội dung. – Xử lý nội dung: giải mã dữ liệu và xuất nó ra một thiết bị xuất như loa hay màn hình video. – Để dễ dàng lập trình 2 bộ phận xử lý trên, MMAPI cung cấp cho lập trình viên 2 kiểu đối tượng cấp cao: – DataSource: trừu tượng hoá phần xử lý giao thức bằng cách che đi cách đọc dữ liệu từ một nguồn nào đó. – Player: lớp này đọc dữ liệu từ DataSource, xử lý và xuất ra. Lớp này cung cấp các phương thức để điều khiển việc phát lại các tập tin âm thanh và hình ảnh. MMAPI còn cung cấp một đối tượng thứ ba là Manager hoạt động theo cơ chế “factory pattern” cho phép lập trình viên tạo ra các đối tượng Player từ các đối tượng DataSource hoặc InputStream. Chu kỳ sống của đối tượng Player gồm có 5 trạng thái sau: UNREALIZED, REALIZED, PREFETCHED, STARTED, và CLOSED. Sáu phương thức sau được dùng để thay đổi trạng thái của đối tượng Player: realize(), prefetch(), start(), stop(), deallocate(), close(). Khi một đối tượng Player được tạo ra thì đầu tiên nó sẽ ở trạng thái UNREALIZED. Khi gọi phương thức realize() thì đối tượng này sẽ chuyển sang trạng thái REALIZED và khởi động những thông tin cần thiết để có thể nhận về nội dung tập tin. Gọi prefetch() sẽ chuyển trạng thái sang PREFETCHED, ở trạng thái này đối tượng Player sẽ tạo kết nối đến dữ liệu và thực thi những tác vụ khởi động khác. Khi chúng ta gọi start() thì đối tượng sẽ bắt đầu xử lý dữ liệu và trạng thái được chuyển thành STARTED. Khi toàn bộ nội dung đã được phát lại xong thì đối tượng Player sẽ được chuyển về trạng thái PREFETCHED. Gọi phương thức close() sẽ chuyển trạng thái thành CLOSED. Một đối tượng Player cung cấp những điều khiển cho kiểu dữ liệu nó đang xử lý. Các bạn có thể sử dụng phương thức getControl() để nhận về một đối tượng Control hoặc gọi getControls() để nhận về một mảng các Control. Ví dụ như bạn đang phát lại một tập tin theo định dạng MIDI và gọi phương thức getControl() thì bạn sẽ nhận về một đối tượng MIDIControl. MMAPI bao gồm 3 gói sau: Giáo viên hướng dẫn: Th.S Trịnh Công Duy_Khoa CNTT_Trường ĐH Bách Khoa SVTH: Võ Văn Huy_Phan Văn Tuấn_Phùng Duy Thiện_Lớp 07T1 Trang 9 javax.microedition.media cung cấp một số giao tiếp (interface), một lớp ngoại lệ MediaException và đặc biệt là lớp Manager, đây chính là nơi bắt đầu để nhận về các đối tượng Player. javax.microedition.media.control định nghĩa những điều khiển cụ thể có thể được sử dụng với đối tượng Player như VolumeControl, VideoControl, và các điều khiển khác. javax.microedition.media.protocol định nghĩa những giao thức cho việc xử lý các điều khiển tuỳ biến, ví dụ như lớp DataSource là một lớp trừu tượng để xử lý nội dung của các tài nguyên. Những lớp, giao tiếp và ngoại lệ trong các gói trên được mô tả trong bảng 1, 2 và 3. Sử dụng MMAPI Phần này sẽ trình bày những ví dụ thực tế sử dụng các API của MMAPI, ở đây tôi chỉ trình bày những đoạn mã quan trọng. Nếu muốn tìm hiểu sâu hơn hay cần các ví dụ hoàn chỉnh, các bạn có thể xem ví dụ mmademo có trong bộ công cụ phát triển của Sun và Samsung. Phát sinh tông nhạc Việc phát sinh tông nhạc bao gồm việc xác định tần số và khoảng thời gian. Kiểu âm thanh này rất quan trọng cho các game cũng như các ứng dụng âm thanh khác trên các thiết bị nhỏ. Với các thiết bị nhỏ, hỗ trợ âm thanh có thể chỉ giới hạn ở việc hỗ trợ phát lại các tông nhạc. Phương thức Manager.playTone() sẽ phát sinh các tông nhạc. Thường thì các nhà sản xuất sẽ hỗ trợ bằng cách sử dụng bộ phát sinh tông nhạc của phần cứng. Bạn chỉ việc xác định nốt nhạc, khoảng thời gian và âm lượng. try { // phát tông nhạc trong 4000 mili giây với âm lượng 100 Manager.playTone()(ToneControl.C4, 4000, 100); } catch(MediaException me) { } Bạn cũng có thể tạo ra một đối tượng Player để tổng hợp các chuỗi tông nhạc. Player player = Manager.createPlayer(Manager.TONE_DEVICE_LOCATOR); Kiểu Player này cung cấp cho bạn một đối tượng ToneControl để lập trình chuỗi các tông nhạc. Tuy nhiên tính năng này có thể không có trên tất cả các thiết bị. Phát lại tập tin MP3 Đoạn mã sau đây minh hoạ cách phát lại một tập tin mp3 một cách đơn giản nhất: try { Player p = Manager.createPlayer Giáo viên hướng dẫn: Th.S Trịnh Công Duy_Khoa CNTT_Trường ĐH Bách Khoa SVTH: Võ Văn Huy_Phan Văn Tuấn_Phùng Duy Thiện_Lớp 07T1 Trang 10 (“ http://www.javavietnam.org/somemusic.mp3” ); p.setLoopCount(5); p.start(); } catch(IOException ioe) { } catch(MediaException e) { } Đoạn mã sau bổ sung thêm một số điều khiển âm thanh: Player p; VolumeControl vc; try { p = Manager.createPlayer(“ http://www.javavietnam.org/somemusic.mp3” ); p.realize(); // Nhận điều khiển âm thanh và đặt âm lượng lên tối đa vc = (VolumeControl) p.getControl(“VolumeControl”); if(vc != null) { vc.setVolume(100); } // dùng để hạn chế độ trễ của Player p.prefetch(); // hàm này thoát ra ngày mà không đợi đến khi kết thúc p.start(); } catch(IOException ioe) { } catch(MediaException e) { } BẢNG 2: CÁC GIAO TIẾP (INTERFACE) CỦA MMAPI Gói Giao tiếp Mô tả javax.microedition.media Control Dùng để đi ều khiển một số chức n ăng liên quan đến xử lý đa phương tiện. Các đ ối tư ợng Control nhận đư ợc từ giao tiếp Controllable, đối tư ợng Player m ở rộng Controllable nên có th ể cung cấp các đi ều khiển, ví dụ nh ư VolumeControl để đi ều chỉnh âm thanh. [...]... như ra loa hoặc ra tai nghe III Chương trình: Lập trình trên nền NetBeans IDE 6.8 Các class của chương trình: Logon : giao diện đăng nhập chương trình screensaver: giao diện lúc phát bài hát startmusic : class xử lý phát bài hát adjustvolume : xử lý âm lượng MIDLET chính: playaudio Chương trình nghe nhạc trên sẽ gồm các chức năng sau: - Phát bài tiếp theo - Phát bài trước - Tạm dừng bài hát - Phát tiếp... năng chụp ảnh số và nghe đài radio Một số tính năng mới của nó bao gồm khả năng điều khiển độ sáng, độ tương phản, đèn flash, chế độ sáng, phóng to hoặc thu nhỏ lại của máy chụp hình trong điện thoại Ngoài ra còn có những tính năng xử lý âm thanh nâng cao như tạo các hiệu ứng âm thanh hay khả năng thay đổi ngõ xuất chẳng hạn như ra loa hoặc ra tai nghe III Chương trình: Lập trình trên nền NetBeans IDE... được trên các thiết bị cấp thấp có hỗ trợ MIDP 2.0, vì vậy nó có một số yêu cầu như khả năng phát lại nhạc sử dụng rất ít tài nguyên hệ thống, hỗ trợ việc phát lại các tông nhạc đơn giản, điều chỉnh âm lượng âm thanh phát ra, Do những yêu cầu này nên thư viện đa phương tiện trong MIDP 2.0 thiếu một số tính năng của MMAPI như: chỉ hỗ trợ phát lại nhạc mà không hỗ trợ video, không hỗ trợ đồng bộ hoá... Duy Thiện_Lớp 07T1 Trang 29 Giáo viên hướng dẫn: Th.S Trịnh Công Duy_Khoa CNTT_Trường ĐH Bách Khoa Chương trình đơn giản chủ yếu chỉ phát được các bài hát đã có sẵn trong file jar đã tạo, không thể add thêm list bài hát từ thẻ nhớ điện thoại Tuy nhiên đã thoã 1 số yêu cầu của chương trình phát nhạc là tự động chuyển bài hát tiếp theo khi hết bài, phát bài hát tiếp theo, phát bài trước, tạm dừng,... (content type) được điện thoại Samsung E730 hỗ trợ Kiểu nội dung Giải thích audio/midi audio/x-wav Tập tin nhạc theo định dạng MIDI Tập tin nhạc theo định dạng SMAF , là tập tin có phần mở rộng mmf của Samsung Tập tin nhạc theo định dạng WAVE audio/x-tone-seq Chuỗi tông nhạc audio/mpeg Tập tin nhạc theo định dạng MP3 video/3gp Tập tin video theo định dạng 3GP audio/x-smaf Bảng 5: Những giao thức (protocol)... play= new Command("PHÁT", Command.ITEM, 1); stop= new Command("DỪNG", Command.STOP, 1); next= new Command("NEXT", Command.ITEM, 1); exit= new Command("THOÁT", Command.EXIT, 0); list= new List("CHƯƠNG TRÌNH NGHE NHẠC", Choice.IMPLICIT,string,null); list.setTicker(new Ticker("ĐỒ ÁN CHUYÊN ĐỀ 1:VÕ VĂN HUY_PHAN VĂN TUẤN_PHÙNG DUY THIỆN_LỚP 07T1_KHOA CÔNG NGHỆ THÔNG TIN_TRƯỜNG ĐẠI HỌC BÁCH KHOA ĐÀ NẴNG"));... được sử dụng chính thức cho cuộc thi Mobile Games 2005) Bảng 7: So sánh MMAPI 1.0, MMAPI 1.1, MIDP 2.0 Media API và Thư viện bổ sung cho đa phương tiện Đặc tả Mô tả Mobile Media API (MMAPI) là một gói thư viện tuỳ chọn cho nền tảng J2ME, thư viện này cung cấp một giao diện lập trình ứng dụng (API) chuẩn để phát lại và thu các định dạng đa phương MMAPI 1.0 tiện như nhạc hoặc video Đây là một thư viện... extends MIDlet implements CommandListener,PlayerListener{ public Display ds; private logon login; // tạo logo đăng nhập public static List list; public String songchoose; private screensaver scsa; // hiển thị màn hình khi phát nhạc public Player pl; // Thuộc tính kiểu interface Player xử lý và phát nhạc public VolumeControl volume; //Dùng để lấy âm lượng private Command exit; public Command play,stop,next;... cho việc nhận dữ liệu của Player Lớp Manager cũng hỗ trợ phương thức Manager.createPlayer() với tham số InputStream nên bạn có thể phát lại nhạc từ Record Management System (RMS), hoặc từ trong tập tin JAR Đây là ví dụ cách lấy InputStream từ RMS và phát lại đoạn nhạc lưu trong đó: RecordStore store; int id; // phát lại từ record store RMS try { InputStream is = new ByteArrayInputStream (store.getRecord(id));... hát hiện thời pl.addPlayerListener(this); } } public void play(){ songchoose = list.getString(i); scsa.msg = songchoose; scsa.text(); stmu.playfile(songchoose); } } IV Kết quả: Giao diện đăng nhập chương trình: SVTH: Võ Văn Huy_Phan Văn Tuấn_Phùng Duy Thiện_Lớp 07T1 Trang 25 Giáo viên hướng dẫn: Th.S Trịnh Công Duy_Khoa CNTT_Trường ĐH Bách Khoa Giao diện list bài hát: SVTH: Võ Văn Huy_Phan Văn . NHÚNG BÁO CÁO CHUYÊN ĐỀ 1 ĐỀ TÀI : Chương trình nghe nhạc trên mobile. Sinh viên thực hiện : Phan Văn Tuấn Võ Văn Huy Phùng Duy Thiện Lớp : 07T1 . III. Chương trình: 16 III .1. Nội dung các lớp: 16 III .1. 1. Lớp startmusic: 16 III .1. 2. Lớp logon: 18 III .1. 3. Lớp screensave : 18 III .1. 4. Lớp adjustvolume: 21 III .1. 5. Lớp midlet playaudio:. hạn như ra loa ho ặc ra tai nghe. III. Chương trình: Lập trình trên nền NetBeans IDE 6.8. Các class của chương trình: Logon : giao diện đăng nhập chương trình screensaver: giao diện