Upload
khangminh22
View
0
Download
0
Embed Size (px)
Citation preview
Trung tâm Đào tạo E-learning Cơ hội học tập cho mọi người
Lập trình thiết bị di động - Bài 1 Trang 1
BBÀÀII 11:: GGIIỚỚII TTHHIIỆỆUU VVỀỀ LLẬẬPP TTRRÌÌNNHH
TTRRÊÊNN TTHHIIẾẾTT BBỊỊ DDII ĐĐỘỘNNGG Mục tiêu:
Trong bài này, Anh/Chị cần đạt được những mục tiêu sau:
1. Cung cấp các vấn đề tổng quan về công nghệ di động và ứng dụng. Đặc biệt
là công nghệ điện thoại di động.
2. Giới thiệu một số công nghệ lập trình ứng dụng trên điện thoại di động.
Nội dung:
1.1. Công nghệ mobile và ứng dụng
1.1.1. Lịch sử phát triển công nghệ mobile
Ngày nay, với sự phát triển mạnh mẽ của công nghệ sản xuất phần cứng đã
cho ra đời rất nhiều loại thiết bị tính toán trợ giúp con người trong mọi lĩnh vực
cuộc sống. Các thiết bị đó ngày càng thông minh, mềm dẻo và linh hoạt hơn nhờ
được chương trình hóa các quá trình điều khiển thông qua việc lập trình. Chúng ta
có thể thấy việc ứng dụng lập trình trên các thiết bị rất đa dạng, đi từ các thiết bị
thông dụng dùng trong gia đình như lò vi sóng, t ủ lạnh, nồi cơm điện... cho đến các
thiết bị tối tân như các rô-bốt thám hiểm sao hỏa. Trong đó, phải kể đến các điện
thoại di động là loại thiết bị có tốc độ phát triển chóng mặt.
Trong những năm c uố i thế kỷ 20 và đầu t hế kỷ 21, nhiều dò ng s ản
phẩm điện t hoại di động c ủa nhiều hãng đã đ ược ra đời . Có t hể kể đến
như hãng No kia, Motorola, So ny, Sams ung, Apple, RIM, LG, Google.. .
đây là sự bùng nổ về t hị trường c ủa điện t ho ại di động, và đ ặc biệ t hiệ n
nay l à điện t hoại thô ng minh (smartphone). Điều này có được là nhờ s ự
tiện ích và khả năng trợ gi úp con người trong công việc, giải trí của điện
thoại di động là rất lớn.
Sau đây là hình vẽ cho thấy sự phát triển về số lượng của điện thoại qua
các năm.
Trung tâm Đào tạo E-learning Cơ hội học tập cho mọi người
Lập trình thiết bị di động - Bài 1 Trang 2
Trong đó: Subscriber Number là số thiết bị điện thoại được đăng ký theo đơn
vị triệu chiếc (million), Net increase là sự gia tăng của mạng và Penetration Rate là
tỷ lệ thâm nhập thị trường.
Cho đến nay, có thể chia làm ba giai đoạn phát triển của điện thoại di động
tương ứng 3 thế hệ như sau :
Thế hệ thứ nhất (1st generation): là các điện thoại di động chỉ đơn giản để
nghe, gọi và nhắn tin. Thế hệ này bị hạn chế rất lớn về các khả năng đáp ứng,
chỉ dùng với mạng tín hiệu tương tự và chưa có được sự "thông minh" theo
một nghĩa nào đó. Thế hệ này là của những năm 1990.
Thế hệ thứ hai (2nd generation): là các điện thoại di động có thêm một vài
tính năng đa phương tiện như chụp ảnh, nghe nhạc và có thể dùng với mạng
tín hiệu số. Đây là thế hệ của những năm sau 2000.
Thế hệ thứ ba (3rd generation): là dòng điện thoại di động thông minh hiện
nay, đáp ứng được các khả năng tính toán và ứng dụng như một máy tính,
kết nối mạng internet và sử dụng được với mạng tốc độ cao.
Sau đây là hình ảnh của một số điện thoại di động theo từng giai đoạn
phát triển.
Trung tâm Đào tạo E-learning Cơ hội học tập cho mọi người
Lập trình thiết bị di động - Bài 1 Trang 3
Hiện nay, xu thế của điện thoại thông minh đang chiếm thị phần lớn với các
đặc điểm có thể gồm:
Có hệ điều hành ở dạng mở
Các đặc tính kỹ thuật được cung cấp cho bên thứ 3
Môi trường phát triển ứng dụng rộng rãi
Các khả năng đáp ứng lớn của mạng di động
Có nhiều nhà phát triển như Apple (iOS), Google (Android), RIM
(BlackBerry), Nokia (Symbian), Microsoft (Windows Phone) và Linux.
Sau đây là hình vẽ cho thấy sự dịch chuyển của thị trường điện thoại thường
sang các thiết bị điện thoại thông minh.
1.1.2. Tiềm năng ứng dụng công nghệ mobile
Có thể thấy điện thoại thông minh hiện đang tiệm cận đến khả năng tính toán
và xử lý của máy tính, bên cạnh đó là môi trường điện toán đám mây được phát
triển tạo cơ hội cho sự lớn mạnh về ứng dụng của điện thoại thông minh. Cùng với
Trung tâm Đào tạo E-learning Cơ hội học tập cho mọi người
Lập trình thiết bị di động - Bài 1 Trang 4
sự phát triển của thiết bị phần cứng, khả năng đáp ứng cho người dùng của các sản
phẩm phần mềm cũng ngày càng đa dạng. Hiện nay, trên thị trường ứng dụng phần
mềm có rất nhiều sản phẩm ở nhiều lĩnh vực khác nhau, từ giải trí cho đến chăm sóc
sức khỏe, giám sát và điều khiển từ xa các thiết bị ...
Ở thế hệ đầu, công nghệ di động (mobile technology) được phát triển với 4
mục đích chính đó là:
Kết nối mọi người (connecting people),
Chia sẽ thông tin (information sharing),
Truy cập mạng (internet access),
Giải trí (entertainment).
Đến nay, đặc biệt đối với thế hệ di động thứ 3 (smartphone), khả năng đáp
ứng cho người dùng rất lớn nên phạm vi ứng dụng được mở rộng, trợ giúp con
người trong nhiều công việc ở nhiều lĩnh vực của đời sống. Có thể liệt kê một số
lĩnh vực ứng dụng của smartphone :
Giải trí: trò chơi, nghe nhạc, xem phim,...
Y tế: hướng dẫn chăm sóc sức khỏe, hỗ trợ theo dõi bệnh lý, kiểm soát phác
đồ điều trị, hỗ trợ thăm khám bước đầu,...
Giáo dục: theo dõi hoạt động của trẻ em, hỗ trợ học tập và đào tạo, tạo kết
nối - tương tác giữa nhà trường, gia đình, xã hội...
Giao thông: phát hiện các phương tiện đề phòng va chạm, theo dõi & kiểm
soát lưu thông, hỗ trợ theo dõi và ghi nhận hành trình...
Và rất nhiều lĩnh vực khác, hứa hẹn là điện thoại di động thông minh ngày
càng giúp con người tăng hiệu quả công việc, năng suất lao động thúc đẩy sự
phát triển của xã hội.
Hiện nay, chúng ta thấy năng lực tính toán của các điện thoại thông minh
được tăng cường rất mạnh có thể nói gần như tiệm cận đến các máy tính. Bên cạnh
đó, hệ thống hạ tầng mạng cùng với dịch vụ điện toán đám mây ngày càng phát
triển, các thiết bị di động sẽ được tích hợp để khai thác những dịch vụ này nhằm
đưa đến cho người dùng các ứng dụng lớn, đòi hỏi khả năng lưu trữ dữ liệu và tính
toán lớn. Như vậy, phạm vi ứng dụng của các điện thoại thông minh một lần nữa được nhân rộng ra lớn hơn nhiều.
Để thực hiện những mục đích trên chúng ta có thể minh họa sự kết nối, chia sẽ
thông tin trên mạng internet qua sơ đồ sau:
Trung tâm Đào tạo E-learning Cơ hội học tập cho mọi người
Lập trình thiết bị di động - Bài 1 Trang 5
Các công nghệ mạng kết nối và chia sẽ thông tin trên các thiết bị di động hiện
nay có thể liệt kê như sau:
GSM, GPRS, EDGE,
1G, 2G, 2.5G, 2.75G, 3G và 4G,
IEEE802.11,
InfraRed và Bluetooth,...
Công nghệ GSM (Global System for Mobile Communication) là một trong
những hệ thống truyền dẫn số theo vùng. EDGE cũng tương tự như công nghệ
GSM nhưng được tăng cường về tốc độ truyền tải dữ liệu. GPRS (General
Packet Radio Service) là một chuẩn trao đổi dữ liệu cho các thiết bị không dây
với tốc độ vừa phải.
Hiện nay các mạng tốc độ cao sử dụng thế hệ 3G và 4G được phát triển từ các
thế hệ trước đó (1G, 2G, 2.5G và 2.75G). Có hai phiên bản của thế hệ 3G, UMTS
được sử dụng chủ yếu ở Châu Âu, còn phiên bản CDMA-2000 được phát triển ở
Bắc Mỹ và một số vùng Châu Á. Thế hệ này đạt tốc độ cho phép hội nghị truyền
hình, xem tivi,... Thế hệ 4G là sự kết hợp các công nghệ mạng không dây dựa trên
3G song đạt được tốc độ cao hơn nhiều lần.
IEEE802.11 là một chuẩn cho kết nối mạng cục bộ không dây, có các
phiên bản 802.11a, 802.11b và 802.11g, đ ạt tốc độ truyền dữ liệu 54Mbps.
Công nghệ này được sử dụng cho các thiế t bị cá nhân cầm tay (PDA), máy
tính xác tay (Notebook) ho ặc thậm chí các máy tính để bàn (PC) và điện thoại
thông minh kế t nối được với nhau.
Trung tâm Đào tạo E-learning Cơ hội học tập cho mọi người
Lập trình thiết bị di động - Bài 1 Trang 6
InfraRed là một công nghệ cho phép trao đổi dữ liệu qua cổng hồng ngoại, với
khoảng cách gần, thường sử dụng cho các thiết bị điều khiển từ xa, tốc độ dữ liệu
khoảng 10 Kbps, đòi hỏi không có vật cản giữa hai thiết bị khi thực hiện kết nối.
Bluetooth là công nghệ chủ yếu được sử dụng cho các tai nghe không dây,
điện thoại di động,... Khoảng cách cho phép tối đa giữa hai thiết bị kết nối là 10 mét,
tốc độ dữ liệu khoảng 1Mbps.
Hình vẽ sau cho thấy khả năng kết nối người dùng của điện thoại di động dựa
trên các công nghệ.
Bên cạnh sự phát triển của hạ tầng phần cứng và công nghệ mạng để kết nối
và truyền tải dữ liệu, việc phát triển các ứng dụng thực tiễn cho các thiết bị di động
ngày càng đòi hỏi cấp thiết, đáp ứng nhu cầu cao hơn của xã hội. Các công nghệ
phần mềm được phát triển song song với công nghệ phần cứng để thực hiện điều
này. Hiện nay có một số công nghệ phát triển phần mềm ứng dụng trên điện thoại di
động như: Windows Mobile, Symbian, Embedded Visual C++ và .Net, J2ME,
Android, iOS, RIM... và chúng ta sẽ đề cập chi tiết ở phần tiếp theo.
1.2. Công nghệ cho lập trình trên mobile
Sau đây chúng ta sẽ xem xét một số nền tảng cho phát triển ứng dụng di động, đặc
biệt là các nền tảng hiện đại.
1.2.1. Nền tảng Symbian
Symbian là hệ điều hành điện thoại di động được thiết kế cho điện thoại
thông minh được phát triển bởi Symbian Ltd nhưng hiện đang được duy trì bởi
Accenture. Các nền tảng Symbian là sự kế thừa cho hệ điều hành Symbian và các
thế hệ Nokia. Điện thoại Symbian đầu tiên trên màn hình cảm ứng là Ericsson R380
Trung tâm Đào tạo E-learning Cơ hội học tập cho mọi người
Lập trình thiết bị di động - Bài 1 Trang 7
điện thoại thông minh đã được phát hành vào năm 2000 và là thiết bị đầu tiên được
bán trên thị trường như là một "điện thoại thông minh". Nó kết hợp một PDA với
một điện thoại di động.
Trong giữa những năm của thập niên đầu của thế kỷ 21, các điện thoại di
động với nền tảng hệ điều hành Symbian phát triển mạnh mẽ, trong đó hãng
Nokia chiếm thị phần rất lớn. Từ các dòng điện thoại di động có máy ảnh đến
có Wi-Fi, rồi tích hợp các tính năng đa phương ti ện khác như GPS, camera độ
phân giải cao và tự động lấy nét cũng như đèn flash LED, kết nối 3G và Wi-Fi
miễn phí và TV-out.
Hình vẽ sau thể hiện các thành phần trong kiến trúc nền tảng của Symbian.
Kernel: là nhân của hệ điều hành Symbian.
Symbian System Layer: là tầng hệ thống, chiếm phần lớn nhất để quản lý,
điều hành hệ thống.
Symbian Application Engines: là tầng quản lý ứng dụng.
UI Design: tầng dùng cho thiết kế giao diện người dùng đồ họa.
1.2.2. Nền tảng Window
Microsoft Windows CE (bây giờ chính thức được gọi là Windows Embedded
Compact và trước đây còn được gọi là Windows Embedded CE, và đôi khi viết tắt
WinCE) là một hệ điều hành được phát triển bởi Microsoft cho các hệ thống nhúng.
Windows CE là một hệ điều hành riêng biệt và ở dạng lõi, chứ không phải là một
phiên bản cắt giảm từ máy tính để bàn Windows.
Trung tâm Đào tạo E-learning Cơ hội học tập cho mọi người
Lập trình thiết bị di động - Bài 1 Trang 8
Microsoft cấp phép cho Windows CE cho các OEM và các nhà sản xuất thiết
bị. Các OEM và các nhà sản xuất thiết bị có thể thay đổi và tạo ra giao diện người
dùng của riêng mình theo kinh nghiệm, với Windows CE cung cấp các nền tảng kỹ
thuật để làm như vậy.
Hình vẽ sau thể hiện các thành phần trong kiến trúc của Window Phone.
1.2.3. Nền tảng Palm
Palm OS (còn được gọi là Garnet OS) là một hệ điều hành điện thoại di động
đầu tiên được phát triển bởi Palm, Inc, cho thiết bị hỗ trợ cá nhân (PDA) vào năm
1996. Palm OS được thiết kế để dễ sử dụng với người dùng đồ họa dựa trên giao
diện màn hình cảm ứng. Nó được cung cấp với một bộ các ứng dụng cơ bản cho
việc quản lý thông tin cá nhân.
Hệ điều hành này đã được mở rộng để hỗ trợ điện thoại thông minh. Một số
được cấp phép khác đã sản xuất các thiết bị được hỗ trợ bởi hệ điều hành Palm. Đến
nay, Palm OS đã được thực hiện trên một loạt các thiết bị di động, bao gồm cả điện
thoại thông minh, đồng hồ đeo tay, chơi game cầm tay, bàn giao tiếp, đọc mã vạch và các thiết bị GPS.
Các tính năng chính của nền tảng Palm OS Garnet là:
Môi trường đơn giản và đơn nhiệm, cho phép chạy các ứng dụng toàn màn
hình với giao diện người dùng cơ bản, thông dụng.
Trung tâm Đào tạo E-learning Cơ hội học tập cho mọi người
Lập trình thiết bị di động - Bài 1 Trang 9
Màn hình đơn sắc hoặc màu với độ phân giải thấp.
Hệ thống đầu vào nhận dạng chữ viết tay được gọi là Graffiti 2.
Công nghệ HotSync để đồng bộ hóa dữ liệu với máy tính để bàn.
Khả năng ghi âm và phát lại âm thanh.
Mô hình bảo mật đơn giản: thiết bị có thể bị khóa bằng mật khẩu, hồ sơ ứng
dụng tùy ý có thể được thực hiện riêng tư.
Truy cập mạng theo chuẩn TCP / IP.
Cổng nối tiếp / USB, hồng ngoại, Bluetooth và kết nối Wi-Fi.
Mở rộng hỗ trợ thẻ nhớ.
Đã được định nghĩa chuẩn định dạng dữ liệu cho các ứng dụng quản lý thông
tin cá nhân để lưu trữ lịch, địa chỉ, công việc và các mục lưu ý, có thể truy
cập bởi các ứng dụng của bên thứ ba.
Đi kèm hệ điều hành Palm là một bộ các ứng dụng tiêu chuẩn.
Sau đây là hình vẽ thể hiện kiến trúc các thành phần trong nền tảng Palm OS.
1.2.4. Nền tảng BlackBerry
BlackBerry là một dòng thiết bị điện thoại phát triển và thiết kế bởi Research In
Motion (RIM). Hệ điều hành chạy trên dòng thiết bị này cũng được phát triển bởi
Trung tâm Đào tạo E-learning Cơ hội học tập cho mọi người
Lập trình thiết bị di động - Bài 1 Trang 10
BlackBerry, gọi là BlackBerry OS. Điện thoại thông minh BlackBerry đ ầu
tiên được phát hành vào năm 1999, được thiết kế để hoạt động như thiết bị hỗ
trợ cá nhân, máy nghe nhạc di động, trình duyệ t internet, thiết bị chơi game,
máy ảnh và nhiều hơn nữa. Chúng chủ yếu được biết đến với khả năng của họ
để gửi và nhận được email và tin nhắn tức thời trong khi duy trì một mức độ
cao về bảo mật thông qua mã hóa tin nhắn trên thiết bị. Thiết bị BlackBerry
hỗ trợ một lượng lớn các tính năng nhắn tin tức thời, với việc dịch vụ
Messenger BlackBerry độc quyền phổ biến nhất.
1.2.5. Nền tảng Bada
Bada là một hệ điều hành cho các thiết bị di động như điện thoại thông minh
và máy tính bảng. Nó được phát triển bởi Samsung Electronics. Tên của nó có
nguồn gốc từ bada, có nghĩa là "đại dương" hoặc "biển" trong tiếng Hàn. Nó được
sử dụng trong dòng điện thoại từ tầm trung đến điện thoại thông minh cao cấp.
Bada, như Samsung đã đ ịnh nghĩa nó, không phải là một hệ điều hành
riêng của mình, nhưng một nền tảng với một kiến trúc hạt nhân có thể cấu
hình được. Đó là một hệ thống lõi lai giữa hệ điều hành thời gian thực có bản
quyền và nhân của Linux.
Kiến trúc bada bao gồm bốn lớp sau đây:
Kernel: là lớp hạt nhân, lớp này có chứa một trong hai hệ điều hành thời gian
thực hoặc hạt nhân Linux, tùy thuộc vào cấu hình phần cứng thiết bị.
Trung tâm Đào tạo E-learning Cơ hội học tập cho mọi người
Lập trình thiết bị di động - Bài 1 Trang 11
Device: là lớp thiế t bị, lớp này chứa các chức năng cốt lõi của các nền
tảng thiết bị di động được cung cấp bởi hệ thống thiết bị điều hành, đồ
họa và chức năng đa phương tiện, và các thành phần thông tin liên lạc.
Các chức năng này bao gồm như điện thoại, an ninh, đồ họa, và sự kiện
và quản lý cửa sổ.
Service: là lớp dịch vụ, lớp này chứa các chức năng định hướng dịch vụ được
cung cấp bởi các ứng dụng lõi và các thành phần hỗ trợ. Ứng dụng lõi được
cung cấp bởi lớp dịch vụ bao gồm ứng dụng danh bạ và nhắn tin. Để truy cập
vào các tính năng này có thể thông qua các API (giao diện lập trình ứng dụng)
trên lớp khung.
Framework : là lớp khung, lớp này có C++ và các nền tảng web của bada.
Thành phần C++ bao gồm các nền tảng cho ứng dụng, cũng như các giao
diện và các lớp đối tượng cung cấp quyền truy cập vào các chức năng trên
các lớp phía dưới. Khung ứng dụng cung cấp các tính năng cho ứng dụng
quản lý vòng đời, xử lý sự kiện, và điều khiển ứng dụng. Các giao diện được
cung cấp bởi API mở bao gồm một số giao diện cơ bản cần thiết của tất cả
các ứng dụng để xử lý các loại dữ liệu, tiện ích, tính năng thiết bị cơ bản, và
các trạng thái ứng dụng, và để tạo ra các giao diện người dùng. Thành phần
nền web cung cấp các chuẩn đã được thiết lập và các tính năng, chẳng hạn
như HTML, CSS và JavaScript, cũng như các API dựa trên JavaScript cho
điều khiển giao diện và các sự kiện.
Trong kiến trúc của Bada, tầng thiết bị cung cấp các chức năng cốt lõi như
đồ họa, các giao thức, điện thoại, an ninh.
Các tầng dịch vụ cung cấp thêm nhiều tính năng dịch vụ trung tâm như tin
nhắn SMS, lập bản đồ... Để cung cấp các tính năng dưới dạng như một bada Server.
Tầng trên cùng cung cấp một giao diện lập trình ứng dụng (API) trong C++ cho các
nhà phát triển ứng dụng sử dụng. Bada cung cấp nhiều điều khiển giao diện khác
nhau cho nhà phát triển: Nó cung cấp các loại giao diện người dùng cơ bản điều
khiển như Listbox, chọn màu và Tab, có một điều khiển trình duyệt web dựa trên
mã nguồn mở WebKit, và các tính năng Adobe Flash. Cả WebKit và Flash có thể
được nhúng vào bên trong các ứng dụng Bada. Bada hỗ trợ thư viện đồ họa 3D
OpenGL ES 2.0 và cung cấp đặc tính bản đồ tương tác với các điểm quan tâm (POI)
trên bản đồ, và nó cũng có thể được nhúng vào bên trong các ứng dụng bên thứ 3.
Nó cũng hỗ trợ tính năng co giúm để thu phóng, duyệt web theo từng thẻ và cắt, sao
chép, và dán.
Trung tâm Đào tạo E-learning Cơ hội học tập cho mọi người
Lập trình thiết bị di động - Bài 1 Trang 12
Bada hỗ trợ nhiều cơ chế để tăng cường sự tương tác, có thể được tích hợp vào các
ứng dụng. Chúng bao gồm các cảm biến khác nhau như cảm biến chuyển động,
kiểm soát độ rung, nhận diện khuôn mặt, gia tốc, từ kế, độ nghiêng, hệ thống định
vị toàn cầu (GPS), và cảm ứng đa điểm.
Ứng dụng được phát triển trong C++ với Bada SDK và dựa trên môi trường
phát triển tích hợp (IDE) là Eclipse. Chuỗi công cụ dựa trên GNU được sử dụng để
xây dựng và gỡ lỗi các ứng dụng. IDE cũng có giao diện Builder, mà các nhà phát
triển có thể dễ dàng thiết kế giao diện của ứng dụng của họ bằng cách kéo và thả
giao diện điều khiển vào màn hình. Để kiểm tra và sửa lỗi, IDE có chứa một môi
trường giả lập để chạy thử các ứng dụng.
1.2.6. Nền tảng IOS
iOS (hệ điều hành iPhone trước đây) là một hệ điều hành di động phát triển
và phân phối bởi Apple Inc. Lần đầu được phát hành vào năm 2007 cho iPhone và
iPod Touch, nó đã được mở rộng để hỗ trợ các thiết bị khác của Apple như iPad và
Apple TV. Không giống như Microsoft Windows CE (Windows Phone) và Android
của Google, Apple không cung cấp giấy phép cho iOS để cài đặt trên phần cứng
không phải của Apple. Kho ứng dụng AppStore của Apple có lượng ứng dụng và
người dùng rất lớn (chẳng hạn, năm 2012 đã có hơn 700.000 ứng dụng iOS với số
lượt được tải về hơn 30 tỷ lần).
Giao diện người dùng của iOS dựa trên khái niệm về thao tác trực tiếp, sử
dụng các cử chỉ cảm ứng đa điểm. Yếu tố kiểm soát giao diện bao gồm thanh trượt,
công tắc, và các nút. Đáp ứng cho người sử dụng đầu vào là ngay lập tức và cung
cấp một giao diện lỏng. Tương tác với các hệ điều hành bao gồm các cử chỉ chẳng
hạn như kéo mạnh, vuốt, chạm, tất cả đều có định nghĩa cụ thể trong bối cảnh của
hệ điều hành iOS và giao diện cảm ứng đa điểm của nó. Cảm biến gia tốc được sử
dụng bởi một số ứng dụng để đáp ứng lắc thiết bị (một lệnh hay dùng là lệnh undo)
hoặc xoay nó theo ba hướng (một lệnh hay dùng là chuyển đổi màn hình từ chế độ
dọc sang chế độ ngang).
iOS có nguồn gốc từ OS X, nó được chia sẻ từ nền tảng Darwin, và do đó là
một hệ điều hành Unix. iOS là phiên bản di động của Apple OS X, một hệ điều
hành được sử dụng trên máy tính của Apple.Trong iOS, có bốn tầng trừu tượng như
hình vẽ bên dưới: tầng nhân hệ điều hành (Core OS), tầng dịch vụ lõi (Core
Services), tầng đa phương tiện và dịch vụ ứng dụng (Media), tầng giao diện người
dùng (Cocoa Touch).
Trung tâm Đào tạo E-learning Cơ hội học tập cho mọi người
Lập trình thiết bị di động - Bài 1 Trang 13
1.2.7. Nền tảng Java ME
Java MicroEdition (ME) là một bộ phận chuyên biệt của nền tảng Java nhằm
cung cấp một tập các Java API để phát triển ứng dụng cho các thiết bị nhỏ và cấu
hình thấp. Do đó nó có thể bao gồm nhiều thiết bị với các công nghệ phần cứng
khác nhau. Java ME được chia thành các thành phần gồm cấu hình (configurations)
và hồ sơ (profiles), nhằm xác định một số phần nhất định của Java API phù hợp
được để chạy trên một thiết bị cụ thể. Các điện thoại di động phải thể hiện CLDC
(Connected Limited Device Configuration) cùng với MIDP (Mobile Information
Device Profile), cả hai chúng định nghĩa API để các lập trình viên có thể sử dụng để
xây dựng các ứng dụng di động.
Tuy nhiên, cả CLDC và MIDP đều tồn tại với các phiên bản khác nhau để
phù hợp cho các điện thoại di động khác nhau. Chẳng hạn, hiện tại, Nokia N95 thực
hiện phiên bản mới nhất của CLDC là 1.1 và MIDP là 2.0. Điều quan trọng là một
phiên bản thứ 3 mới của MIDP hiện đang được phát triển. Máy ảo Java (Java
Virtual Machine) cho các thiết bị di động đã được viết lại và nó không còn là bộ
nhớ nhỏ hơn nhiều so với máy tính như trước đây mà đã được tối ưu đặc biệt cho
các thiết bị nhỏ như điện thoại di động.
Nền tảng phát triển ứng dụng này (Java ME) có thể được dùng để phát triển
ứng dụng chạy trên nhiều hệ điều hành khác nhau với các kiến trúc cấu hình phần
cứng khác nhau. Do vậy đã được nhiều nhà phát triển sử dụng để xây dựng các ứng
dụng trên điện thoại di động.
Sau đây là hình vẽ minh họa kiến trúc các thành phần cơ bản trong nền tảng
Java ME.
Trung tâm Đào tạo E-learning Cơ hội học tập cho mọi người
Lập trình thiết bị di động - Bài 1 Trang 14
1.2.8. Nền tảng Android
Android là một hệ điều hành dựa trên Linux được thiết kế chủ yếu cho màn
hình cảm ứng thiết bị di động như điện thoại thông minh và máy tính bảng, được
phát triển bởi Google cùng với Open Handset Alliance. Ban đầu được phát triển bởi
Android Inc, mà Google hỗ trợ về tài chính và sau đó mua lại vào năm 2005.
Android đã được công bố trong năm 2007 cùng với sự thành lập của Open Handset
Alliance, một tổ hợp 86 phần cứng, phần mềm và các công ty viễn thông dành cho
việc thúc đẩy các tiêu chuẩn mở cho các thiết bị di động.
Google phát hành mã Android là mã nguồn mở, dưới giấy phép Apache. Dự
án Android Open Source (AOSP), dẫn đầu bởi Google, được giao nhiệm vụ duy trì
và phát triển hơn nữa của Android. Ngoài ra, Android có một cộng đồng lớn của các
nhà phát triển viết các ứng dụng mở rộng chức năng của thiết bị. Các nhà phát triển
viết chủ yếu trong một phiên bản tùy biến của Java. Các ứng dụng có thể được tải
về từ cửa hàng trực tuyến như Google Play (trước đây là Android Market), các cửa
hàng ứng dụng do Google, hoặc các trang web của bên thứ ba. Kho ứng dụng trên
nền tảng Android phát triển rất mạnh mẽ, số lượng và chất lượng ứng dụng ngày
càng tăng, số lượng các nhà viết ứng dụng trên nền tảng ngày càng đông. Chẳng hạn
đến tháng tám năm 2012, đã có hơn 600.000 ứng dụng có sẵn cho Android, và số
lượng ước tính của các ứng dụng tải về từ Google Play là 20 tỷ.
Điện thoại đầu tiên hỗ trợ Android được bán ra trong tháng 10 năm 2008, và
đến cuối năm 2010, Android đã trở thành nền tảng điện thoại thông minh hàng đầu
thế giới. Nó có một thị phần điện thoại thông minh trên toàn thế giới là 59% vào
đầu năm 2012.
Trung tâm Đào tạo E-learning Cơ hội học tập cho mọi người
Lập trình thiết bị di động - Bài 1 Trang 15
Kiến trúc Android gồm các thành phần chính được thể hiện trong hình vẽ
dưới đây.
(1) Linux Kernel: là các dịch vụ lõi (bao gồm trình điều khiển phần cứng, xử lý và
quản lý bộ nhớ, bảo mật, mạng và quản lý nguồn năng lượng) được thể hiện bởi hạt
nhân của Linux 2.6. Hạt nhân của Linux cũng cung cấp một tầng trừu tượng giữa
phần cứng và các phần còn lại.
(2) Libraries: là hệ thống thư viện nằm ngay phía trên đầu của hạt nhân, bao gồm
nhiều thư viện lõi khác nhau của C/C++ như là "libc" và "SSL", cũng như:
- Một thư viện đa phương tiện để phát âm thanh và trình chiếu phim.
- Một bộ quản lý giao diện để cung cấp quản lý hiển thị trên màn hình.
- Thư viện đồ họa bao gồm SGL và OpenGL cho đồ họa 2D và 3D.
- SQLite cho việc hỗ trợ quản trị cơ sở dữ liệu cục bộ.
- SSL và WebKit cho việc tích hợp trình duyệt web và bảo mật Internet.
(3) Android Run Time: là môi trường chạy Android, điều làm cho một điện thoại
Android đúng thực sự là chính nó chứ không phải là một điện thoại di động của
Linux. Nó bao gồm các thư viện lõi và máy ảo Dalvik, môi trường chạy Android là
Trung tâm Đào tạo E-learning Cơ hội học tập cho mọi người
Lập trình thiết bị di động - Bài 1 Trang 16
bộ máy nhằm tăng cường sức mạnh cho các ứng dụng, cùng với các thư viện để làm
cơ sở cho các khung ứng dụng. Trong đó,
- Core libraries: là thư viện lõi. Trong khi phát triển ứng dụng Android được thực
hiện đúng như trong Java thì máy ảo Dalvik không phải là một máy ảo Java. Thư
viện lõi Android cung cấp hầu hết các tính năng có sẵn trong các thư viện lõi Java
cũng như các thư viện chuyên biệt của Android.
- Dalvik Virtual Machine: là máy ảo Dalvik. Dalvik là một máy ảo được đăng ký
làm cơ sở nhằm tối ưu hóa để đảm bảo rằng một thiết bị có thể chạy nhiều thể hiện
của nó hiệu quả. Nó dựa trên nhân của Linux cho việc quản lý bộ nhớ ở mức thấp
và quản lý luồng.
(4) Application Framework: là khung ứng dụng. Khung ứng dụng cung cấp các lớp
đối tượng để tạo ra các ứng dụng Android. Nó cũng cung cấp các lớp trừu tượng
(generic abstraction) để truy cập phần cứng và quản lý giao diện người dùng và tài
nguyên ứng dụng.
(5) Application Layer: là tầng ứng dụng. Tất cả các ứng dụng, gồm cả ứng dụng nội
bộ (Native Apps) và ứng dụng bên thứ ba (Third Party Apps), được xây dựng trên
tầng ứng dụng bằng cách sử dụng chung thư viện API. Tầng ứng dụng thực thi bên
trong môi trường Android và sử dụng các lớp đối tượng và các dịch vụ được cung
cấp từ khung ứng dụng.
1.3. Công nghệ J2ME và cách lập trình
1.3.1. Giới thiệu về công nghệ J2ME
1.3.1.1. Giới thiệu J2ME của ngôn ngữ lập trình Java
Ngôn ngữ lập trình Java bước đầu được phát triển để xây dựng các ứng dụng
ở máy đầu cuối (máy khách) , sau đó được mở rộng và phát triển để xây dựng các
ứng dụng máy chủ. Hiện nay nó có ba phiên bản chính đó là J2SE, J2EE và J2ME.
Mỗi phiên bản cung cấp một môi trường đầy đủ để chạy ứng dụng Java, bao gồm
máy ảo Java (JVM) và các thư viện lớp để lập trình ứng dụng (Java API). Ba phiên
bản trên nhắm vào ứng dụng trên ba loại thiết bị khác nhau, với phiên bản J2ME
cho thiết bị di động cầm tay hoặc thiết bị nhúng.
Minh họa 3 phiên bản của Java như sau :
Trung tâm Đào tạo E-learning Cơ hội học tập cho mọi người
Lập trình thiết bị di động - Bài 1 Trang 17
Các đặc trưng và quy định trong phiên bản J2ME được định nghĩa thông qua
cộng đồng JCP (Java Community Process), như đã thực hiện với hai phiên bản
J2SE và J2EE. Hiện nay có khoảng 40 bộ phận độc lập để giải quyết cho vấn đề lập
trình phiên bản J2ME, là một chủ đề nóng trong cộng đồng Java, tại địa chỉ
www.jcp.org.
Phiên bản J2ME đòi hỏi có sự hạn chế đối với thiết bị phát triển ứng dụng,
có giới hạn về bộ nhớ, kích thước màn hình nhỏ, phương pháp nhập liệu thay đổi và
tốc độ xử lý thấp. Gồm những thiết bị như điện thoại di động, máy nhắn tin, PDA,...
và hiện nay hầu hết các sản phẩm phần mềm ứng dụng trên điện thoại di động được
phát triển bằng công nghệ J2ME.
Phần lõi của công nghệ J2ME gồm 3 yếu tố sau: cấu hình (configuration),
mô tả (profile) và các gói tùy chọn (optional packages). Chúng xác định các đặc
tính của Java sẽ sử dụng trong J2ME, gồm cả giao diện lập trình ứng dụng (API) và
việc đóng gói một ứng dụng J2ME.
1.3.1.2. Môi trường phát triển của J2ME
Để phát triển ứng dụng theo công nghệ J2ME chúng ta phải sử dụng môi
trường phát triển với các chức năng cơ bản như biên dịch và đóng gói một ứng dụng
J2ME, đặc biệt phải có một bộ Emulator để thử nghiệm ứng dụng J2ME trên môi
trường máy tính như là trên thiết bị di động. Hiện nay có một số môi trường như
j2mepolish-1.2.4, sun java wireless toolkit, netbean,... Ở đây chúng ta sử dụng môi
trường của hãng Sun cung cấp khá dễ dàng và đầy đủ (sử dụng NetBeans).
Các thành phần cơ bản của J2ME:
a) Thành phần cấu hình - Configuration
C
JJJ
Trung tâm Đào tạo E-learning Cơ hội học tập cho mọi người
Lập trình thiết bị di động - Bài 1 Trang 18
Cấu hình là mộ t bộ đầy đủ môi trường chạy của Java, bao gồm ba thành
phần sau :
Một máy ảo Java (JVM) để thi hành các mã byte của chương trình Java.
Hệ thống mã thực thi làm giao diện với hệ thống thiết bị vật lý
Tập các lớp của thư viện lõi của Java
Để sử dụng một cấu hình, một thiết bị phải chắc chắn đúng với những đòi
hỏi tối thiểu đã định nghĩa trong đó. Mặc dù một cấu hình cung cấp một môi trường
Java hoàn chỉnh, tập các lớp lõi là khá nhỏ nhưng phải được tăng cường thêm các
lớp bởi thành phần profile của J2ME hoặc bởi bộ cấu hình. Thực tế cấu hình không
định nghĩa bất kỳ một lớp giao diện người dùng nào.
J2ME định nghĩa hai loại cấu hình, Connected Limited Device Configuration
(CLDC) và Connected Device Configuration (CDC). CLDC dành cho các thiết bị
có những hạn chế về dung lượng bộ nhớ nhỏ, tốc độ xử lý thấp. Máy ảo Java được
sử dụng ở đây có tên là KVM (Kilobyte Virtual Machine), là một bộ phận con của
JVM và chỉ chạy cho các chương trình nhỏ, nó chứa các lớp lõi cơ bản tối thiểu như
các gói java.lang, java.io, java.util và một số lớp trong gói java.microedition.io. Mặt
khác CDC sử dụng máy ảo Java có tên là CVM và chứa một lượng các lớp lớn hơn
CLDC, vì vậy nó đòi hỏi thiết bị có nhiều bộ nhớ hơn và tốc độ xử lý nhanh hơn.
Hình vẽ sau mô tả mối tương quan giữa hai gói cấu hình CDC và CLDC với
J2SE.
b) Thành phần mô tả - Profile
Trung tâm Đào tạo E-learning Cơ hội học tập cho mọi người
Lập trình thiết bị di động - Bài 1 Trang 19
Các gói cấu hình đã giúp để phân biệt các loại thiết bị khác nhau. Nhưng vì
có rất nhiều thiết bị khác xung quanh mỗi loại vẫn phải được tiếp tục hoàn thiện bởi
vì một gói cấu hình có thể bao gồm nhiều thiết bị được áp dụng là khác nhau như
điện thoại di động, tủ lạnh, hoặc máy giặt. Điện thoại di động và máy giặt có thể
thuộc về cùng một gói cấu hình nhưng rõ ràng là một ứng dụng điện thoại di động
không phải có cùng chức năng để chạy trên các máy giặt hoặc ngược lại. Như vậy,
J2ME cung cấp các khái niệm về một gói mô tả (profiles) để đạt được tính thích
nghi của môi trường ứng dụng.
Một gói mô tả trong J2ME giải quyết các nhu cầu cụ thể của một số phân
khúc sản phẩm theo chiều dọc (ví dụ như ngân hàng hoặc ứng dụng thanh toán)
hoặc theo chủng loại thiết bị. Theo đó, gói mô tả có thể bao gồm các thư viện được
thêm nhằm làm phù hợp với nhiều thiết bị cụ thể hơn là các thư viện được cung cấp
trong một cấu hình. Gói mô tả được thực hiện trên một cấu hình. Các ứng dụng khi
đó được viết dựa trên một gói mô tả cụ thể, như là gói mô tả được dành cho một cấu
hình cụ thể. Cả gói cấu hình và gói mô tả xác định một tập hợp các lớp Java API
được sử dụng bởi các ứng dụng. Một thiết bị được thiết kế để hỗ trợ một hoặc một
số gói mô tả, chấp nhận để thực thi tất cả các tính năng và lớp Java API được chỉ
định bởi gói mô tả và gói cấu hình tương ứng.
Từ quan điểm triển khai, một gói mô tả như là một bộ sưu tập các Java API
gồm thư viện các lớp đối tượng lưu trú trên một gói cấu hình và cung cấp những
tính năng cụ thể đối với các thiết bị trong một phân khúc sản phẩm cụ thể.
J2ME hiện nay cung cấp một số gói mô tả cơ bản như sau:
- MIDP (Mobile Information Device Profiles): gói mô tả cho các thiết bị
thông tin di động (điện thoại di động). Bằng cách xây dựng dựa trên CLDC, gói mô
tả này sẽ cung cấp một nền tảng tiêu chuẩn cho thiết bị thông tin di động kích thước
nhỏ, có hạn chế về tài nguyên vật lý, dây kết không dây như điện thoại di động,
máy nhắn tin hai chiều. Ngoài việc kết nối không dây, các thiết bị này có màn hình
nhỏ, bộ phận thu đầu vào hạn chế, hạn chế bộ nhớ lưu trữ cục bộ, tuổi thọ pin và
khả năng tính toán xử lý của CPU.
Trung tâm Đào tạo E-learning Cơ hội học tập cho mọi người
Lập trình thiết bị di động - Bài 1 Trang 20
- Foundation Profiles (FP): Gói mô tả này phục vụ hai mục đích. Thứ nhất,
nó cung cấp một gói mô tả của nền tảng Java thế hệ 2 phù hợp cho các thiết bị cần
được hỗ trợ cho một môi trường Java giàu tính kết nối mạng, nhưng không yêu cầu
một giao diện người dùng đồ họa. Thứ hai, nó sẽ cung cấp một gói mô tả cơ bản
bao gồm các mô tả cần phải xây dựng trên khả năng mà nó có cung cấp bằng cách
thêm vào như giao diện người dùng đồ họa hay các tính năng khác.
- Một số gói mô tả khác như: Personal Profile để chạy trên gói cấu hình CDC,
RMI để chạy trên nền của gói FP và CDC, PDA để chạy trên gói cấu hình CLDC.
c) Thành phần tùy chọn – Optional Packages
Là các gói thư viện cung cấp các tính năng thêm cho môi trường ứng dụng,
như là các thư viện xử lý đa phương tiện, thư viện xử lý đồ họa không gian...
Sau đây là hình vẽ minh họa các thành phần trong công nghệ J2ME và quan
hệ với 2 hướng công nghệ khác là J2SE và J2EE. Thành phần máy ảo java trong
công nghệ J2ME dùng cho gói cấu hình CLDC đó là KVM (Kylôbyte Virtual
Machine).
Các bước chính để phát triển một ứng dụng J2ME như sau:
Bước 1) Xác định cụ thể loại thiết bị sẽ chạy ứng dụng để lập chương trình phù hợp
với thiết bị đó (trình bày ở phần sau).
Bước 2) Lập chương trình bằng ngôn ngữ Java theo công nghệ J2ME để thực hiện
bài toán đặt ra, có thể sử dụng một trong các chương trình soạn thảo bất kỳ nhưng
Trung tâm Đào tạo E-learning Cơ hội học tập cho mọi người
Lập trình thiết bị di động - Bài 1 Trang 21
phải lưu vào máy dạng text, không có định dạng. Ví dụ như NotePad, WordPad, hay
thậm chí JCreator.
Bước 3) Dịch chương trình và đóng gói thành một ứng dụng J2ME, sử dụng mô-
đun KToolbar của Wireless Toolkit hoặc tích hợp sẵn trong NetBean.
Bước 4) Chạy thử nghiệm ứng dụng trên phần mềm Emulator (trong NetBean được
tích hợp sẵn).
1.3.2. Cách lập trình trong J2ME
a) Khái niệm về midlet và bộ midlet (midlet suit)
Để ứng dụng vào các thiết bị điện thoại di động, chúng ta sử dụng gói thư
viện và cấu hình trong J2ME là MIDP và CLDC. Tất cả các ứng dụng của Java
được chạy trên các thiết bị hỗ trợ MIDP/CLDC đều được coi là các midlet. Một
midlet luôn phải bao gồm ít nhất một lớp được thừa kế từ lớp trừu tượng MIDlet
khai báo trong gói thư viện sau và cần được nạp ngay đầu chương trình bằng lệnh:
import javax.microedition.midlet.*;
Một midlet có thể sử dụng các phương thức của lớp MIDlet để được phục vụ
từ môi trường thực thi JVM, để làm điều này midlet chỉ cần sử dụng các hàm API
đã được định nghĩa trong MIDP.
Một nhóm các midlet có quan hệ và được tập hợp lại được gọi là một bộ
midlet (midlet suite). Tất cả các midlet trong một bộ được đóng gói (packaged)
và cài đặt lên thiết bị như là một đơn thực thể, các MIDlet này có thể cùng bị hủy
cài đặt hoặc loại bỏ khỏi thiết bị cùng một lúc. Các midlet trong một bộ có thể
chia sẻ các thành phần tĩnh và các nguồn tài nguyên của môi trường thực thi:
• Tại thời điểm thực thi, nếu thiết bị phần cứng có yêu cầu nhiều hơn một
midlet được gọi, khi đó các midlet được gọi trong cùng một bộ midlet sẽ thực thi
trên cùng một máy ảo Java. Do các midlet được gói trong cùng một bộ nên nó sẽ
sử dụng chung các khởi tạo của các lớp và các nguồn tài nguyên đã được nạp vào
trong máy ảo JVM. Điều này có nghĩa là dữ liệu có thể được chia sẻ giữa các midlet,
Trung tâm Đào tạo E-learning Cơ hội học tập cho mọi người
Lập trình thiết bị di động - Bài 1 Trang 22
máy ảo Java sẽ đồng bộ hóa (synchronization) các nguồn tài nguyên này để bảo vệ
các truy nhập từ các midlet hoặc các bộ midlet khác trong quá trình thực thi.
• Dữ liệu lưu trữ trên thiết bị được quản lý theo cấp độ của bộ midlet. Các
midlet trong cùng một bộ có thể truy cập đến các vùng dữ liệu của nhau. Tuy nhiên
một midlet trong bộ này sẽ không được quyền truy cập đến vùng dữ liệu của midlet
nằm trong bộ khác.
b) Vòng đời của midlet
Một midlet gồm tập hợp các pha đóng vai trò là các thành phần của một
vòng đời midlet, các pha này luôn luôn được đặt ở một trong ba trạng thái sau:
• Pause: Một midlet được đặt vào trạng thái dừng ngay sau khi cấu tử
(constructor) được gọi nhưng trước khi bộ quản lý ứng dụng được khởi động.
Khi một midlet được khởi động, nó có thể chuyển sang các trạng thái Pause hoặc
Active nhiều lần trong một vòng đời.
• Active: Trạng thái này cho biết một midlet đang được thực thi.
• Destroy: Một midlet được giải phóng các tài nguyên mà nó chiếm giữ và
được đóng lại bởi trình quản lý ứng dụng.
Lớp MIDlet hỗ trợ một số phương thức cơ bản để giúp chuyển đổi các trạng
thái theo sơ đồ sau:
Trung tâm Đào tạo E-learning Cơ hội học tập cho mọi người
Lập trình thiết bị di động - Bài 1 Trang 23
Trong đó, phương thức “startApp” thường được ghi đè để thực hiện các hành
động ban đầu khi chương trình chạy mà chúng ta mong muốn. Còn hai phương thức
“pauseApp” và “destroyApp” vẫn được ghi đè nhưng nội dung có thể để trống nếu
không muốn. Lý do cần phải ghi đè cả 3 phương thức trên là chúng đều ở dạng trừu
tượng (abstract) trong lớp cơ sở MIDlet của MIDP/CLDC.
c) Khởi tạo một ứng dụng midlet
Như đã trình bày, một ứng dụng midlet có thể bao gồm nhiều lớp nhưng ít
nhất luôn phải có một lớp được thừa kế từ lớp trừu tượng MIDlet được định nghĩa
trong gói javax.microedition.midlet. Cấu trúc cơ bản của một ứng dụng midlet
được định nghĩa như sau:
import javax.microedition.midlet.*;
public class name_of_class extends MIDlet {
/* ... MỘT SỐ NỘI DUNG KHÁC ...*/
public void startApp(){
/* ... NỘI DUNG KHỞI CHẠY CHƯƠNG TRÌNH ...*/
}
public void pauseApp(){}
public void destroyApp(boolean dk){}
}
Sau đây là bảng các hàm API của lớp MIDlet.
Phương thức Mô tả
Giao tiếp giữa bộ quản lý ứng dụng với MIDlet
abstract void startApp() MIDlet được đặt vào trạng thái kích hoạt
abstract void pauseApp() MIDlet được đặt vào tạng thái tạm dừng
abstract void
destroyApp(boolean dk)
MIDlet được giải phóng
Trung tâm Đào tạo E-learning Cơ hội học tập cho mọi người
Lập trình thiết bị di động - Bài 1 Trang 24
Giao tiếp giữa MIDlet và bộ quản lý ứng dụng
final void notifyDestroyed() MIDlet yêu cầu được giải phóng
final void notifyPaused() MIDlet yêu cầu được tạm dừng
final void resumeRequest() MIDlet yêu cầu được kích hoạt.
Truy cập thuộc tính của một MIDlet từ bộquản lý ứng dụng
final String getAppProperty
(String key)
Nhận các thuộc tính từcác JAD và JAR files.
Ví dụ 2.1: Lập trình một midlet để hiện thị lên màn hình thông báo các thông tin
cá nhân của một người trong thời gian 15 giây.
Trong ví dụ này sử dụng lớp đối tượng Alert sẽ được trình bày chi tiết ở phần
sau.
import javax.microedition.lcdui.*;
import javax.microedition.midlet.*;
public class Vidu2_1 extends MIDlet {
public void startApp() {
Alert tb = new Alert("THÔNG TIN CÁ NHÂN",
" Họ tên: Nguyễn Văn An"+
"\n Ns: 10/11/1976"+
"\n Quê quán: Hà Nội",
null, AlertType.INFO);
tb.setTimeout(15000);
Display.getDisplay(this).setCurrent(tb);
}
public void pauseApp() {}
public void destroyApp(boolean t) {}
}
Màn hình kết quả chạy chương trình trên netbean như sau: