1. Trang chủ
  2. » Công Nghệ Thông Tin

Giáo Trình Lập Trình Mobile

180 509 4
Tài liệu đã được kiểm tra trùng lặp

Đ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

Tiêu đề Giáo Trình Lập Trình Mobile
Tác giả Trịnh Công Duy
Trường học Đại Học Đà Nẵng, Trường Đại Học Bách Khoa Đà Nẵng
Chuyên ngành Khoa Công Nghệ Thông Tin
Thể loại Giáo trình học phần
Thành phố Đà Nẵng
Định dạng
Số trang 180
Dung lượng 2,06 MB

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

Nội dung

Giáo Trình Lập Trình Mobile

Trang 1

TRƯỜNG ĐẠI HỌC BÁCH KHOA ĐÀ NẴNG

KHOA CÔNG NGHỆ THÔNG TIN

TH.S TRỊNH CÔNG DUY

(TÀI LIỆU LƯU HÀNH NỘI BỘ)

Trang 2

MỤC LỤC

I Tổng quan về công nghệ di động 2

I.1 Lịch sử của điện thoại di động 2

I.2 Các chuẩn công nghệ 11

II Giới thiệu về J2ME 14 II.1 Lịch sử 14

II.2 Lý do chọn J2ME 14

II.3 Kiến trúc của J2ME 14

II.4 Giới thiệu MIDP 17

II.5 Môi trường phát triển J2ME 23

III Các thành phần giao diện ở mức cao của ứng dụng MIDP 30 III.1 Đối tượng Display, Displayable và Screens 30

III.2 Thành phần Form và Items 31

III.3 Thành phần List, Textbox, Alert, và Ticker 43

IV Các thành phần giao diện ở mức thấp của ứng dụng MIDP 51 IV.1 Các hàm API ở mức thấp 51

IV.2 Lớp Canvas 51

IV.3 Lớp Graphics 61

IV.4 Các hàm API dùng để lập trình Game 78

V Xử lý sự kiện 79 V.1 Đối tượng Command 79

V.2 Đối tượng Item 80

V.3 Ví dụ 80

VI Record Management System 82 VI.1 Persistent Storage Through the Record Store 82

VI.2 Các vấn đề liên quan đến RMS 84

VI.3 Các hàm API trong RMS 84

VI.4 Duyệt Record với RecordEnumeration 96

VI.5 Sắp xếp các record với interface RecordComparator 97

VI.6 Searching with RecordFilter 116

VI.7 Notification of Changes with RecordListener 130

VI.8 Exception Handling 135

VII Kết nối mạng với Generic Connection Framework 135 VII.1 Những protocol được hỗ trợ trong GCF 136

VII.2 Hỗ trợ giao thức HTTP trong MIDP 142

VII.3 Accessing a Java servlet 152

VIII Phụ lục 157 VIII.1 Tổng số class và interface trong CLDC 157

VIII.2 Thông tin của các dòng điện thoại thông dụng 158

VIII.3 Tham khảo: 178

Trang 3

I Tổng quan về công nghệ di động

I.1 Lịch sử của điện thoại di động

I.1.1 Phát minh ra điện thoại di động:

Tiến sĩ Martin Cooper, cựu tổng giám đốc đơn vị hệ thống của Motorola, được coi là “cha đẻ”của thiết bị liên lạc di động cầm tay và cũng là người đầu tiên thực hiện một cuộc gọi thông quacông cụ này Ý tưởng liên lạc di động được bộ phận nghiên cứu AT&T thuộc Trung tâm BellLabs (Mỹ) đưa ra năm 1947 Nhưng đến cuối những năm 60 và đầu thập kỷ 70 của thế kỷ trước,Motorola và Bell Labs mới thực sự trở thành 2 đối thủ lao vào cuộc đua trong việc tích hợp côngnghệ này vào các thiệt bị cá nhân di động

Kỹ sư điện Cooper từng có 4 năm phục vụ trong hải quân trước khi chuyển về làm việc chomột công ty viễn thông nhỏ Năm 1954, ông được Motorola tuyển dụng và tham gia phát triểncác sản phẩm di động, đáng chú ý nhất là công cụ liên lạc radio di động đầu tiên dành cho cảnhsát Chicago năm 1967 Năm 1973, ông thiết lập một trạm thu phát tại New York đồng thời tung

ra mẫu đầu tiên của cái gọi là điện thoại di động (cellphone): máy Motorola Dyna-Tac Saunhững cuộc thử nghiệm ban đầu tại Washington, Cooper và Motorola quyết định đưa công nghệmới tới New York để quảng bá với công chúng

Motorola Dyna-Tac - chiếc điện thoại di động đầu tiên:

Kích thước (cm): 22,86 x 12,7 x 4,44

Trọng lượng: 1,13kg

Màn hình: không có

Số bo mạch điện: 30

Thời lượng thoại: 35 phút

Thời lượng pin: 10 tiếng

Tính năng: Nói, nghe, quay số

Ngày 3/4/1973, đứng trên một phố gần khách sạn Manhattan Hilton, Cooper quyết địnhthử thực hiện một cuộc gọi riêng trước khi đi lên gác tham dự một cuộc họp báo giới thiệu thiết

bị Cú điện thoại ấy được ông gọi tới chính đối thủ cạnh tranh của mình: Joel Engel, Giám đốcTrung tâm thí nghiệm Bell Labs

Thật tuyệt vời, “hòn gạch” biết nói nặng hơn 1kg của Cooper đã hoạt động rất tốt, kết nốiông với trạm thu phát đặt trên nóc tòa tháp Burlington Consolidated (nay là tòa nhà AllianceCapital Building) ở New York, đồng thời liên lạc được với cả đường dây cố định Những ngườiqua đường tỏ ra rất ngạc nhiên khi thấy một người đàn ông bấm bấm một công cụ gì đó, áp sátvào tai và rồi say sưa nói chuyện

Nói về tương lai của ngành di động, tiến sĩ Cooper, năm nay đã ngoài 70 tuổi, cho rằngthế giới viễn thông thực ra vẫn còn rất non trẻ và mới đang bắt đầu bùng nổ Động lực cho quátrình bùng nổ ấy trước hết là quan niệm kinh doanh mới, trong đó chú trọng vào người tiêu

Trang 4

dùng Quan trọng hơn nữa là một nền hoạt động mở, trong đó có những công nghệ mới với khảnăng tăng cường khai thác giải tần Bên cạnh đó, nhà phát minh viễn thông cho rằng, cần cóchính sách để ưu tiên cho những đối tượng biết khai thác tốt nhất giải tần sóng hiện có “Nhữngthay đổi sẽ không diễn ra quá nhanh, nhưng trong 10 năm tới, đó sẽ là những chuyển biến cótính cơ bản”, Cooper nhận định “Lời khuyên của tôi về công nghệ liên lạc di động trong tươnglai, nhất là đối với các thị trường đang phát triển, là hãy từ từ, chậm nhưng hiệu quả” Theo ông,cần thận trọng trong việc phân bổ giải tần đối với mỗi ứng dụng cụ thể Và khi phân bổ, dù làcho thế hệ 3G hay 4G, cần tiến hành một cách hợp lý tùy thực tế của mỗi thị trường Đối với cácnước đang phát triển, Cooper cho rằng không nên vội cuốn theo sự cám dỗ của xu thế nhảysang 3G, cho tới khi nào thấy rõ được những ích lợi cụ thể cho mỗi ngành kinh tế và mỗi quốcgia.

kỳ đâu

Trang 5

2 Nokia Mobira Senator (1982)

Mới nhìn Nokia Mobira Senator giống hộp bom hơn điện thoại di động, nhưng thiết bịhình hộp to đồ sộ này là điện thoại đầu tiên của Nokia Được giới thiệu năm 1982, Nokia MobiraSenator được thiết kế sử dụng trong xe ô tô Nó nặng khoảng 10 kg

3 PDA Simon Personal Communicator (1993)

Điện thoại có tính năng PDA bây giờ không còn mới Nhưng năm 1993 đây là một ý tưởngmới lạ Simon Personal Communicator là điện thoại đầu tiên có tính năng của liên minh IBM vàBellSouth Nó là điện thoại kiêm máy tính, sổ địa chỉ, máy fax và e-mail Giá 900 USD

Trang 6

4 Motorola StarTAC (1996)

Trước khi Motorola Star TAC được giới thiệu năm 1996, các tính năng điện thoại di độngđược chú trọng nhiều hơn thời trang Nhưng thiết bị nhỏ bé có thể gập này đã cho thấy rằngphong cách là cực kỳ quan trọng Motorola StarTAC 3.1 ounce là nhỏ nhất trong thời điểm đó vàđến nay nó vẫn nhỏ và nhẹ hơn nhiều "dế" khác

5 Nokia 6160 (1998) và Nokia 8260 (2000)

Vào những năm 1990, các điện thoại hình thỏi kẹo của Nokia xuất hiện hàng loạt NhưngNokia 6160 và Nokia 8260 gây được sự chú ý của nhiều người Nokia 6160 có màn hình đentrắng, ăng-ten ngoài, thân 5,2 inch, nặng 6 ounce Nokia 8260 ra mắt năm 2000 ấn tượng hơnkhi được tô điểm chiếc áo màu, dài 4 inch, nặng chỉ 3,4 ounce

Trang 7

6 Phần mềm Palm với Kyocera QCP6035 (2000)

Nếu bạn là một trong những người hâm mộ điện thoại Treo sử dụng hệ điều hành Palm thì

có thể cảm ơn Kyocera Dế thông minh QCP6035 của công ty này thống lĩnh thị trường bán lẻnăm 2001 Với giá 400 USD và 500 USD, đây là điện thoại dùng phần mềm Palm đầu tiên đượcphân phối rộng rãi Sản phẩm có 8 MB bộ nhớ, màn hình trắng đen

7 PDA đến điện thoại: Handspring Treo 180 (2001)

Trở lại khi Palm và Handspring còn là đối thủ Handspring đã khuấy động thị trường với sảnphẩm Treo 180 gồm hai phiên bản: một với bàn pím QWERTY và một Treo 180g với thiết bịnhập liệu Graffiti Như Kyocera QCP6035, nó có màn hình đen trắng nhưng có 16MB bộ nhớ

Trang 8

8 Tiên phong về thiết kế xoay: Danger Hiptop (2002)

T-Mobile Sidekick từng được mệnh danh là sản phẩm của năm 2003 Mặc dù các khả năngđàm thoại của nó xoàng, nhưng là một trong những thiết bị đầu tiên cung cấp tính năng duyệtweb, truy cập email và nhắn tin Hơn thế nữa, nó là người tiên phong về thiết kế xoay tròn

9 Điện thoại cách tân: BlackBerry 5810 (2002)

BlackBerry 5810 được biết đến nhưng một thiết bị điển hình về các khả năng xử lý dữ liệu.Đây là sản phẩm đầu tiên cung cấp các tính năng voice, GSM

Trang 9

10 Đột phá với tính năng chụp ảnh: Sanyo SCP-5300 (2002)

Sanyo SCP-5300 PCS là "dế" đầu tiên có tính năng chụp ảnh được Sanyo và Sprint giớithiệu năm 2002 Ở độ phân giải cao nhất nó có thể chụp được các ảnh VGA (640 x 480), nhưngđến nay, tất nhiên, nó không thể sanh với các điện thoại kiêm máy ảnh 5 megapixel

11 Điện thoại kiêm máy chơi game Nokia N-Gage (2003)

Dòng máy N-Gage tạo được nhiều dư luận khi xuất hiện trên thị trường năm 2003, nhưngthật không may, đó lại là sản phẩm bất lợi Sự kết hợp điện thoại di động/thiết bị chơi gameđược kỳ vọng sẽ quyến rũ được game thủ từ bỏ máy chơi game cầm tay của họ Nhưng thayvào đó, nó gây phản cảm bởi thiết kế hình bán nguyệt kỳ quặc

Trang 10

12 Siêu mỏng: Motorola Razr v3 (2004)

Điện thoại di động ngày càng mỏng và phong cách hơn, nhưng Motorola Razr v3 là sảnphẩm đầu tiên gây ấn tượng về thiết kế thời thượng mỏng và nhẹ vào 2004 Ba năm sau "dế"này vẫn được đánh giá là một trong những điện thoại phổ biến nhất trên thị trường

13 Điện thoại nghe nhạc Motorola Rokr (2005)

Motorola Rokr – điện thoại di động kiêm máy nghe nhạc đầu tiên sử dụng phần mềm nghenhạc của Apple Với thiết bị này, người dùng có thể thưởng thức các bài hát, bản nhạc từ dịch

vụ iTunes

Trang 11

14 Phong cách: BlackBerry Pearl (2006)

Thiết kế mỏng, bàn phím SureType, tính năng chụp ảnh, nghe nhạc, xem video, hỗ trợ dịch vụe-mail ấn tượng và nhiều khả năng đa phương tiện khác, BlackBerry Pearl trở thành viên ngọcquý của không ít người

15 Cách tân với Apple iPhone (2007)

Sau những tháng chờ đợi, Apple khẳng định tháng 6 là thời điểm quan trọng để iPhone

sẽ xuất hiện trên thị trường Đây là thiết kế cách tân với màn hình cảm ứng cảm ứng đa điểm sẽmang lại một thế giới sinh động với e-mail bằng giọng nói, bàn phím "mềm" dạng Qwerty có thểđoán từ, trình duyệt web Safari, tích hợp camera2-megapixel iPhone là thiết bị gây tò mò nhấttrong giới chơi điện thoại di động, dùng hệ điều hành Mac OS X Giá bán: 500 USD cho mẫu 4

GB, 600 USD cho mẫu 8 GB

Trang 12

I.2 Các chuẩn công nghệ

a GMS: Hệ thống thông tin di động toàn cầu

Hệ thống thông tin di động toàn cầu (tiếng Anh: Global System for Mobile Communications; tiếng Pháp: Groupe Spécial Mobile; viết tắt: GSM) là một công nghệ dùng cho

mạng thông tin di động Dịch vụ GSM được sử dụng bởi hơn 2 tỷ người trên 212 quốc gia vàvùng lãnh thổ Các mạng thông tin di động GSM cho phép có thể roaming với nhau do đó nhữngmáy điện thoại di động GSM của các mạng GSM khác nhau ở có thể sử dụng được nhiều nơitrên thế giới

GSM là chuẩn phổ biến nhất cho điện thoại di động (ĐTDĐ) trên thế giới Khả năng phúsóng rộng khắp nơi của chuẩn GSM làm cho nó trở nên phổ biến trên thế giới, cho phép người

sử dụng có thể sử dụng ĐTDĐ của họ ở nhiều vùng trên thế giới GSM khác với các chuẩn tiềnthân của nó về cả tín hiệu và tốc độ, chất lượng cuộc gọi Nó được xem như là một hệ thống

ĐTDĐ thế hệ thứ hai (second generation, 2G) GSM là một chuẩn mở, hiện tại nó được phát

triển bởi 3rd Generation Partnership Project (3GPP) Đứng về phía quan điểm khách hàng, lợithế chính của GSM là chất lượng cuộc gọi tốt hơn, giá thành thấp và dịch vụ tin nhắn Thuận lợiđối với nhà điều hành mạng là khả năng triển khai thiết bị từ nhiều người cung ứng GSM chophép nhà điều hành mạng có thể sẵn sàng dịch vụ ở khắp nơi, vì thế người sử dụng có thể sửdụng điện thoại của họ ở khắp nơi trên thế giới

Giao diện radio

GSM là mạng điện thoại di động thiết kế gồm nhiều tế bào do đó các máy điện thoại di độngkết nối với mạng bằng cách tìm kiếm các cell gần nó nhất Các mạng di động GSM hoạt độngtrên 4 băng tần Hầu hết thì hoạt động ở băng 900 Mhz và 1800 Mhz Vài nước ở Châu Mỹ thì

sử dụng băng 850 Mhz và 1900 Mhz do băng 900 Mhz và 1800 Mhz ở nơi này đã bị sử dụngtrước Các mạng sử dụng băng tần 900 Mhz thì đường uplink sử dụng tần số trong dãi 890-915MHz và đường downlink sử dụng tần số trong dãi 935-960 MHz Và chia các băng tần này thành

124 kênh với độ rộng băng thông 25 Mhz, mỗi kênh cách nhau 1 khoảng 200 Khz Sử dụng

công nghệ phân chia theo thời gian TDM (time division multiplexing) để chia ra 8 kênh full rate

hay 16 kênh haft rate Có 8 khe thời gian gộp lại gọi là 1một khung TDMA Tốc độ truyền dữ liệucủa một kênh là 270.833 kbit/s và khoảng thời gian của một khung là 4.615 m

Công suất phát của máy điện thoại được giới hạn tối đa là 2 watt đối với băng GSM850/900 Mhz và tối đa là 1 watt đối với băng GSM 1800/1900 Mhz

Mạng GSM sử dụng 2 kiểu mã hoá âm thanh để nén tín hiệu âm thanh 3,1 Khz đó là mã

hoá 6 và 13 kbps gọi là full rate (13 kbps) và haft rate (6 kbps) Để nén họ sử dụng hệ thống có tên là linear predictive coding (LPC).Vào năm 1997 thì họ cải tiến thêm cho mạng GSM là bộ mã

GSM-EFR sử dụng full rate 12,2 kbps

Có tất cả bốn kích thước cell site trong mạng GSM đó là macro, micro, pico và umbrella.Vùng phủ sóng của mỗi cell phụ thuộc nhiều vào môi trường Macro cell được lắp trên cột caohoặc trên các toà nhà cao tầng, micro cell lại được lắp ở các khu thành thị, khu dân cư, pico cell

Trang 13

thì tầm phủ sóng chỉ khoảng vài chục mét trở lại nó thường được lắp để tiếp sóng trong nhà.Umbrella lắp bổ sung vào các vùng bị che khuất hay các vùng trống giữa các cell.

Bán kính phủ sóng của một cell tuỳ thuộc vào độ cao của anten, độ lợi anten thường thì nó

có thể từ vài trăm mét tới vài chục km Trong thực tế thì khả năng phủ sóng xa nhất của mộttrạm GSM là 32 km (22 dặm) Một số khu vực trong nhà mà các anten ngoài trời không thề phủsóng tới như nhà ga, sân bay, siêu thị thì người ta sẽ dùng các trạm pico để chuyển tiếp sóng

từ các anten ngoài trời vào

b GPRS (General Packet Radio Service) là dịch vụ vô tuyến gói tổng hợp được phát triển trên

nền tảng công nghệ thông tin di động toàn cầu (GSM) sử dụng đa truy nhập phân chia theo thờigian (TDMA) Công nghệ GPRS hay còn biết đến với mạng di động thế hệ 2.5G, áp dụngnguyên lý gói vô tuyến để truyền số liệu của người sử dụng một cách có hiệu quả giữa máy điệnthoại di động tới các mạng truyền số liệu

c EDGE (Enhanced Data Rates for GSM Evolution), đôi khi còn gọi là EGPRS, là một công

nghệ di động được nâng cấp từ GPRS cho phép truyền dự liệu với tốc độ có thể lên đến 384kbit/s cho người dùng cố định hoặc di chuyển chậm và 144kbit/s cho người dùng di chuyển tốc

độ cao Trên đường tiến đến 3G, EDGE được biết đến như một công nghệ 2.75G Thực tế bêncạnh điều chế GMSK, EDGE dùng phương thức điều chế 8-PSK để tăng tốc độ dự liệu truyền.Chính vì thế, để triển khai EDGE, các nhà cung cấp mạng phải thay đổi trạm phát sóng BTScũng như là thiết bị di động so với mạng GPRS

d CDMA (Code Division Multiple Access), tiếng Việt gọi là phương thức Đa truy cập phân

chia theo mã, là một kỹ thuật đa truy cập vào kênh truyền vật lý sử dụng kỹ thuật phân chia theo

mã (code) Trong kỹ thuật CDMA, tín hiệu của mỗi người dùng (user) sẽ được dàn trãi(spreading) bằng 1 mã xác định trực giao (hoặc giả trực giao) với nhau Tín hiệu truyền sẽ là tínhiệu chồng chập của nhiều người dùng khác nhau theo thời gian và trên cùng 1 băng tần số

Kỹ thuật CDMA hiện đang được sử dụng rộng rãi trong các hệ thống điện thoại di động:

IS95A/B, CDMA2000, WCDMA(UMTS)

e CDMA2000 là một họ chuẩn thông tin di động sử dụng công nghệ CDMA được chuẩn hóa bởi

3GPP2 CDMA2000 bao gồm 3 chuẩn chính: CDMA2000 1xRTT, CDMA2000 EV-DO,CDMA2000 EV-DV CDMA2000 hoạt động trong dãi tần số 450 MHz, 700 MHz, 800 MHz, 900MHz, 1700 MHz, 1800 MHz, 1900 MHz, và 2100 MHz CDMA2000 là công nghệ 3G tiếp nối củacông nghệ 2G CdmaOne (hay IS-95) và được xem như là một đối thủ cạnh tranh với công nghệ3G/UMTS Tuy nhiên, CDMA2000 1xRRT thường được nhắc đến như là một công nghệ 2.5G(tương ứng với GPRS)

f CDMA2000 EV-DO (Evolution-Data Optimized) là một chuẩn thông tin di động thuộc họ

CDMA2000, kết hợp giữa kỹ thuật CDMA và TDMA để cung cấp dịch vụ số liệu tốc độ cao.CDMA2000 EV-DO được QualComm đề xuất vào 3/2000 và được chuẩn hóa bởi 3GPP2

Đặc điểm nổi bật của CDMA2000 EV-DO:

Trang 14

- EV-DO hỗ trợ tốc độ số liệu hướng xuống 2,4576 Mbps trên băng thông 1,25 MHz và

tốc độ số liệu hướng lên 153,6 Kbps

- Trạm gốc linh hoạt dễ dàng phát công suất lớn

- Hỗ trợ sơ đồ điều chế cấp cao kèm với khả năng thực hiện nhiều phương pháp sửa lỗi

- Kỹ thuật chuyển mạch đó là chuyển mạch gói ghép kênh theo thời gian

g Time Division Multiple Access (TDMA), tiếng Việt gọi là phương thức Đa truy cập phân chia theo thời gian, là một kĩ thuật đa truy cập vào kênh truyền vật lý sử dụng kĩ thuật phân

chia theo thời gian

Trang 15

II Giới thiệu về J2ME

II.1 Lịch sử

J2ME được phát triển từ kiến trúc Java Card, Embeded Java và Personal Javacủa phiên bản Java 1.1 Đến sự ra đời của Java 2 thì Sun quyết định thay thế PersonalJava 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êngọi, J2ME là nền tảng cho các thiết bị có tính chất nhỏ, gọn:

II.2 Lý do chọn J2ME

a) Java ban đầu được thiết kế dành cho các máy với tài nguyên bộ nhớ hạnchế

b) Thị trường của J2ME được mở rộng ra cho nhiều chủng loại thiết bị như:

 Các lọai thẻ cá nhân như Java Card

 Máy điện thoại di động

 Máy PDA (Personal Digital Assistant - thiết bị trợ giúp cá nhân)

 Các hộp điều khiển dành cho tivi, thiết bị giải trí gia dụng …

II.3 Kiến trúc của J2ME

Phần này sẽ trình bày kiến trúc tổng quát của nền tảng Java

Trang 16

a) Giới thiệu các thành phần trong nền tảng J2ME:

Định nghĩa về Configuration (Cấu hình): là đặc tả định nghĩa một môi trường phần mềmcho 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ư:

 CLDC (Connected Limited Device Configuration-Cấu hình thiết bị kết nối giớihạ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ớ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 Javakhô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ộcCLDC 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ệ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ậphợ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 Tuynhiên, bạn 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ả các tính năng như với máy ảo của

Trang 17

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ấuphẩ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ảng dưới là sự so sánh các thông số kỹ thuật của CDC và CLDC

Định nghĩa veef 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 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ậnthấ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 profilekhá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ạytrên các máy hỗ trợ J2ME Sau đây là 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ểnthị hạn chế, dung lượng chứa có hạn Do đó MIDP sẽ cung cấp một giao diện ngườidù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ácmáy di động (Wireless Java)

 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ư

Trang 18

viện của bộ Core Java2 1.3

Ngoài ra còn có Personal Basis Profile, Personal Profile, RMI Profile, Game Profile

II.4 Giới thiệu MIDP

II.4.1 Giới thiệu về MIDP

a) Định nghĩa:

Đây là Profile được định nghĩa dành riêng cho các thiết bị di động và là thànhphần chính trong J2ME MIDP cung cấp các chức năng cơ bản cho hầu hết các dòngthiêt bị di động phổ biến nhất như các máy điện thoạI di động và các máy PDA Tuy nhiênMIDP không phải là cây đũa thần cho mọi lập trình viên vì như chúng ta đã biết, MIDPđược thiết kế cho các máy di động có cấu hình rất thấp Trong phần sau tôi sẽ liệt kê quacác tính năng mà MIDP cung cấp và những giới hạn của nó

b) Những chức năng MIDP không thực hiện được:

 Phép tính dấu phẩy động (floating point): Phép tính này đòi hỏi rất nhiều tàinguyên CPU và phần lớn các CPU cho các thiết bị di động không hỗ trợ phép tínhnày, do đó MIDP cũng không có

 Bộ nạp class (Class Loader)

 Hỗ trợ từ khóa finalize() như trong J2SE: Việc “dọn dẹp“ tài nguyên trước khi nó bị xóađược đẩy về phía các lập trình viên

 Không hỗ trợ JNI

 Hỗ trợ hạn chế thao tác bắt lỗi

 Phần lớn các thư viện API cho Swing và AWT không thể sử dụng được trong MIDP

 Không hỗ trợ các tính năng quản lý file và thư mục: Đây có thể làm bạn ngạcnhiên nhưng thực tế là các thiết bị J2ME không có hỗ trợ các thiết bị lưu trữ thôngthường như ổ cứng v.v Tuy nhiên, điều đó không có nghĩa là bạn phải mất đi mọi dữliệu quan trọng mỗi khi tắt máy, Sun đã cung cấp một chức năng khác tươngđương gọi là Record Management system (RMS) để cung cấp khả năng lưu trữ chocác thiết bị này

c) Những chức năng MIDP cung cấp

Trang 19

 Các lớp và kiểu dữ liệu: Phần lớn các lớp mà các lập trình viên Java quen thuộcvẫn còn được giữ lại ví dụ như các lớp trong gói java.util như Stack, Vector vàHastable cũng như Enumeration.

 Hỗ trợ đối tượng Display: Đúng như tên gọi một chương trình MIDP sẽ hỗ trợ duynhấ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ànhình điện thoại

 Hỗ trợ Form và các giao diện người dùng

 Hỗ trợ Timer và Alert

 Cung cấp tính năng Record Management System (RMS) cho việc lưu trữ dữ liệu

Ngoài ra vào tháng 11 năm 2003 Sun đã tung ra MIDP 2.0 với hàng loạt tính năng khácđược cung cấp thêm so với bản 1.0 Những cải tiến nổi bật so với MIDP 1.0

 Nâng cấp các tính năng bảo mật như

o Download qua mạng an toàn hơn qua việc hỗ trợ giao thức HTTPS

o Kiểm soát việc kết nối giữa máy di động và server: ví dụ như các chương trìnhkhông thể kết nối tới server nếu thiếu sự chấp thuận của người sử dụng

 Thêm các API hỗ trợ Multimedia Một trong nhưng cải tiến hấp dẫn nhất của MIDP 2.0

