Tải bản đầy đủ (.doc) (42 trang)

Tìm hiểu kỹ thuật lập trình trên điện thoại di động

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (331.92 KB, 42 trang )

Khoỏ lun tt nghip

Tỡm hiu k thut lp trỡnh trờn in thoi di ng
Trờng đại học vinh

Khoa công nghệ thông tin
-------------------------

Đỗ Thị Hồng

Tóm tắt Khoá luận tốt nghiệp đại học

Tìm hiểu kỹ thuật lập trình
trên điện thoại di động
Chuyên ngành: cử nhân công nghệ thông tin

Giáo viên hớng dẫn: Th.s Lê Văn Tấn

Vinh 2008

LI NểI U
Cụng ngh di ng ngy cng phỏt trin. Chic in thoi di ng gi õy
khụng ch l phng tin liờn lc m cũn l mt phng tin phc v nhu cu
gii trớ ca con ngi.
Sinh viờn thc hin: Th Hng Lp 44E2 - CNTT

1


Khoá luận tốt nghiệp


Tìm hiểu kỹ thuật lập trình trên điện thoại di động

Công nghệ Java là một trong những công nghệ tiên phong xâm nhập vào
lĩnh vực ứng dụng cho thiết bị di động. Nếu bạn có một thiết bị di động hỗ trợ
Java, bạn có thể chơi Game, chạy các ứng dụng được viết bằng Java trên chiếc
điện thoại của mình ở bất kỳ đâu và bất kỳ lúc nào và những chiếc điện thoại di
động hiện nay hỗ trợ rất mạnh về âm thanh, hình ảnh, đồ hoạ.
Để góp phần làm tăng tính năng giải trí của điện thoại di động cũng đồng
thời tìm hiểu việc xây dựng các ứng dụng trên điện thoại di động, nên em đã
mạnh dạn tìm hiểu các kỹ thuật lập trình trên điện thoại di động.
Nội dung đề tài gồm:
Chương I: Tổng quan
Chương II: Tìm hiểu về J2ME
Chương III: Kỹ thuật lập trình trên diện thoại di động
Chương IV: Thử nghiệm
Để hoàn thành khoá luận này em xin bày tỏ lòng biết ơn sâu sắc tới thầy
giáo Th.S Lê Văn Tấn - người đã tận tình hướng dẫn, giúp đỡ em kể từ khi nhận
đề tài cho đến khi khoá luận được hoàn thành.
Em xin chân thành cảm ơn các thầy giáo, cô giáo trong khoa CNTT, cũng
như bạn bè, người thân đã luôn động viên, giúp đỡ, tạo điều kiện cho em trong
suốt quá trình học tập và thực hiện đề tài.
Em xin chân thành cảm ơn!
Vinh, tháng 5 năm 2008
Sinh viên thực hiện
Đỗ Thị Hồng

Sinh viên thực hiện: Đỗ Thị Hồng – Lớp 44E2 - CNTT

2



Khoá luận tốt nghiệp

Tìm hiểu kỹ thuật lập trình trên điện thoại di động

CHƯƠNG I:TỔNG QUAN
1. Lý do chọn đề tài
Công nghệ thông tin ngày nay có vai trò rất quan trong trong cuộc sống
hàng ngày của chúng ta. Việc ứng dụng công nghệ thông tin vào các lĩnh vực
trong đời sống giúp công việc được tiến hành một cách nhanh chóng và hiệu quả
hơn. Có rất nhiều công nghệ mới phát triển song song với việc phát triển công
nghệ thông tin như Bluetooth, ADSL, Wireless, Mobile, WAP,…nhằm giúp
công nghệ thông tin ngày càng thân thiết với người dùng hơn. Một trong những
công nghệ mà góp phần không nhỏ trong việc đưa công nghệ thông tin đến với
người sử dụng là công nghệ di động. Với tốc độ phát triển của công nghệ di động
ngày nay và những lợi ích mà nó mang lại cho chúng ta là rất lớn. Không giống
như những chiếc điện thoại trước đây – chỉ có nhiệm vụ thoại, điện thoại hiện
nay còn hỗ trợ rất nhiều ứng dụng khác như: gửi/nhận mail, truy cập Intenet,
xem phim, nghe nhạc, chơi game,… Những chiếc điện thoại di động hiện nay hỗ
trợ rất mạnh về âm thanh, hình ảnh, đồ hoạ. Để góp phần làm tăng tính năng giải
trí của điện thoại di động cũng đồng thời tìm hiểu việc xây dựng các ứng dụng
trên điện thoại di động, nên em chọn đề tài là “Tìm hiểu kỹ thuật lập trình trên
điện thoại di động” nhằm khai thác các tính năng mạnh của điện thoại di động
hiện nay.
2. Mục tiêu
Sau khi thực hiện, các mục tiêu cần đạt được là:
- Hiểu chi tiết về J2ME và ứng dụng của nó để lập trình trên các thiết bị di
động.
- Nắm được các kỹ thuật xử lý âm thanh, hình ảnh, phím và kỹ thuật lưu
trữ trên điện thoại di động.

- Ứng dụng các kết quả nghiên cứu được xây dựng ứng dụng nhằm khai
thác các điểm mạnh về âm thanh, hình ảnh, đồ họa nhằm phục vụ cho nhu cầu
giải trí của người dùng.

Sinh viên thực hiện: Đỗ Thị Hồng – Lớp 44E2 - CNTT

3


Khoá luận tốt nghiệp

Tìm hiểu kỹ thuật lập trình trên điện thoại di động

3. Đối tượng nghiên cứu
Để xây dựng ứng dụng trên điện thoại di động, đối tượng cần tìm hiểu
gồm các phần sau:
- Nghiên cứu ngôn ngữ lập trình Java và công nghệ J2ME ứng dụng lập
trình trên điện thoại di động.
- Nghiên cứu các kỹ thuật xử lý đồ họa và hoạt hình .
- Nghiên cứu các kỹ thuật xử lý phím trên điện thoại di động.
- Nghiên cứu các kỹ thuật xử lý âm thanh trên điện thoại di động.
- Nghiên cứu các kỹ thuật lưu trữ dữ liệu trên điện thoại di động.
4. Phạm vi nghiên cứu
Nghiên cứu về công nghệ J2ME và tìm hiểu các kỹ thuật lập trình trên điện
thoại di động. Ứng dụng kết quả nghiên cứu để xây dựng một chương trình ứng
dụng cho điện thoại di động.
5. Môi trường thực hiện
- Hệ điều hành Windows XP.
- JDK 1.4.2
- J2ME Wireless Toolkit 1.0

