1. Trang chủ
  2. » Luận Văn - Báo Cáo

chế tạo bộ đếm sản phẩmđề tài chương trình nghe nhạc trên mobile

30 513 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

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

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Ứ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

Trang 1

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

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

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

 Ph n c ng thi t b Cá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

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(),

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:

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

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ị

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:

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

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

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

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:

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

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

Trang 10

// Nhận điều khiển âm thanh và đặt âm lượng lên tối đa

Trang 11

javax.microedition.media Controllable

Cung cấp một giao tiếp

để nhận về các đối tượng Control từ một đối tượng Player hoặc

từ các đối tượng khác

javax.microedition.media Player

Dùng để điều khiển việc phát lại các tập tin

đa phương tiện Đối tượng này cung cấp những phương thức

để quản lý chu kỳ sống của Player

javax.microedition.media PlayerListener

Dùng để nhận các sự kiện phát sinh từ đối tượng Player

javax.microedition.media TimeBase

Một nguồn liên tục các nhịp thời gian, dùng để

đo thời gian cho việc đồng bộ hoá việc phát lại nhiều Player cùng lúc

javax.microedition.media.control FramePositionControl

Điều khiển vị trí chính xác của các khung hình video

javax.microedition.media.control GUIControl

Nếu các điều khiển hỗ trợ giao tiếp đồ họa thì cần cung cấp phần hiện thực cho giao tiếp này

javax.microedition.media.control MetaDataControl

Dùng để nhận các thông tin về tập tin đa phương tiện

javax.microedition.media.control RateControl Điều khiển tốc độ phát

lại của Player javax.microedition.media.control RecordControl Điều khiển việc ghi lại javax.microedition.media.control StopTimeControl Xác định điểm dừng

khi phát lại javax.microedition.media.control TempoControl Điều khiển nhịp độ

phát lại

javax.microedition.media.control ToneControl

Cho phép phát lại một chuỗi các tông nhạc do người dùng định nghĩa

Trang 12

javax.microedition.media.control VideoControl

Điều khiển việc hiển thị video, ví dụ như vị trí tương đối so với Canvas

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 đó:

Bảng 3: NGOẠI LỆ (EXCEPTION) CỦA MMAPI

Gói Ngoại lệ Mô tả

Trang 13

javax.microedition.media MediaException

Dùng để báo một lỗi không mong đợi trong các phương thức xử lý đa phương tiện

Bảng 4: Những kiểu nội dung (content type) được điện thoại Samsung E730 hỗ trợ

Kiểu nội dung Giải thích

audio/midi Tập tin nhạc theo định dạng MIDI

audio/x-smaf Tập tin nhạc theo định dạng SMAF , là tập tin có phần mở

rộng mmf của Samsung

audio/x-wav 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

resource Giao thức lấy dữ liệu từ tài nguyên hệ thống

file Giao thức lấy dữ liệu từ tập tin

Bảng 6: Giá trị các thuộc tính của điện thoại Samsung E730

Thuộc tính hệ thống Giá trị trong

supports.audio.capture false Không hỗ trợ thu âm thanh

supports.video.capture false Không hỗ trợ chụp hình

supports.recording false Không hỗ trợ thu lại video

audio.encodings null Không hỗ trợ thu âm thanh

video.encodings null Không hỗ trợ chụp hình

video.snapshot.encodings null Không hỗ trợ chụp hình

streamable.contents null Không hỗ trợ phát lại từ dữ liệu

dòng (streaming)

Trang 14

Phát lại tập tin video mpeg Đoạn mã sau minh hoạ cách phát lại một tập tin video theo định dạng mpeg:

Lấy thông số hỗ trợ kiểu nội dung và giao thức của điện thoại

Đoạn mã sau minh hoạ cách lấy thông số về những hỗ trợ kiểu nội dung (content type) và giao

thức (protocol) được điện thoại hỗ trợ:

String[] contentTypesArray = Manager.getSupportedContentTypes(null);

for (int i = 0; i < contentTypesArray.length; i++) {

System.out.println(“Content Type “ + contentTypesArray[i]);

}

String[] protocolsArray = Manager.getSupportedProtocols(null);

for (int i = 0; i < protocolsArray.length; i++) {

System.out.println(“Protocol “ + protocolsArray[i]);

}

Lấy các thuộc tính hệ thống được định nghĩa trong MMAPI

Đoạn mã sau minh hoạ cách lấy các thuộc tính hệ thống để kiểm tra khả năng hỗ trợ

xử lý đa

phương tiện của điện thoại:

Trang 15

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

tả là JSR 135, được thiết kế với khả năng mềm dẻo để có thể

mở rộng và không phụ thuộc vào thiết bị cũng như nền tảng MMAPI không phụ thuộc vào bất kỳ định dạng lưu trữ, giao thức truyền dữ liệu hoặc những khả năng của các thiết bị phần cứng

Ngày đăng: 23/10/2014, 07:31

TỪ KHÓA LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w