là tập các API media của nó Các API này là một tập con chỉ hỗ trợ âm thanh củaMobile 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 APIjavax.microedition.lcdui trong MIDP 2.0, nhưng các thay đổi lớn nhất (ngoài APIcho game) là trong Form và Item

 Hỗ trợ các lập trình viên Game bằng cách tung ra Game API: Có lẽ Sun đã kịp nhận rathị trường đầy tiềm năng của các thiết bị di động trong lĩnh vực Game Với MIDP 1.0thì các lập trình viên phải tự mình viết code để quản lý các hành động của nhân vậtcũng như quản lý đồ họa Việc này sẽ làm tăng kích thước file của sản phẩm cũngnhư việc xuất hiện các đoạn mã bị lỗi Được hưởng lợi nhất từ Game API trong MIDP2.0 không chỉ là các lập trình viên Game mà còn là các lập trình viên cần sử dụngcác tính năng đồ họa cao cấp Ý tưởng cơ bản của Game API là việc giả định rằngmột màn hình game là tập hợp các layer (lớp) Ví dụ như: trong một game đua xe thìmàn hình nền là một layer, con đường là một layer và chiếc xe được xem nhưđang nằm trên layer khác Với Game API nhà phát triển còn được cung cấp các tínhnăng như quản lý các thao tác bàn phím

 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àviệc biểu diễn hình ảnh dưới dạng các mảng số nguyên, cho phép MIDlet thao tác với

dữ liệu hình ảnh một cách trực tiếp

II.4.2 MIDLet

MIDP (Mobile Information Device Profile) là tập các hàm API dành cho thiết bị thông tin di

động MIDlet là ứng dụng MIDP Thuật ngữ MIDlet và MID application được sử dụng như nhau.Các MIDlets hình thành nên các khối xây dựng của môi trường thực thi Java 2 Platform MicroEdition (J2ME)

Trang 20

MIDlet được thiết kế để chạy và được điều khiển bởi trình quản lý ứng dụng trong máy ảo K

(K Virtual Machine - KVM), một dạng đơn giản nhất của máy ảo Java được thiết kế để chạy trên thiết bị di động Lớp javax.microedition.midlet.MIDlet hoạt động như là một giao diện (interface)

giữa MIDlet và trình quản lý ứng dụng Các phương thức thuộc lớp này cho phép trình quản lýứng dụng tạo, bắt đầu, tạm dừng, và hủy MIDlet

Hình 1 Hình biểu diễn MIDlet

Thông báo import dùng để truy xuất các lớp của CLDC và MIDP Lớp chính của ứng dụngđược định nghĩa là lớp kế thừa lớp MIDlet của MIDP Có thể chỉ có một lớp trong ứng dụng kếthừa lớp này Lớp MIDlet được trình quản lý ứng dụng trên điện thoại di động dùng để khởi động,dừng, và tạm dừng MIDlet Ví dụ, trong trường hợp có cuộc gọi đến

II.4.3 Bộ khung của MIDlet (MIDlet Skeleton)

Một MIDlet là một lớp Java kế thừa (extend) của lớp trừu tượngjava.microedition.midlet.MIDlet và thực thi (implement) các phương thức startApp(), pauseApp(),

Trang 21

Hàm tạo chỉ được thực thi một lần khi MIDlet được khởi tạo lần đầu tiên Hàm tạo sẽ khôngđược gọi lại trừ phi MIDlet thoát và sau đó khởi động lại.

(4) 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, và mỗikhi MIDlet trở về từ trạng thái tạm dừng Nói chung, các biến toàn cục sẽ được khởi tạo lại trừhàm tạo bởi vì các biến đã được giải phóng trong hàm pauseApp() Nếu không thì chúng sẽ khôngđược khởi tạo lại bởi ứng dụng

(5) 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ạmdừng (ví dụ, trong trường hợp có cuộc gọi hoặc tin nhắn đến) Cách thích hợp để sử dụngpauseApp() là giải phóng tài nguyên và các biến để dành cho các chức năng khác trong điện thoạitrong khi MIDlet được tạm dừng Cần chú ý rằng khi nhận cuộc gọi đến hệ điều hành trên điệnthoại di động có thể dừng KVM thay vì dừng MIDlet Việc này không được đề cập trong MIDP

mà đó là do nhà sản xuất quyết định sẽ chọn cách nào

(6) destroyApp():

Phương thức destroyApp() được gọi khi thoát MIDlet Ví dụ khi nhấn nút exit trong ứngdụng Nó chỉ đơn thuần là thoát MIDlet Nó không thật sự xóa ứng dụng khỏi điện thoại di động.Phương thức destroyApp() chỉ nhận một tham số Boolean Nếu tham số này là true, MIDlet đượctắt vô điều kiện Nếu tham số là false, MIDlet có thêm tùy chọn từ chối thoát bằng cách ném ramột ngoại lệ MIDletStateChangeException

II.4.4 Vòng đời của MIDlet (gMIDlet lifecycle)

Lớp chính của một MIDlet kế thừa là lớp javax.microedition.midlet.MIDlet Lớp chính nàyđịnh nghĩa ba phương thức hành động trong chu kỳ sống của nó: startApp(), pauseApp(), vàdestroyApp()

Có ba trạng thái trong vòng đời của một MIDlet:

paused: MIDlet instance đã được tạo xong và chưa hoạt động (inactive)

active: MIDlet đang hoạt động

destroyed: MIDlet đã kết thúc và sẵn sàng cho việc tái chế bởi bộ thu gom rác

Chú ý ở đây không có trạng thái nào tương đương với trạng thái loaded của applet, bởi vì ở

đây không có phương thức khởi tạo Thông thường, một MIDlet khởi tạo chính nó ngay lần đầutiên khi phương thức startApp() được gọi

Trang 22

Hình 3 Hình biểu diễn các trạng thái của MIDlet

Khi người dùng yêu cầu khởi động ứng dụng MIDlet, bộ quản lý ứng dụng sẽ thực thiMIDlet (thông qua lớp MIDlet) Khi ứng dụng thực thi, nó sẽ được xem là đang ở trạng thái tạmdừng Bộ quản lý ứng dụng gọi hàm tạo và hàm startApp() Hàm startApp() có thể được gọi nhiềulần trong suốt chu kỳ sống của ứng dụng Hàm destroyApp() chỉ có thể gọi từ trạng thái hoạt độnghay tạm dừng

Lập trình viên cũng có thể điều khiển trạng thái của MIDlet Các phương thức dùng để điềukhiển các trạng thái của MIDlet:

resumeRequest(): Yêu cầu vào chế độ hoạt động Ví dụ: Khi MIDlet tạm dừng, và một sự

kiện timer xuất hiện

notifyPaused(): Cho biết MIDlet tự nguyện chuyển sang trạng thái tạm dừng

Ví dụ: Khi đợi một sự kiện timer

notifyDestroyed(): Sẵn sàng để hủy Ví dụ: Xử lý nút nhấn Exit

Lập trình viên có thể yêu cầu tạm dừng MIDlet trong khi đợi một sự kiện timer hết hạn

Trong trường hợp này, phương thức notifyPaused() sẽ được dùng để yêu cầu bộ quản lý ứng dụng

chuyển ứng dụng sang trạng thái tạm dừng