- EclipseME
- Borland JBuiler 9X.

Sinh viên thực hiện: Đỗ Thị Hồng – Lớp 44E2 - CNTT

4


Khoá luận tốt nghiệp

Tìm hiểu kỹ thuật lập trình trên điện thoại di động

CHƯƠNG II: TÌM HIỂU VỀ J2ME
Công nghệ di động ngày càng phát triển. Chiếc điện thoại di động hiện nay
không còn đơn giản thực hiện duy nhất nhiệm vụ thoại mà càng trở nên không
thể thiếu đối với nhu cầu thông tin, giải trí của con người. Công nghệ Java là
công nghệ đi tiên phong trong việc xâm nhập vào lĩnh vực di động. Nếu bạn có
chiếc điện thoại di động hỗ trợ Java, bạn có thể chơi game, chạy các ứng dụng
viết bằng Java ở bất kỳ nơi đâu và bất kỳ lúc nào.
I. GIỚI THIỆU VỀ JAVA

Vào những năm 1990, Java được ra đời từ dự án xanh (Green Project) và
ban đầu được xây dựng để kiểm soát các thiết bị dân dụng như TV, VCR, đèn,
điện thoại 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) trong đó chứa trình biên dịch,
trình thông dịch, giúp đỡ, tài liệu,… Đây chính là nền tảng cho việc phát triển
ứng dụng Java. Với sự phát triển của Java hiện nay, các nhà phát triển đã xây
dựng nhiều nhánh mới cho Java như: JavaMail(thư điện tử), Java TAPI( viễn
thông), Java3D (đồ hoạ 3 chiều), J2ME (ứng dụng cho thiết bị di động). Java có
các phiên bản sau:

