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

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

42 235 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 42
Dung lượng 367 KB

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

Nội dung

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 t

Trang 1

Trờng đại học vinh Khoa công nghệ thông tin

-Đỗ Thị HồngTó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

LỜI NểI ĐẦU

Cụng nghệ di động ngày càng phỏt triển Chiếc điện thoại di động giờ đõykhụng chỉ là phương tiện liờn lạc mà cũn là một phương tiện phục vụ nhu cầugiải trớ của con người

Trang 2

Công nghệ Java là một trong những công nghệ tiên phong xâm nhập vàolĩ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 đồngthờ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ầygiá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ũngnhư bạn bè, người thân đã luôn động viên, giúp đỡ, tạo điều kiện cho em trongsuố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

Trang 3

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ốnghà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ựctrong đờ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ôngnghệ thông tin như Bluetooth, ADSL, Wireless, Mobile, WAP,…nhằm giúpcô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ữngcông nghệ mà góp phần không nhỏ trong việc đưa công nghệ thông tin đến vớingười sử dụng là công nghệ di động Với tốc độ phát triển của công nghệ di độngngà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ốngnhư những chiếc điện thoại trước đây – chỉ có nhiệm vụ thoại, điện thoại hiệnnay 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ảitrí 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ụngtrê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 độnghiệ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ưutrữ 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 khaithác các điểm mạnh về âm thanh, hình ảnh, đồ họa nhằm phục vụ cho nhu cầugiải trí của người dùng

Trang 4

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ểugồ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ậptrì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ệnthoại di động Ứng dụng kết quả nghiên cứu để xây dựng một chương trình ứngdụng cho điện thoại di động

5 Môi trường thực hiện

Trang 5

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 naykhô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ôngthể 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ụngviế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âydựng nhiều nhánh mới cho Java như: JavaMail(thư điện tử), Java TAPI( viễnthô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:

J2EE TM (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 TM (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ôngmạ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

J2ME TM (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à PersonalJava của phiên bản Java 1.1 Đến sự ra đời của Java 2 thì Sun quyết định thay thế

Trang 6

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ườilậ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 đếnphần cứng thật sự Để đạt được mục tiêu này, J2ME được xây dựng bằng cáctầ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ìnhviê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ủaJ2ME 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ồmKVM ( 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ụngJ2ME 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ủacá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ệntrạ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à cungcấ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

Trang 7

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í

- CLDC (Connected Limited Device Configuration-Cấu hình thiết bị kếtnố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 (low-end), các thiết bị này thông thường là máy điện thọai di động và PDA vớikhoảng 512 KB bộ nhớ.Vì tài nguyên bộ nhớ hạn chế nên CLDC được gắn vớiJava 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ữngthiế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ệnthoạ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 ứngdụ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ả

Trang 8

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 CLDCkhô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áctính năng cho từng thiết bị chuyên biệt Cả 2 Configuration đều có những profileliê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ênthường ta không thể chuyển một ứng dụng Java viết cho một profile này và chạytrê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ệnngười dùng … vào CLDC Profile này được thiết kế chủ yếu để nhắm vào điệnthọ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ăngmạ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ậptrì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ấtmộ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

Trang 9

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ậncủ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 APIjavaxmicroedition.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ậptrì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àmtăng kích thước chương trình cũng như khả năng lỗi Với Game API trong MIDP2.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ộtlayer 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épthao 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 trungvà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 DeviceApplet) Một MIDlet là một lớp Java mở rộng(extend) của lớp trừu tượngjava.microedition.midlet.MIDlet và thực thi (implement) các phương thứcstartApp(), 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.*;

Trang 10

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ớpMIDlet, 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 MIDletkhở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

- 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

Trang 11

Khi người dùng yêu cầu thực thi ứng dụng, bộ quản lý ứng dụng sẽ thựcthi 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ư NokiaDeveloper‘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ờigian 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ậpkhá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 độnggồ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ăncho việc xây dựng các ứng dụng mạnh về tính năng đồ hoạ Do đó làm chongườ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ựchiện tốt hơn

Trang 12

Công nghệ J2ME với MIDP 1.0 không hỗ trợ cho việc lập trình âm thanhnê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 thanhphụ 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íchthướ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 địnhchú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ề Đốivới một số loại điện thoại thuộc Series 60 của Nokia (6600, 7610, 3650,…),SonyEricssion 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ấthạ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áychỉ cho phép tải về khoảng 10 KB hay 30 KB Đây là một khó khăn cho ngườilậ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 Kích thước File JAR tối đaNokia Series 40 64 KB

Motorola T720 64 KBMotorola V60i 50 KBPanasonic X60 80 KBSony Ericssion T610, T630 128 KB

Samsung X600 100 KB

Trang 13

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ạnhcủ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àymộ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ànhì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ămngà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ếtvớ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ữngkhí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áchhiệ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ấpcho 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 ứngdụ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ớpDisplayable 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 DisplayablePublic abstract class Screen extends Displayable

Trang 14

- Đồ hoạ mức cao: là lớp con của lớp Screen Nó cung cấp các thành phầnnhư Textbox, List, Form, Alert Ta ít điều khiển việc sắp xếp các thành phầntrê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ớidanh 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ậpbởi ứng dụng hoặc được thiết lập là FOREVER cho đến khi người dùng nhấnphí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ềuviệ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 ứngdụ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 đượctrê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 ứngdụ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ầukhả 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

Trang 15

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ộtkhoả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ạthì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 ảnhrepaint(); // vẽ lại màn hình sau khi cập nhật } }

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 đề địnhthời gian Thread được lớp java.lang.Thread cung cấp, nó có nhiều phương thức

Trang 16

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

Trang 17

// 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ừngkhi cờ này được gán bằng false khi gọi phương thức stop() DELAY cho biếtthờ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ớpjava.lang.Runnable Giao diện này được thiết kế để cung cấp những phương thứcthông dụng cho những đối tượng hoạt hình và nó được kế thừa từ lớpThread.Giao diện Runnable có một phương thức duy nhất là run() Khi một đốituợ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;

Trang 18

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

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à falsekhi 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ânnhắc giữa việc sử dụng Thread và sử dụng Timer Thread không thích hợp choviệc tạo các hiệu ứng hoạt hình theo từng frame (frame-rate), cách tốt nhất đốivớ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ànhì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

Trang 19

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ứcconstructor 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 theokhoả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ựchiệ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ượngnà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êncủa hệ thống J2ME cho phép chúng ta thu dọn tài nguyên hệ thống bằng taybằng cách gọi System.gc() Nhưng trước khi gọi phương thức này các đối tượngbạ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 sangthực hiện thao tác kế tiếp

void freeMemory() { img1 = null;

img1 = null;

img1 = Image.createImage("img1.png");

img2 = null;

img2 = Image.createImage("img2.png");

Trang 20

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

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ếtcác ứng dụng J2ME đều sử dụng Thread cho việc kiểm soát bàn phím Khi ngườidù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ử

Trang 21

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;

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

Ngày đăng: 15/12/2015, 08:52

HÌNH ẢNH LIÊN QUAN

Sơ đồ biều diễn chu kỳ sống của Midlet. - Tìm hiểu kỹ thuật lập trình trên điện thoại di động
Sơ đồ bi ều diễn chu kỳ sống của Midlet (Trang 10)
Hình sau minh hoạ việc lưu trữ dữ liệu - Tìm hiểu kỹ thuật lập trình trên điện thoại di động
Hình sau minh hoạ việc lưu trữ dữ liệu (Trang 32)

TỪ KHÓA LIÊN QUAN

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

w