II.4.5 Tập tin JAR

Các lớp đã biên dịch của ứng dụng MIDlet được đóng gói trong một tập tin JAR (JavaArchive File) Đây chính là tập tin JAR được download xuống điện thoại di động

Tập tin JAR chứa tất cả các tập tin class từ một hay nhiều MIDlet, cũng như các tài nguyêncần thiết Hiện tại, MIDP chỉ hỗ trợ định dạng hình png (Portable Network Graphics) Tập tinJAR cũng chứa tập tin kê khai (manifest file) mô tả nội dung của MIDlet cho bộ quản lý ứng dụng

Trang 23

Nó cũng phải chứa các tập tin dữ liệu mà MIDlet cần Tập tin JAR là toàn bộ ứng dụng MIDlet.MIDlet có thể load và triệu gọi các phương thức từ bất kỳ lớp nào trong tập tin JAR, trong MIDP,hay CLDC Nó không thể truy xuất các lớp không phải là bộ phận của tập tin JAR hay vùng dùngchung của thiết bị di động.

Mô tả nội dung của tập tin JAR:

Các trường yêu cầu:

Manifest-Version // Phiên bản tập tin Manifest

MIDlet-Name // Tên bộ MIDlet (MIDlet suite)

MIDlet-Version // Phiên bản bộ MIDlet

MIDlet-Vendor // Nhà sản xuất MIDlet

MIDlet-<n> for each MIDlet // Tên của MIDlet

MicroEdtion-Profile // Phiên bản hiện trạng

MicroEdtion-Configuration // Phiên bản cấu hình

Tập tin kê khai (manifest) và tập tin JAD

Tập tin kê khai (manifest.mf) và tập tin JAD (Java Application Descriptor) mô tả các đặcđiểm của MIDlet Sự khác biệt của hai tập tin này là tập tin kê khai là một phần của tập tin JARcòn tập tin JAD không thuộc tập tin JAR Ưu điểm của tập tin JAD là các đặc điểm của MIDlet cóthể được xác định trước khi download tập tin JAR Nói chung, cần ít thời gian để download mộttập tin văn bản nhỏ hơn là download một tập tin JAR Như vậy, nếu người dùng muốn downloadmột ứng dụng không được thiết bị di động hỗ trợ (ví dụ, MIDP 2.0), thì quá trình download sẽ bịhủy bỏ thay vì phải đợi download hết toàn bộ tập tin JAR

Ví dụ một tập tin manifest.mf:

MIDlet-Name: CardGames

MIDlet-Version: 1.0.0

MIDlet-Vendor: Sony Ericsson

MIDlet-Description: Set of Card Games

MIDlet-1: Solitaire, /Sol.png, com.semc.Solitaire

MIDlet-2: BlackJack, /Blkjk.png, com.semc.BlackJack

Tập tin JAD chứa cùng thông tin như tập tin manifest Nhưng nó nằm ngoài tập tin JAR

Trang 24

Các thuộc tính MIDlet-Name, MIDlet-Version, và MIDlet-Vendor phải được lặp lại trong

tập tin JAD và JAR Các thuộc tính khác không cần phải lặp lại Giá trị trong tập tin mô tả sẽ đègiá trị của tập tin manifest

II.4.6 Bộ MIDlet (MIDlet Suite)

Một tập các MIDlet trong cùng một tập tin JAR được gọi là một bộ MIDlet (MIDlet suite).Các MIDlet trong một bộ MIDlet chia sẻ các lớp, các hình ảnh, và dữ liệu lưu trữ bền vững Đểcập nhật một MIDlet, toàn bộ tập tin JAR phải được cập nhật

Hình 4 Hình biểu diễn hai bộ MIDlet

Trong hình trên, một bộ MIDlet chứa MIDlet1, MIDlet2, và MIDlet3 Bộ kia chỉ chứaMIDlet4 Ba MIDlet trong bộ đầu tiên truy xuất các lớp và dữ liệu của nhau nhưng không truyxuất đến các lớp hay dữ liệu của MIDlet4 Ngược lại, MIDlet4 cũng không truy xuất được các lớp,hình ảnh, và dữ liệu của chúng

II.5 Môi trường phát triển J2ME

II.5.1 Phát triển ứng dụng J2ME với J2ME Wireless Toolkit

Có nhiều môi trường phát triển ứng dụng J2ME và mỗi hãng điện thoại cũng đưa

ra những môi trường phát triển cho riêng mình Ở đây tôi sẽ giới thiệu toolkit của Sun:J2ME Wireless Toolkit

Địa chỉ download chương trình: http://java.sun.com/j2me/download.html Ngoài ra bạncần phải có J2SDK 1.4 trở lên

Cài đặt Wireless tool Kit 2.5.1

- Wireless toolkit là công cụ cho phép chúng ta biên dịch và chạy những ứng dụng điệnthoại trên điện thoại ảo có thể download tạihttp://java.sun.com/products/sjwtoolkit/download-

2_5_1.html

Trang 25

- Chạy file sun_java_wireless_toolkit-2_5_1-windows.exe để cài đặt chương trình Sau khicài đặt thành công, bạn sẽ có thư mục chương trình trong menu Start như hình bên dưới

Để chạy chương trình chúng ta chọn wireless Toolkit 2.5.1 Bạn sẽ thấy cửa sổ hiện ra nhưhình bên dưới

Chương trình Hello đầu tiên

- Chúng ta click chuột vào New project và nhấp vào Project và Class bạn muốn tạo vidu:TestMidlet và không nhất thiết tên Class trùng với tên Project

- Từ Target Platform chọn Custom Ví dụ chúng ta muốn ứng dụng thích hợp với điệnthoại N70 cho nên trong group MIDP 2.0 và CLDC 1.1, chúng ta có thể tra cứu flatform tại đâyhttp://www.forum.nokia.com/devices/matrix_s60_1.html

Trang 26

ToolKit sẽ tự động tạo 1 thư mục con trong thư mục apps có tên trùng với tên Project màbạn vừa tạo, trong trường hợp này là TestMidlet.

Trang 27

Các thư mục trong dự án:

- Bin: Chứa 2 file để cài đặt, Jar ( Java ARchive) và file miêu tả jad

- Lib: Chứa các thư viện bổ sung mà bạn muốn thêm vào chương trình

- Res: là thư mục để bạn để các file tài nguyên dành riêng cho chương trình như file vănbản và hình ảnh

- Src: Đây là thư mục quan trọng nhất, là nơi bạn đặt các file chứa mã nguồn

Bây giờ chúng ta dùng chương trình soãn thảo văn bản nào đó và viết:

mMainForm.append(new StringItem(null, "Chao cac ban, MIDP!")); mMainForm.addCommand(new Command("Exit", Command.EXIT, 0));

mMainForm.setCommandListener(this);

} public void startApp() { Display.getDisplay(this).setCurrent(mMainForm);

} public void pauseApp() {}

public void destroyApp(boolean unconditional) {}

public void commandAction(Command c, Displayable s) {

Trang 28

notifyDestroyed();

} }

- Sau đó, hãy lưu đoạn code trên vào file tên là TestMidlet.java trong thư mục src