J2EETM (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.
J2SETM (Java 2 Platform, Standard Edition): phiên bản chuẩn chạy trên
các máy PC và laptop với một số MB bộ nhớ. Các máy tính này mặc dù không
mạnh bằng các máy chủ nhưng vẫn mạnh hơn nhiều so với các thiết bị di động.
J2METM (Java 2 Platform, Micro Edition): là một phiên bản rút gọn của
Java cho các thiết bị di động giới hạn về bộ nhớ và bộ xử lý.
II. GIỚI THIỆU VỀ J2ME VÀ ỨNG DỤNG LẬP TRÌNH CHO ĐIỆN THOẠI
DI ĐỘNG

1. Giới thiệu về J2ME
J2ME được phát triển từ kiến trúc Java Card, Embeded Java và Personal
Java của phiên bản Java 1.1. Đến sự ra đời của Java 2 thì Sun quyết định thay thế
Sinh viên thực hiện: Đỗ Thị Hồng – Lớp 44E2 - CNTT

5


Khoá luận tốt nghiệp

Tìm hiểu kỹ thuật lập trình trên điện thoại di động

Personal Java và được gọi với tên mới là Java 2 Micro Edition, hay viết tắt là
J2ME. Đúng với tên gọi, J2ME là nền tảng cho các thiết bị có tính chất nhỏ, gọn
(Micro có nghĩa là nhỏ trong tiếng Anh). Mục tiêu của J2ME là cho phép người
lập trình viết các ứng dụng độc lập với thiết bị di động, không cần quan tâm đến
phần cứng thật sự. Để đạt được mục tiêu này, J2ME được xây dựng bằng các
tầng (layer) khác nhau để giấu đi việc thực hiện phần cứng khỏi nhà phát triển.
Mỗi tầng trên tầng phần cứng là tầng trừu tượng, nó cung cấp cho lập trình
viên nhiều giao diện lập trình ứng dụng thân thiện hơn.

- Tầng phần cứng thiết bị (Device Hardware Layer): đây là thiết bị di động
thật sự với cấu hình phần cứng (bộ nhớ và tốc độ xử lý) cụ thể. Các thiết bị di
động có thể có bộ vi xử lý khác nhau và các tập lệnh 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 (JAVA Virtual Machine Layer): khi mã nguồn Java
được 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 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 các thiết bị di
động. Tầng này cung cấp một sự chuẩn hoá cho các thiết bị di động để ứng dụng
J2ME sau khi đã biên dịch có thể chạy được trên bất kỳ thiết bị di động nào có
hỗ trợ J2ME KVM.
- Tầng cấu hình (Configuration Layer): cung cấp các hàm API cơ bản là
nhân của J2ME. Lập trình viên có thể sử dụng các lớp và các phương thức của
các API này tuy nhiên tập các API hữu dụng hơn được chứa trong tầng hiện
trạng (profile layer).
- Tầng hiện trạng (profile layer): cung cấp tập các hàm API hữu dụng hơn
cho lập trình. Mục đích của tập hiện trạng là xây dựng nên lớp cấu hình và cung
cấp nhiều thư viện ứng dụng hơn, MIDP định nghĩa các API riêng biệt cho thiết
bị di động.
2. Giới thiệu các thành phần trong nền tảng J2ME
a. Định nghĩa về Configuration(Cấu hình): là đặc tả định nghĩa một môi trường
Sinh viên thực hiện: Đỗ Thị Hồng – Lớp 44E2 - CNTT

6


Khoá luận tốt nghiệp

Tìm hiểu kỹ thuật lập trình trên điện thoại di động


phần mềm cho một dòng các thiết bị được phân loại bởi tập hợp các đặc tính, ví
dụ như:
• Kiểu số lượng bộ nhớ
• Kiểu và tốc độ bộ vi xử lý
• Kiểu mạng kết nối
Do đây là đặc tả nên các nhà sản xuất thiết bị như Samsung, Nokia …bắt
buộc phải thực thi đầy đủ các đặc tả do Sun qui định để các lập trình viên có thể
dựa vào môi trường lập trình nhất quán và thông qua sự nhất quán này, các ứng
dụng được tạo ra có thể mang tính độc lập thiết bị cao nhất có thể. Ví dụ như một
lập trình viên viết chương trình game cho điện thoại Samsung thì có thể sửa đổi
chương trình của mình một cách tối thiểu nhất để có thể chạy trên điện thọai
Nokia. Qua đây ta thấy khẩu hiệu “Write Once, Run Everywhere” của Java đã
không còn nhưng ta cũng phải đánh giá cao sự nổ lực của Sun trong việc tạo ra
một môi trường phần mềm chung cho vô số chủng loại thiết bị di động có trên
thị trường. Hiện nay Sun đã đưa ra 2 dạng Configuration là CLDC và CDC.
- CLDC (Connected Limited Device Configuration-Cấu hình thiết bị kết
nối giới hạn): Được thiết kế để nhắm vào thị trường các thiết bị cấp thấp (lowend), các thiết bị này thông thường là máy điện thọai di động và PDA với
khoảng 512 KB bộ nhớ.Vì tài nguyên bộ nhớ hạn chế nên CLDC được gắn với
Java không dây (Java Wireless ), dạng như cho phép người sử dụng mua và tải
về các ứng dụng Java, ví dụ như là Midlet.
- CDC (Connected Device Configuration - Cấu hình thiết bị kết nối):
CDC được đưa ra nhắm đến các thiết bị có tính năng mạnh hơn dòng thiết bị
thuộc CLDC nhưng vẫn yếu hơn các hệ thống máy để bàn sử dụng J2SE. Những
thiết bị này có nhiều bộ nhớ hơn (thông thường là trên 2MB) và có bộ xử lý
mạnh hơn. Các sản phẩm này có thể kể đến như các máy PDA cấp cao, điện
thoại web, các thiết bị gia dụng trong gia đình …
Cả 2 dạng Cấu hình kể trên đều chứa máy ảo Java (Java Virtual Machine)
và tập hợp các lớp (class) Java cơ bản để cung cấp một môi trường cho các ứng
dụng J2ME. Tuy nhiên, phải chú ý rằng đối với các thiết bị cấp thấp, do hạn chế

về tài nguyên như bộ nhớ và bộ xử lý nên không thể yêu cầu máy ảo hỗ trợ tất cả
Sinh viên thực hiện: Đỗ Thị Hồng – Lớp 44E2 - CNTT

7


Khoá luận tốt nghiệp

Tìm hiểu kỹ thuật lập trình trên điện thoại di động

các tính năng như với máy ảo của J2SE, ví dụ, các thiết bị thuộc CLDC không có
phần cứng yêu cầu các phép tính toán dấu phẩy động, nên máy ảo thuộc CLDC
không được yêu cầu hỗ trợ kiểu float và double.
b. Định nghĩa về Profile
Profile mở rộng Configuration bằng cách thêm vào các class để bổ trợ các
tính năng cho từng thiết bị chuyên biệt. Cả 2 Configuration đều có những profile
liên quan và từ những profile này có thể dùng các class lẫn nhau. Đến đây ta có
thể nhận thấy do mỗi profile định nghĩa một tập hợp các class khác nhau, nên
thường ta không thể chuyển một ứng dụng Java viết cho một profile này và chạy
trên một máy hỗ trợ một profile khác. Cũng với lý do đó, bạn không thể lấy một
ứng dụng viết trên J2SE hay J2EE và chạy trên các máy hỗ trợ J2ME.
Chúng ta sẽ điểm qua các profile tiêu biểu:
+ Mobile Information Device Profile (MIDP): profile này
sẽ bổ sung các tính năng như hỗ trợ kết nối, các thành phần hỗ trợ giao diện
người dùng … vào CLDC. Profile này được thiết kế chủ yếu để nhắm vào điện
thọai di động với đặc tính là màn hình hiển thị hạn chế, dung lượng chứa có hạn.
Do đó MIDP sẽ cung cấp một giao diện người dùng đơn giản và các tính năng
mạng đơn giản dựa trên HTTP. Có thể nói MIDP là profile nổi tiếng nhất bởi vì
nó là kiến thức cơ bản cho lập trình Java trên các máy di động (Wireless Java).
Hiện nay, MIDP có hai phiên bản là MIDP 1.0 và MIDP 2.0. Những chức năng

mà MIDP cung cấp:
- Các lớp và các kiểu dữ liệu: phần lớn các lớp quen thuộc với các lập
trình viên trong Java vẫn giữ lại, ví dụ: các lớp trong gói java.util như Stack,
Vector, Hastable,…
- Hỗ trợ đối tượng Display: một chương trình MIDP sẽ hỗ trợ duy nhất
một đối tượng Display,là đối tượng quản lý việc hiển thị dữ liệu trên màn hình
điện thoại.
- Hỗ trợ Form và giao diện người dùng.
- Hỗ trợ Timer và Alert.
- Record Management System (RMS) cho việc lưu trữ dữ liệu. MIDP 2.0
được SUN cho ra đời vào tháng 11/2003 với hàng loạt tính năng mới (hiện nay
Sinh viên thực hiện: Đỗ Thị Hồng – Lớp 44E2 - CNTT

8


Khoá luận tốt nghiệp

Tìm hiểu kỹ thuật lập trình trên điện thoại di động

một số loại điện thoại hỗ trợ MIDP 2.0 như Nokia 6600, Sony Ericssion P900).
- Nâng cấp tính năng bảo mật: doanload qua mạng an toàn hơn qua việc
hỗ trợ giao thức HTTPS. Kiểm soát việc kết nối giữa máy di động với Server: ví
dụ các chương trình sẽ không thể kết nối đến server nếu không có sự chấp nhận
của người dùng.
- Thêm các API hỗ trợ Multimedia: Mobile Media API (MMAPI).
- Mở rộng các tính năng của Form: nhiều cải tiến được đưa vào API
javaxmicroedition.lcdui, nhưng thay đổi lớn nhất là trong Form và Item.
- Hỗ trợ lập trình game với Game API: Trước đây với MIDP 1.0, lập
trình viên phải tự viết code cho hành động của nhân vật và đồ họa. Việc này làm

tăng kích thước chương trình cũng như khả năng lỗi. Với Game API trong MIDP
2.0, công việc này trở nên nhẹ nhàng hơn nhiều. Ý tưởng cở bản của Game API
là giả định một màn hình game như là tập hợp các lớp (layer). Ví dụ: trong game
đua xe thì màn hình nền là một layer, con đường là một layer và chiếc xe là một
layer khác.
- Hỗ trợ kiểu ảnh RGB: một trong những cải tiến hấp dẫn cho các nhà
phát triển MIDP là biểu diễn hình ảnh dưới dạng mảng các số nguyên, cho phép
thao tác với dữ liệu hình ảnh một cách trực tiếp. Trong đề tài em chỉ tập trung
vào MIDP 1.0 vì hiện nay các điện thoại hỗ trợ MIDP 1.0 là rất nhiều nhưng hỗ
trợ MIDP 2.0 thì tương đối ít.
+ PDA Profile: tương tự MIDP, nhưng với thị trường là các máy PDA với
màn hình và bộ nhớ lớn hơn.
+ Foundation Profile: cho phép mở rộng các tính năng của CDC với phần
lớn các thư viện của bộ Core Java 2 1.3
3. MIDlet
Các ứng dụng J2ME được gọi là MIDlet (Mobile Imformation Device
Applet). Một MIDlet là một lớp Java mở rộng(extend) của lớp trừu tượng
java.microedition.midlet.MIDlet và thực thi (implement) các phương thức
startApp(), pauseApp() và destroyApp().
Bộ khung yêu cầu tối thiểu của một ứng dụng MIDlet.
Import javax.microedition.midlet.*;
Sinh viên thực hiện: Đỗ Thị Hồng – Lớp 44E2 - CNTT

9


Khoá luận tốt nghiệp

Tìm hiểu kỹ thuật lập trình trên điện thoại di động


Public class exampleMIDlet extends MIDlet {
Public exampleMIDlet(){}
Public void startApp(){}
Public void pauseApp(){}
Public void destroyApp(boolean unconditional){}
}
Các phát biểu import đựơc dùng đề include các lớp cần thiết từ các thư
viện CLDC và MIDP.
- Phần chính của MIDlet: được định nghĩa như là lớp mở rộng của lớp
MIDlet, trong ví dụ này là exampleMIDlet.
- Hàm tạo (Constructor): hàm tạo chỉ được thực thi một lần khi MIDlet
khởi tạo lần đầu tiên, hàm tạo sẽ không được gọi lại trừ khi MIDlet thoát và sau
đó khởi động lại.
- StartApp(): 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.
- PauseApp(): 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.
- DestroyApp(): phương thức này được gọi khi thoát MIDlet.
* Chu kỳ sống của MIDlet
Sơ đồ biều diễn chu kỳ sống của Midlet.
Chương trình được
T¹m dõng
startApp()

pauseApp()

Ho¹t ®éng
destroyApp()
Huû


Sinh viên thực hiện: Đỗ Thị Hồng – Lớp 44E2 - CNTT

10


Khoá luận tốt nghiệp

Tìm hiểu kỹ thuật lập trình trên điện thoại di động

Khi người dùng yêu cầu thực thi ứng dụng, bộ quản lý ứng dụng sẽ thực
thi MIDlet. Khi ứng dụng thực thi, nó sẽ được xem là ở trạng thái tạm dừng, bộ
quản lý ứng dụng sẽ gọi hàm tạo và hàm startApp(). Hàm startApp() có thể
được gọi nhiều lần trong quá trình thực thi ứng dụng. Hàm destroyApp() chỉ có
thể gọi khi ứng dụng ở trạng thái hoạt động hoặc tạm dừng.
4. Phát triển ứng dụng MIDlet
a. Biên dịch
MIDlet có thể được biên dịch bằng các trình biên dịch chuẩn của Java,
chúng tạo ra các file class. Ta có thể dùng trình soạn thảo IDE hoặc dùng chế độ
dòng lệnh để biên dịch thành các file .class. Ví dụ ta có thể dùng Ktoolbar trong
bộ Java Wireless Tookit (WTK) hoặc dùng sản phẩm của hãng thứ ba như Nokia
Developer‘s Suite cho J2ME.
b. Kiểm tra lỗi
Điều này là cần thiết vì việc kiểm tra các lớp trên thiết bị thật khá tốn thời
gian. Các công cụ WTK hoặc Nokia đều hỗ trợ việc này.
c. Chạy thử nghiệm
Các công cụ WTK hoặc Nokia điều cung cấp nhiều loại thiết bị giả lập
khác nhau. Ta có thể kiểm tra ứng dụng MIDlet trên các thiết bị này trước khi
ứng dụng thực tế.
III. NHỮNG KHÓ KHĂN KHI LẬP TRÌNH TRÊN ĐIỆN THOẠI DI ĐỘNG


Công nghệ J2ME cho việc lập trình trên điện thoại di động thì không khó
để tìm hiểu nhưng cái khó trong việc xây dựng ứng dụng trên điện thoại di động
gồm những điểm sau:
- Vấn đề bộ nhớ và bộ xử lý: tuy các điện thoại di động ngày nay hỗ trợ
rất nhiều chức năng nhưng bộ xử lý và bộ nhớ còn nhiều hạn chế. Bộ xử lý tốc
độ thấp sẽ làm giảm khả năng thực hiện ứng dụng. Bộ nhớ nhỏ gây khó khăn
cho việc xây dựng các ứng dụng mạnh về tính năng đồ hoạ. Do đó làm cho
người lập trình phải có cơ chế xử lý bộ nhớ hợp lý nhằm giúp cho ứng dụng thực
hiện tốt hơn.
Sinh viên thực hiện: Đỗ Thị Hồng – Lớp 44E2 - CNTT

11


Khoá luận tốt nghiệp

Tìm hiểu kỹ thuật lập trình trên điện thoại di động

Công nghệ J2ME với MIDP 1.0 không hỗ trợ cho việc lập trình âm thanh
nên chưa có chuẩn chung cho việc xử lý âm thanh trên các loại điện thoại hỗ trợ
MIDP 1.0. Điều cũng gây khó khăn cho người lập trình vì phải xử lý âm thanh
phụ thuộc vào từng loại điện thoại cụ thể.
Khả năng lưu trữ cũng hạn chế, việc xây dựng ứng dụng phải tính đến kích
thước của ứng dụng. Nếu vượt quá kích thước giới hạn mà điện thoại qui định
chúng ta không thể tải ứng dụng lên điện thoại được.
- Giới hạn kích thước tối đa của ứng dụng mà điện thoại có thể tải về. Đối
với một số loại điện thoại thuộc Series 60 của Nokia (6600, 7610, 3650,…),Sony
Ericssion P900, …thì vấn đề trở nên đơn giản hơn. Một số khác như Series 40,
Samsung X100, V200,…thì rất khó khăn do có dung lượng lưu trữ và bộ nhớ rất
hạn chế (khoảng 100-300 KB Heap Size).

Thông thường giới hạn dung lượng của file JAR là dưới 64KB, một số máy
chỉ cho phép tải về khoảng 10 KB hay 30 KB. Đây là một khó khăn cho người
lập trình trong việc thiết kế và viết ứng dụng.
Bảng bên dưới mô tả kích thước file JAR của một số loại điện thoại di động
Loại điện thoại
Nokia Series 40
Motorola T720
Motorola V60i
Panasonic X60
Sony Ericssion T610, T630
Samsung X600

Kích thước File JAR tối đa
64 KB
64 KB
50 KB
80 KB
128 KB
100 KB

Sinh viên thực hiện: Đỗ Thị Hồng – Lớp 44E2 - CNTT

12


Khoá luận tốt nghiệp

Tìm hiểu kỹ thuật lập trình trên điện thoại di động

CHƯƠNG III


KỸ THUẬT LẬP TRÌNH TRÊN ĐIỆN THOẠI DI ĐỘNG
Khi lập trình trên điện thoại di động, cần phải khai thác được các thế mạnh
của điện thoại ngày nay là âm thanh và hình ảnh. Trong phần này em sẽ trình bày
một số kỹ thuật xử lý âm thanh, một số kỹ thuật xử lý đồ họa, kỹ thuật xử lý
phím và kỹ thuật xử lý lưu trữ dữ liệu.
I. XỬ LÝ ĐỒ HOẠ

1. Tìm hiểu các đối tượng đồ họa
Ngày nay với sự phát triển nhanh chóng của công nghệ di động, chiếc
điện thoại di động không còn đơn giản như trước đây là có nhiệm vụ thoại mà
còn là phương tiện rất hữu hiệu trong công việc và giải trí. Về hình ảnh, trước
đây màn hình điện thoại di động chỉ là màn hình đen trắng nhưng ngày nay màn
hình điện thoại là màn hình màu và ở một số loại điện thoại mới có đến vài trăm
ngàn màu. Đó là những ưu điểm mà giúp điện thoại di động ngày càng thân thiết
với người sử dụng hơn. Với những ưu điểm đó, vậy thì làm sao để xây dựng các
ứng dụng giải trí trên điện thoại di động hiệu quả. Phần này sẽ trình bày những
khía cạnh cơ bản giúp cho việc khai thác các điểm mạnh về đồ hoạ một cách
hiệu quả hơn.
Hầu hết các điện thoại di động ngày nay đều sử dụng công nghệ Java. Thế
mạnh của ngôn ngữ này là có thể chạy được trên các platform khác nhau. Để
xây dựng các ứng dụng giải trí mạnh về đồ hoạ, môi trường MIDP 1.0 cung cấp
cho chúng ta hai mức đồ hoạ cơ bản là đồ họa mức thấp và đồ hoạ mức cao. Đồ
hoạ mức cao dùng cho văn bản hay form. Đồ hoạ mức thấp dùng cho các ứng
dụng trò chơi yêu cầu phải vẽ lên màn hình.
Cả hai lớp đồ hoạ mức thấp và lớp đồ họa mức cao đều là con của lớp
Displayable. Trong MIDP chỉ có một lớp Displayable được hiển thị tại một thời
điểm, có thể định nghĩa nhiều màn hình nhưng chỉ hiển thị một màn hình.
Public abstract class Canvas extends Displayable
Public abstract class Screen extends Displayable

Sinh viên thực hiện: Đỗ Thị Hồng – Lớp 44E2 - CNTT

13


Khoá luận tốt nghiệp

Tìm hiểu kỹ thuật lập trình trên điện thoại di động

- Đồ hoạ mức cao: là lớp con của lớp Screen. Nó cung cấp các thành phần
như Textbox, List, Form, Alert. Ta ít điều khiển việc sắp xếp các thành phần
trên màn hình. Việc sắp xếp phụ thuộc vào nhà sản xuất.
+ Textbox: Cho phép người dùng nhập và soạn thảo văn bản. Ta có thể
định nghĩa số ký tự tối đa, giới hạn loại dữ liệu nhập (số học, mật khẩu, email,
…) và hiệu chỉnh nội dung textbox. Kích thước thật sự của textbox có thể nhỏ
hơn yêu cầu khi chạy trong thực tế (do giới hạn của thiết bị). Kích thước thật sự
của textbox có thể lấy bằng phương thức getMaxSize().
+ List: Chứa danh sách các lựa chọn, người dùng có thể tương tác với
danh sách và chọn một hay nhiều item. Có 3 loại danh sách là: IMPLICIT,
EXCLUSIVE và MULTIPLE.
+ Alert: hiển thị một màn hình pop-up trong một khoảng thời gian, nó
được dùng để cảnh báo hay thông báo lỗi.Thời gian hiển thị có thể đuợc thiết lập
bởi ứng dụng hoặc được thiết lập là FOREVER cho đến khi người dùng nhấn
phím bất kỳ để đóng lại.
+ Form: Cho phép hiển thị nhiều item khác nhau trên một màn hình.
- Đồ hoạ 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 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 nhiều
việc vẽ lên màn hình. Khi có một ứng dụng đòi hỏi đồ họa mạnh chắc chắn ứng
dụng đó phải sử dụng các lớp này. Đây là những lớp đồ hoạ cấp thấp chạy được

trên hầu hết các loại điện thoại di động hỗ trợ Java. Một số thử nghiệm việc ứng
dụng các hàm đồ họa cấp thấp của MIDP 1.0 đề xây dựng các ứng dụng yêu cầu
khả năng đồ hoạ cao cho thấy tốc độ thực hiện nhanh hơn khi sử dụng MIDP 2.0.
2. Kỹ thuật xử lý hoạt hình
Một trong những thành phần không kém phần quan trọng khi xây dựng
các ứng dụng mạnh về đồ hoạ là tạo các hiệu ứng hoạt hình.. Để làm được điều
đó, MIDP 1.0 cung cấp cho ta các đối tượng Timer, Thread, Runnable cho phép
thực hiện các hiệu ứng theo chu kỳ thời gian định trước.
a. Sử dụng đối tượng Timer đề tạo hoạt hình
Sinh viên thực hiện: Đỗ Thị Hồng – Lớp 44E2 - CNTT

14


Khoá luận tốt nghiệp

Tìm hiểu kỹ thuật lập trình trên điện thoại di động

Thông thường, các game sử dụng các lớp về đồ hoạ để biểu diễn các hình
ảnh và sử dụng Timer cho việc làm chuyển động các đối tượng cũng như tính
thời gian. Hoạt hình thực chất là sự luân phiên thay đổi các hình theo một
khoảng thời gian xác định. Tuỳ vào số lượng hình ảnh và khoảng thời gian mà
hiệu ứng sẽ diễn ra đẹp hay không đẹp.
Mô tả kỹ thuật xử lý hoạt hình sử dụng đối tượng Timer:
Public class MainGame extends Canvas {
PublicMainGame() {
// Khởi tạo Timer
tm = new Timer();
doAnimation tt = new doAnimation ();
tm.schedule(tt, 500,500); //Thiết lập thời gian hoạt

hình
}
Protectedvoidpaint(Graphics g){
// Các thao tác vẽ hình ảnh
public class doAnimation extends TimerTask {
public find run(){
//cập nhật hình ảnh
repaint(); // vẽ lại màn hình sau khi cập nhật
}
}
}
Theo khoảng thời gian xác định, hình ảnh sẽ được lớp doAnimation cập
nhật mới và phương thức repaint() sẽ được gọi để cập nhật lại hình ảnh trên thiết
bị. Phương thức repaint() sẽ gọi phương thức paint (Graphic g) để vẽ lại màn
hình theo các tham số được cập nhật trong phương thức run() của lớp
doAnamation.
b. Sử dụng Thread đề tạo hoạt hình
Một hướng khác khi tạo hiệu ứng hoạt hình là ta có thể dùng thread đề định
thời gian. Thread được lớp java.lang.Thread cung cấp, nó có nhiều phương thức
Sinh viên thực hiện: Đỗ Thị Hồng – Lớp 44E2 - CNTT

15


Khoá luận tốt nghiệp

Tìm hiểu kỹ thuật lập trình trên điện thoại di động

nhưng có phương thức quan trọng mà ta cần chú ý khi xây dựng ứng dụng là
start()

Start() – để khởi động thread
Kỹ thuật sử dụng thread được thực hiện như sau:
public class GameCanvas
{
private final int DELAY = 100;
private GameThread thread;
private boolean running;
public GameCanvas()
{
}
public void start()
{
running = true;
thread = new GameThread();
thread.start();
}
public void stop()
{
running = false;
}
public class GameThread extends Thread
{
public void run()
{
while (running)
{
// Cập nhật hình ảnh
// Kiểm tra các điều kiện chuyển
động
Sinh viên thực hiện: Đỗ Thị Hồng – Lớp 44E2 - CNTT


16


Khoá luận tốt nghiệp

Tìm hiểu kỹ thuật lập trình trên điện thoại di động

// vẽ lại hình ảnh
try
{
Thread.sleep(DELAY);
}
catch (Exception ex) { }
}
}
}
}
Cờ running cho biết thread có đang thực hiện hay không, thread sẽ dừng
khi cờ này được gán bằng false khi gọi phương thức stop(). DELAY cho biết
thời gian lặp lại hành động của thread.
c. Sử dụng giao diện Runnable đề tạo hoạt hình
Cách khác để tạo hoạt hình là sử dụng giao diện Runnable của lớp
java.lang.Runnable. Giao diện này được thiết kế để cung cấp những phương thức
thông dụng cho những đối tượng hoạt hình và nó được kế thừa từ lớp
Thread.Giao diện Runnable có một phương thức duy nhất là run(). Khi một đối
tuợng sửdụng giao diện Runnable đề tạo thread, phương thức run() được gọi để
thực thi thread.
Kỹ thuật sử dụng giao diện Runnable được cài đặt như sau:
public class GameCanvas implements Runnable

{
private final int DELAY = 100;
private Thread thread;
private boolean running;
public GameCanvas()
{
}
public void start()
{
running = true;
Sinh viên thực hiện: Đỗ Thị Hồng – Lớp 44E2 - CNTT

17


Khoá luận tốt nghiệp

Tìm hiểu kỹ thuật lập trình trên điện thoại di động

thread = new Thread(this);
thread.start();
}
public void stop()
{
running = false;
}
public void run() {
while (running) {
// Cập nhật hình ảnh
// Kiểm tra tương thích

// vẽ lại hình ảnh
try {
Thread.sleep(DELAY);
} catch (Exception ex) { }
}
}
}
Do nó được kế thừa từ Thread nên cũng có cờ running cho biết giao diện
có đang thực thi hay không, và nó sẽ ngừng khi cờ running được thiết lập là false
khi phương thức stop() được gọi. Khi lập trình xử lý hoạt hình, chúng ta nên cân
nhắc giữa việc sử dụng Thread và sử dụng Timer. Thread không thích hợp cho
việc tạo các hiệu ứng hoạt hình theo từng frame (frame-rate), cách tốt nhất đối
với hoạt hình dạng này là ta dùng đối tượng Timer vì đối tượng này không sử
dụng trực tiếp đồng hồ hệ thống nên việc thực hiện hoạt hình sẽ hiệu quả hơn.
Timer dễ sử dụng hơn Thread nhưng do ban đầu Java chưa hỗ trợ lớp Timer nên
có một số game sử dụng Thread đề thay thế.
3. Một số giải pháp khi xử lý đồ họa
- Cải tiến tốc độ vẽ hình ảnh trên màn hình thiết bị: Do việc nạp ảnh từ file
thường tốn nhiều thời gian nên ta không thể vừa thực hiện vẽ hình ảnh lên màn
hình vừa đọc hình ảnh từ file, việc này sẽ làm hoạt hình bị giật. Do đó chúng ta
Sinh viên thực hiện: Đỗ Thị Hồng – Lớp 44E2 - CNTT

18


Khoá luận tốt nghiệp

Tìm hiểu kỹ thuật lập trình trên điện thoại di động

cần phải load hình vào bộ nhớ máy trước khi thực hiện thao tác vẽ như sau:

- Load tất cả các hình ảnh cần thiết vào bộ nhớ máy trong phương thức
constructor của đối tượng sử dụng hình ảnh một lần.
- Trong phương thức paint(), ta luân phiên vẽ các hình ảnh này theo
khoảng thời gian xác định. Điều này sẽ giúp cho hoạt hình không bị giật, do hình
ảnh đã được nạp vào trong bộ nhớ ngay từ đầu nhưng sẽ gây ra một khó khăn là
tài nguyên hệ thống bị chiếm giữ.
- Vẽ những phần hình ảnh có thay đổi, không vẽ hết màn hình: Khi thực
hiện các thao tác hoạt hình ta nên vẽ những phần hình ảnh bị thay đổi không nên
vẽ lại toàn bộ màn hình.
- Thu dọn tài nguyên hệ thống sau khi dùng: Khi tạo ra các đối tượng đồ
hoạ như Image, hệ thống sẽ không tự động thu dọn tài nguyên mà các đối tượng
này chiếm giữ cho đến khi kết thúc ứng dụng. Điều này sẽ làm tốn tài nguyên
của hệ thống. J2ME cho phép chúng ta thu dọn tài nguyên hệ thống bằng tay
bằng cách gọi System.gc(). Nhưng trước khi gọi phương thức này các đối tượng
bạn muốn thu hồi tài nguyên phải được gán bằng null.
Có một chú ý là ta nên giải phóng hết tài nguyên trước khi chuyển sang
thực hiện thao tác kế tiếp.
void freeMemory() {
img1 = null;
img2 = null;
img3 = null;
System.gc(); //Call Garbage Collector
}
Không nên thực hiện theo cách sau:
void loadData() {
try {
img1 = null;
img1 = Image.createImage("img1.png");
img2 = null;
img2 = Image.createImage("img2.png");

Sinh viên thực hiện: Đỗ Thị Hồng – Lớp 44E2 - CNTT

19


Khoá luận tốt nghiệp

Tìm hiểu kỹ thuật lập trình trên điện thoại di động

img3 = null;
img3 = Image.createImage("img3.png");
} catch (...) {}
}
Về mặt cú pháp thì không có gì sai, nhưng về mặt thực thi, do máy điện
thoại có tốc độ thấp nên trình Garbage Collector không thể thực hiện việc xoá bộ
nhớ ngay lập tức, nó cần một khoảng thời gian nhất định. Chính vì thế bạn nên
dùng theo cách của method “freeMemory()”.
II. ĐÁNH GIÁ ƯU NHƯỢC ĐIỂM CỦA VIỆC SỬ DỤNG ĐỐI TƯỢNG ĐỒ
HOẠ CẤP THẤP

1. Ưu điểm
- Khai thác tối đa thế mạnh về đồ hoạ mà các loại điện thoại di động ngày
nay cung cấp như màu sắc, hình ảnh, hoạt hình.
- Cho phép can thiệp trực tiếp vào màn hình hiển thị của thiết bị, giúp dễ
dàng xây dựng các ứng dụng hoạt hình.
- Cho phép kiểm soát phím nhấn dễ dàng thông qua lớp Canvas.
- Cho phép ứng dụng thực hiện với tốc độ nhanh vì thao tác trực tiếp trên
màn hình thiết bị mà không qua đối tượng trung gian nào.
2. Nhược điểm
- Khó khăn cho việc xây dựng ứng dụng vì phải sử dụng đối tượng đồ hoạ

cấp thấp.
- Do tất cả các thao tác vẽ đều được lớp Canvas xử lý nên phải có giải
pháp nhằm giúp cho lớp này thực hiện thao tác vẽ nhanh và hiệu quả nhất.
III. XỬ LÝ PHÍM

Do chúng ta xây dựng ứng dụng dựa trên giao diện lập trình cấp thấp nên
ta có thể dễ dàng kiểm soát thao tác phím dựa trên đối tượng Canvas. Hầu hết
các ứng dụng J2ME đều sử dụng Thread cho việc kiểm soát bàn phím. Khi người
dùng nhấn một phím trên điện thoại, một sự kiện được lập tức gửi cho ứng dụng,
ứng dụng sẽ nhận sự kiện, phân tích phím nhấn và xử lý hành động tương ứng.
Đối tượng Canvas cung cấp phương thức keyPressed (int keycode) để xử
Sinh viên thực hiện: Đỗ Thị Hồng – Lớp 44E2 - CNTT

20


Khoá luận tốt nghiệp

Tìm hiểu kỹ thuật lập trình trên điện thoại di động

lý phím nhấn, đây là cách xử lý sự kiện bấm phím.
private int key;
public void keyPressed(int keyCode)
{
// Xử lý hành động tương ứng
switch (keyCode){
case -1:
case 50:
// Up or Number 2
// Hành động khi nhấn phím

break;
case -2:
case 56: // down or Number 8
break;
case -3:
case 52: // Left or Number 4
break;
case -4:
case 54: // Nhấn phím số 6 hoặc phím Right
break;
case -5:
case 53: // Nhấn phím 5 hoặc phím Select
break;
}
repaint(); // Vẽ lại màn hình sau khi nhấn phím
}
public void keyReleased(int keyCode)
{
// Đặt = 0 khi không có phím nào đuợc nhấn.
key = 0;
}
Khi có sự kiện nhấn phím, hàm này sẽ kiểm tra và xử lý hành động tương
Sinh viên thực hiện: Đỗ Thị Hồng – Lớp 44E2 - CNTT

21


Khoá luận tốt nghiệp

Tìm hiểu kỹ thuật lập trình trên điện thoại di động


ứng. Sau khi xử lý sẽ gọi phương thức repaint() để cập nhật lại màn hình thiết bị
theo hành động mà người dùng vừa thực hiện.
IV. XỬ LÝ ÂM THANH

1. Vấn đề hỗ trợ âm thanh trên điện thoại di động
Một khó khăn rất lớn khi lập trình các ứng dụng trên điện thoại di động sử
dụng MIDP 1.0 là phần xử lý âm thanh. Do MIDP 1.0 không hỗ trợ việc xứ lý
âm thanh nên các nhà sản xuất phải cung cấp thêm các hàm API chuyên dùng
cho việc này. Đây là một cố gắng của nhà sản xuất để cải tiến chất lượng các
điện thoại tuy nhiên nó lại gây khó khăn cho các lập trình viên khi xây dựng các
ứng dụng. Do phải phụ thuộc vào các API của nhà sản xuất cung cấp nên tính
chất “Viết một lần – Chạy trên nhiều nền“ không còn đúng nữa. Điều này đã
được SUN cố gắng khắc phục trong phiên bản MIDP 2.0, nhưng hiện nay chỉ có
một số ít điện thoại hỗ trợ phiên bản này. Trong phần này em sẽ trình bày một số
giải pháp khi xử lý âm thanh cho các ứng dụng trên điện thoại di động.
a. Đối với điện thoại Nokia
Hiện nay Nokia có rất nhiều dòng sản phẩm nhưng ta có thể phân thành
hai nhóm chính sau: nhóm thuộc Series 40 và nhóm thuộc series 60. Nhóm thuộc
Series 40 gồm một số loại sau: 7210,6610, 7250, 6800, 3300,3200,3100,… sử
dụng công nghệ MIDP 1.0. Nhóm thuộc Series 60 như: 6600,7610, 3650, 3660,..
nhóm này sử dụng công nghệ MIDP 2.0. Do hiện nay số dòng sản phẩm hỗ trợ
MIDP 2.0 tương đối ít nên em tìm hiểu ứng dụng dựa trên MIDP 1.0. Do MIDP
1.0 không hỗ trợ âm thanh nên để sử dụng được âm thanh, hãng Nokia cung cấp
một số API chuyên dụng cho việc này. Các API mà nhà sản xuất Nokia cung cấp
chỉ hỗ trợ cho việc phát các âm thanh dạng TONE, dạng WAV. TONE được lưu
trữ theo dạng mảng các byte biểu diễn cho tần số Node nhạc như ví dụ sau:
byte[] dataIntro = {
// Thiết lập thông số cho Tone
(byte)0x02, (byte)0x4a, (byte)0x3a, (byte)0x40,

(byte)0x04, (byte)0x00, (byte)0x19, (byte)0x2a,
(byte)0xa2, (byte)0x34, (byte)0x49, (byte)0xaa,
Sinh viên thực hiện: Đỗ Thị Hồng – Lớp 44E2 - CNTT

22


Khoá luận tốt nghiệp

Tìm hiểu kỹ thuật lập trình trên điện thoại di động

(byte)0x17, (byte)0xa1, (byte)0x6a, (byte)0x12,
(byte)0xa1, (byte)0x1a, (byte)0x20, (byte)0xd5,
(byte)0x0b, (byte)0x50, (byte)0x00
};
hoặc được lưu trữ trong file .ott (ví dụ amnhac.ott). Dạng WAV do kích thước
quá lớn không phù hợp với việc lập trình trên điện thoại di động nên em không
trình bày trong phần này.
Cách phát âm thanh dạng TONE:
private Sound introSnd=null;
introSnd=new Sound(dataIntro, Sound.FORMAT_TONE);
introSnd.setGain(254);
public void playIntroduction()
{
stopAllSound();
introSnd.play(1);
}
public void stopAllSound()
{
introSnd.stop();

}
Có một khó khăn khi sử dụng cách phát âm thanh dạng này là ta không thể
phát song song nhiều hiệu ứng âm thanh cùng một lúc được. Đây là một trong
những nhược điểm của MIDP 1.0, nó gây khó khăn cho việc tạo các hiệu ứng âm
thanh cho ứng dụng. Hiện nay các loại Nokia sử dụng MIDP 1.0 không cung cấp
các API phục vụ cho việc chơi các tập tin MIDI mặc dù là một số điện thoại
Nokia đã hỗ trợ chơi nhạc MIDI.
Cách kiểm tra điện thoại có hỗ trợ chơi âm thanh không:
Dùng phương thức className để tìm gói com.nokia.mid.sound.Sound,
nếu tìm thấy tức là điện thoại có hỗ trợ chơi âm thanh.
private static TonePlayer makeTonePlayer()
{
Sinh viên thực hiện: Đỗ Thị Hồng – Lớp 44E2 - CNTT

23


Khoá luận tốt nghiệp

Tìm hiểu kỹ thuật lập trình trên điện thoại di động

TonePlayer player;
try
{
Class.forName("com.nokia.mid.sound.Sound");
// Tạo lớp chơi âm thanh
Classclass=Class.forName("example.tones.NokiaTonePlayer");
player = (TonePlayer)(clas.newInstance());
}
catch (Exception e)

{
System.out.print(“ Không hỗ trợ âm thanh.”);
}
return player;
}
Lớp chơi âm thanh trên Nokia.
Package example.tones;
import com.nokia.mid.sound.*; // import gói chơi âm thanh
class NokiaTonePlayer extends TonePlayer {
private final Sound sound; NokiaTonePlayer()
{
sound = new Sound(0, 1L);
}
void play(int frequency) {
sound.init(frequency, 2000L);
sound.play(1);
}
void stop() {
sound.stop();
}
}
Sinh viên thực hiện: Đỗ Thị Hồng – Lớp 44E2 - CNTT

24


Khoá luận tốt nghiệp

Tìm hiểu kỹ thuật lập trình trên điện thoại di động


Vì không thể phát cùng lúc nhiều kênh âm thanh nên chỉ chọn một trong
hai cách sau: một là sử dụng âm thanh cho các hiệu ứng, hai là sử dụng âm thanh
làm nhạc nền mà không có âm thanh cho phần hiệu ứng.
b. Đối với điện thoại SAMSUNG
Các dòng sản phẩm của SAMSUNG sử dụng MIDP 1.0 và MIDP 2.0 đều
được cung cấp lớp com.samsung.util.AudioClip để lập trình âm thanh. Hiện nay
điện thoại SAMSUNG chỉ hỗ trợ âm thanh dạng .mmf (TYPE_MMF=1). Để tạo
đối tượng AudioClip, ta dùng Constructor sau:
Public AudioClip(int type, String filename) throws java.io.IOException
Trong đó type luôn luôn bằng 1 (kiểu định dạng .mmf) và filename là tên
tập tin mmf. Tập tin mmf thực chất là tập tin MIDI đặc biệt được SAMSUNG sử
dụng cho dòng sản phầm của họ.
Để kiểm tra điện thoại có hỗ trợ âm thanh không, ta dùng phương thức
tĩnh AudioClip.isSupported(). AudioClip còn hỗ trợ 4 phương thức điều khiển là
play() để chơi nhạc, stop() dừng nhạc, pause() tạm dừng và resume() chơi tiếp
đoạn nhạc đã tạm dừng trước đó. SAMSUNG cũng tương tự như Nokia là ở mỗi
thời điểm chỉ có một đối tượng AudioClip chơi nhạc và đó là đối tượng được gọi
là play() sau cùng.
Cách chơi nhạc được SAMSUNG xây dựng như sau:
import com.samsung.util.AudioClip;
private AudioClip audioClip=null;
public void playAudioClip(String filename)
{
stopAudioClip();
try{
audioClip=newAudioClip(1,filename); //tạolớp
AudioClip
audioClip.play(10,1); // Play 10 lần, Loop time = 1
} catch (Exception e) {
e.printStackTrace();

}
Sinh viên thực hiện: Đỗ Thị Hồng – Lớp 44E2 - CNTT

25


×