- Bấm vào nút Build, nếu code của bạn không bị lỗi, bạn sẽ nhận được thông báo sau:Project settings saved; Building "TestMidlet"; Build complete

- Nhấn nút Run để chạy Emulator

- Nếu bạn thấy trên máy bạn xuất hiện hình như hình bên dưới thì xin chúc mừng bạn.Chương trình J2ME đầu tiên đã chạy thành công

Trang 29

II.5.2 Phát triển ứng dụng J2ME với Netbean

Import Wireless toolkit project sang Netbeans

- Trước tiên ta cần phải có module Netbeans_mobility 5.5.1 đề gắn vào Netbeans 5.5.1, bạn cóthể download tại đâyhttp://dlc.sun.com/netbeans/download/5_ 704122300/

- Chạy file netbeans_mobility-5_5_1-windows_2.exe để cài đặt

- Đây là dao diện khi khởi động Netbeans

- Bước 1: Chọn File -> New Project

- Bước 2: trong Categories chọn Mobile và trong Projects chọn Import Wireless Toolkit Project,sau đó chọn Next

- Bước 3: Browse tới thư mục C:\WTK2.5.1\apps (nơi cài đặt Wireless Toolkit) chọn TestMidlet

sau đó chọn Open -> Next.

Trang 30

- Bước 4: Đặt tên Project và cấu hình như hình dưới đây, sau đó nhấn Next.

- Bước 5: cấu hình như hình dưới Device Configuration và Device Profile chương trinh sẽ tự

Trang 31

động chọn tương ứng với Midlet và CLDC bên Project của Wireless Toolkit, tuy nhiên chúng ta

có thể chọn theo mục đích riêng của mình mà không làm ảnh hường tới Project nguồn bênWireless Toolkit vì Netbeans sẽ tự đông copy Project nguồn sang dạng Project của Netbeanssau mỗi lần biên dịch Người lập trình có thể edit code trên Project nguồn hay Project của

Netbeans tùy ý Cuối cùng là chọn Finish

- Để build chương trình chúng ta có thể vào Build -> Build Main Project và Run -> Run MainProject để chạy chương trình

III Các thành phần giao diện ở mức cao của ứng dụng MIDP III.1 Đối tượng Display, Displayable và Screens

Một ứng dụng MIDlet chỉ có 1 đối tượng thể hiện Display Đối tượng này dùng để

lấy thông tin về đối tượng trình bày, ví dụ màu được hỗ trợ, và bao gồm các phương

thức để yêu cầu các đối tượng được trình bày Đối tượng Display cần thiết cho bộ

quản lý việc trình bày trên thiết bị điều khiển thành phần nào sẽ được hiển thị lên trênthiết bị

Mặc dù chỉ có một đối tượng Display ứng với mỗi MIDlet, nhưng nhiều đối

tượng trong một MIDlet có thể được hiển thị ra trên thiết bị như Forms, TextBoxes, ChoiceGroups,

Một đối tượng Displayable là một thành phần được hiển thị trên một thiết bị MIDP chứa 2 lớp con của lớp Displayable là Screen và Canvas Hình dưới đây mô tả mối

quan hệ trên

Một đối tượng Screen không phải là một cái gì đó hiện ra trên thiết bị, mà lớp Screen

Trang 32

này sẽ được thừa kế bởi các thành phần hiển thị ở mức cao, chính các thành phần này

sẽ được hiển thị ra trên màn hình Hình dưới đây sẽ mô tả mối quan hệ của lớp Screen

và các thành phần thể hiện ở mức cao

Tóm lại, phần này chỉ giới thiệu hệ thống phân cấp đối tượng dùng để thể hiện giaodiện người dùng trong MIDP

III.2 Thành phần Form và Items

Trong phần này sẽ giới thiệu các thành phần được hiển thị ra trên một Form Một Form chỉ đơn giản là một khung chứa các thành phần, mà mỗi thành phần được thừa kế

từ lớp Item Chúng ta sẽ xem qua các thành phần hiển thị trên thiết bị trên:

Trang 33

Thành phần DateField cung cấp một phương tiện trực quan để thao tác đối tượng

Date được định nghĩa trong java.util.Date Khi tạo một đối tượng DateField, bạn cần chỉ

rõ là người dùng chỉ có thể chỉnh sửa ngày, chỉnh sửa giờ hay đồng thời cả hai Cácphương thức dựng của lớp DateField gồm:

D ateField(String label, int m ode)

D ateField(String label, int m ode, Tim eZone tim eZone)

Các mode tương ứng của lớp DateField gồm:

D ateField.D A TE_TIM E: cho phép thay đổi ngày giờ

D ateField.TIM E: chỉ cho phép thay đổi giờ

D ateField.D A TE: chỉ cho phép thay đổi ngày

Ví dụ:

private DateField dfAlarm;

// T ạ o m ột đổi tượ ng DateField v ớ i nhãn, cho phép thay

implements ItemStateListener, CommandListener {

object private Form fmMain; // Main form private Command cmExit; // Exit MIDlet private DateField dfAlarm; // DateField component public DateFieldTest()

{ display = Display.getDisplay(this);

// The main form fmMain = new Form("DateField Test");

// DateField with todays date as a default dfAlarm = new DateField("Set Alarm Time", DateField.DATE_TIME);

Trang 34

} public void startApp () {

display.setCurrent(fmMain);

} public void pauseApp() { }

public void destroyApp(boolean unconditional) { }

public void itemStateChanged(Item item) {

System.out.println("Date field changed.");

} public void commandAction(Command c, Displayable s) {

if (c == cmExit) {

destroyApp(false);

notifyDestroyed();

} } } b) Gauge

Một thành phần Gauge là một kiểu giao diện thường được dùng để mô tả mức độ hoàn thành một công việc Có 2 loại Gauge là loại tương tác và loại không tương tác Loại đầu cho phép người dùng có thể thay đổi Gauge, loại 2 thì đòi hỏi người phát triển phải cập nhật Gauge

Dười đây là hàm dựng của lớp Gauge:

G auge(String label, boolean interactive, int maxValue, int initialValue)

Ví dụ:

private Gauge gaVolume; // Đ i u

ch ỉ n h âm lượ ng gaVolume = new Gauge("Sound Level", true, 100, 4);

Dưới đây là đoạn chương trình mẫu minh họa cách sử dụng lớp Gauge

private Command cmExit; // Exit the form private Gauge gaVolume; // Volume adjustment

Trang 35

public InteractiveGauge() {

display = Display.getDisplay(this);

// Create the gauge and exit command gaVolume = new Gauge("Sound Level", true, 50, 4);

cmExit = new Command("Exit", Command.EXIT, 1);

// Create form, add commands, listen for events fmMain = new Form(""); fmMain.addCommand(cmExit);

fmMain.append(gaVolume); fmMain.setCommandListener(this);

} // Called by application manager to start the MIDlet.

public void startApp() {

display.setCurrent(fmMain);

} public void pauseApp() { }

public void destroyApp(boolean unconditional) { }

public void commandAction(Command c, Displayable s) {

if (c == cmExit) {

destroyApp(false);

notifyDestroyed();

} } } c) StringItem

Một thành phần StringItem được dùng để hiển thị một nhãn hay chuỗi văn bản.

Người dùng không thể thay đổi nhãn hay chuỗi văn bản khi chương trình đang chạy.StringItem không nhận ra sự kiện

Phương thức dựng của lớp StringItem

StringItem(String label, String text)

Dưới đây là đoạn mã minh họa việc sử dụng đối tượng StringItem

private Display display; // Reference to

Display object private Form fmMain; //

Trang 36

Main form

private StringItem siMsg; // StringItem

private Command cmChange; // Change the

label and message private Command cmExit; // Exit

the MIDlet

public StringItemTest()

{

display = Display.getDisplay(this );

// Create text message and commands

siMsg = new StringItem("Website: ", "www.IBM.com");

cmChange = new Command("Change", Command.SCREEN, 1);

cmExit = new Command("Exit", Command.EXIT, 1);

// Create Form, add Command and StringItem, listen for events fmMain = new Form("StringItem

// Called by application manager to start the MIDlet.

public void startApp()

// Change text siMsg.setText("developerWor ks");

Trang 37

// Remove the command fmMain.removeCommand(cmChange);

tự nhập vào sẽ được che bởi các ký tự mặt nạ

Phương thức dựng của lớp TextField

TextField(String label, String text, int maxSize, int constraints)

Thành phần thứ 3 constraints là thành phần mà chúng ta quan tâm, vì nó là phương tiện để xác định loại dữ liệu nào được phép nhập vào TextField

MIDP định nghĩa các tham số ràng buộc sau cho thành phần TextField:

ANY: cho phép nhập bất kỳ ký tự nào

EMAILADDR: chỉ cho phép nhâp vào các địa chỉ email hợp lệ

NUMERIC: chỉ cho phép nhập số

PHONENUMBER: Chỉ cho phép nhập số điện thoại

URL: Chỉ cho phép nhập các ký tự hợp lệ bên trong URL

PASSWORD: che tất cả các ký tự nhập vào

Dưới đây là đoạn mã minh họa việc sử dụng thành phần TextField

private Display display; // Reference

to Display object private Form fmMain;// Main

form

private Command cmTest; // Get

contents of textfield private Command cmExit;

// Command to exit the MIDlet private TextField tfText; // Textfield

Trang 38

cmExit = new Command("Exit", Command.EXIT, 1);

// Textfield for phone number

tfText = new TextField("Phone:", "", 10, TextField.PHONENUMBER);

// Create Form, add Commands and textfield, listen for events fmMain = new Form("Phone Number");

// Called by application manager to start the MIDlet.

public void startApp()

Thành phần ChoiceGroup cho phép người dùng chọn từ một danh sách đầu vào

đã được định nghĩa trước ChoiceGroup có 2 loại:

multi-selection(cho phép chọn nhiều mục): nhóm này có liên quan đến các

Trang 39

exclusive-selection(chỉ được chọn một mục): nhóm này liên quan đến nhóm

các radio buttonDưới đây là đoạn mã minh họa cho việc sử dụng ChoiceGroup:

import javax.microedition.midlet.*;

import javax.microedition.lcdui.*;

public class ChoiceGroupTest extends MIDlet implements ItemStateListener, CommandListener {

private Display display; // Reference to display object private Form fmMain; //

Main form private Command cmExit; // A Command to exit the MIDlet private Command cmView; // View the choice selected private int selectAllIndex;

// Index of the "Select All" option private ChoiceGroup cgPrefs; // Choice Group of preferences

private int choiceGroupIndex; // Index of

choice group on form public ChoiceGroupTest() {

cgPrefs.append("Save bookmarks", null);

cgPrefs.append("Detect file type", null); selectAllIndex =

cgPrefs.append("Select All", null);

cmExit = new Command("Exit", Command.EXIT, 1);

cmView = new Command("View", Command.SCREEN,2);

// Create Form, add components, listen for events fmMain = new Form("");

choiceGroupIndex = fmMain.append(cgPrefs);

Trang 40

{ display.setCurrent(fmMain);

boolean selected[] = new boolean[cgPrefs.size()];

// Fill array indicating whether each element is checked

cgPrefs.getSelectedFlags(selected);

for (int i = 0; i <

cgPrefs.size(); i++) System.out.println(cgPrefs.getSt ring(i) +

(selected[i] ? ": selected" : ": not selected"));

} else if (c == cmExit) {

destroyApp(false);

notifyDestroyed();

} }

public void itemStateChanged(Item item) {

if (item == cgPrefs) {

// Is "Select all" option checked ?

if (cgPrefs.isSelected(selectAllIndex)) {

// Set all checkboxes to true for (int i = 0; i < cgPrefs.size(); i++) cgPrefs.setSelectedIndex(i, true);

// Remove the check by "Select All"

cgPrefs.setSelectedIndex(selectAllIndex, false);

} }

}

Ngày đăng: 14/03/2014, 19:39

HÌNH ẢNH LIÊN QUAN

Bảng dưới là sự so sánh các thông số kỹ thuật của CDC và CLDC - Giáo Trình Lập Trình Mobile
Bảng d ưới là sự so sánh các thông số kỹ thuật của CDC và CLDC (Trang 17)
Hình 1. Hình biểu diễn MIDlet - Giáo Trình Lập Trình Mobile
Hình 1. Hình biểu diễn MIDlet (Trang 20)
Hình 2. Hình  biểu diễn bộ khung yêu cầu tối thiểu cho một ứng dụng MIDlet - Giáo Trình Lập Trình Mobile
Hình 2. Hình biểu diễn bộ khung yêu cầu tối thiểu cho một ứng dụng MIDlet (Trang 20)
Hình 3. Hình biểu diễn các trạng thái của MIDlet - Giáo Trình Lập Trình Mobile
Hình 3. Hình biểu diễn các trạng thái của MIDlet (Trang 22)
Hình 4. Hình  biểu diễn hai bộ MIDlet - Giáo Trình Lập Trình Mobile
Hình 4. Hình biểu diễn hai bộ MIDlet (Trang 24)
Hình dưới đây mô tả kết quả của hàm trên - Giáo Trình Lập Trình Mobile
Hình d ưới đây mô tả kết quả của hàm trên (Trang 68)
Hình vẽ ta dễ dàng nhận thấy GCF hỗ trợ kết nối dạng datagram(packet) và stream. Class  Connector được dùng để mở kết nối đến một tài nguyên nào đó thông qua phương thức open được khai báo như sau: - Giáo Trình Lập Trình Mobile
Hình v ẽ ta dễ dàng nhận thấy GCF hỗ trợ kết nối dạng datagram(packet) và stream. Class Connector được dùng để mở kết nối đến một tài nguyên nào đó thông qua phương thức open được khai báo như sau: (Trang 137)
Bảng 1: Tổng số class và interface trong CLDC - Giáo Trình Lập Trình Mobile
Bảng 1 Tổng số class và interface trong CLDC (Trang 158)

TỪ KHÓA LIÊN QUAN

w