Tài liệu Luận văn Nghiên cứu hệ điều hành symbian 6.0 và xây dựng ứng dụng minh họa trên điện thoại di động nokia 9210: KH
OA
C
NT
T –
Đ
H
KH
TN
1
TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN
KHOA CÔNG NGHỆ THÔNG TIN
BỘ MÔN CÔNG NGHỆ PHẦN MỀM
SINH VIÊN THỰC HIỆN
HÙYNH TẦN KIỆT 0012050
TRẦN THỊ THÙY TRANG 0012109
NGHIÊN CỨU HỆ ĐIỀU HÀNH SYMBIAN 6.0
và
XÂY DỰNG ỨNG DỤNG MINH HỌA TRÊN
ĐIỆN THOẠI DI ĐỘNG NOKIA 9210
LUẬN VĂN CỬ NHÂN TIN HỌC
TP.HCM , 7/ 2004
KH
OA
C
NT
T –
Đ
H
KH
TN
2
TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN
KHOA CÔNG NGHỆ THÔNG TIN
BỘ MÔN CÔNG NGHỆ PHẦN MỀM
SINH VIÊN THỰC HIỆN
HÙYNH TẦN KIỆT 0012050
TRẦN THỊ THÙY TRANG 0012109
NGHIÊN CỨU HỆ ĐIỀU HÀNH SYMBIAN 6.0
và
XÂY DỰNG ỨNG DỤNG MINH HỌA TRÊN
ĐIỆN THOẠI DI ĐỘNG NOKIA 9210
GIÁO VIÊN HƯỚNG DẪN
Th.S TRẨN ĐỨC DUẨN
Thầy NGUYỄN VIẾT HÒANG
TP.HCM , 7/2004
KH
OA
C
NT
T –
Đ
H
KH
TN
3
Nhận xét của Giáo viên hướng dẫn
………………………………………………………………………………………………
………………………………………………………………………………………………
………………………………………………………………………………………………
………………………………………………………………………………………...
133 trang |
Chia sẻ: hunglv | Lượt xem: 965 | Lượt tải: 0
Bạn đang xem trước 20 trang mẫu tài liệu Luận văn Nghiên cứu hệ điều hành symbian 6.0 và xây dựng ứng dụng minh họa trên điện thoại di động nokia 9210, để tải tài liệu gốc về máy bạn click vào nút DOWNLOAD ở trên
KH
OA
C
NT
T –
Đ
H
KH
TN
1
TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN
KHOA CÔNG NGHỆ THÔNG TIN
BỘ MÔN CÔNG NGHỆ PHẦN MỀM
SINH VIÊN THỰC HIỆN
HÙYNH TẦN KIỆT 0012050
TRẦN THỊ THÙY TRANG 0012109
NGHIÊN CỨU HỆ ĐIỀU HÀNH SYMBIAN 6.0
và
XÂY DỰNG ỨNG DỤNG MINH HỌA TRÊN
ĐIỆN THOẠI DI ĐỘNG NOKIA 9210
LUẬN VĂN CỬ NHÂN TIN HỌC
TP.HCM , 7/ 2004
KH
OA
C
NT
T –
Đ
H
KH
TN
2
TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN
KHOA CÔNG NGHỆ THÔNG TIN
BỘ MÔN CÔNG NGHỆ PHẦN MỀM
SINH VIÊN THỰC HIỆN
HÙYNH TẦN KIỆT 0012050
TRẦN THỊ THÙY TRANG 0012109
NGHIÊN CỨU HỆ ĐIỀU HÀNH SYMBIAN 6.0
và
XÂY DỰNG ỨNG DỤNG MINH HỌA TRÊN
ĐIỆN THOẠI DI ĐỘNG NOKIA 9210
GIÁO VIÊN HƯỚNG DẪN
Th.S TRẨN ĐỨC DUẨN
Thầy NGUYỄN VIẾT HÒANG
TP.HCM , 7/2004
KH
OA
C
NT
T –
Đ
H
KH
TN
3
Nhận xét của Giáo viên hướng dẫn
………………………………………………………………………………………………
………………………………………………………………………………………………
………………………………………………………………………………………………
………………………………………………………………………………………………
………………………………………………………………………………………………
………………………………………………………………………………………………
………………………………………………………………………………………………
………………………………………………………………………………………………
………………………………………………………………………………………………
………………………………………………………………………………………………
………………………………………………………………………………………………
………………………………………………………………………………………………
………………………………………………………………………………………………
………………………………………………………………………………………………
………………………………………………………………………………………………
………………………………………………………………………………………………
………………………………………………………………………………………………
………………………………………………………………………………………………
………………………………………………………………………………………………
………………………………………………………………………………………………
………………………………………………………………………………………………
………………………………………………………………………………………………
………………………………………………………………………………………………
………………………………………………………………………………………………
………………………………………………………………………………………………
………………………………………………………………………………………………
………………………………………………………………………………………………
………………………………………………………………………………………………
………………………………………………………………………………………………
………………………………………………………………………………………………
………………………………………………………………………………………………
………………………………………………………………………………………………
………………………………………………………………………………………………
………………………………………………………………………………………………
………………………………………………………………………………………………
………………………………………………………………………………………………
………………………………………………………………………………………………
………………………………………………………………………………………………
………………………………………………………………………………………………
………………………………………………………………………………………………
KH
OA
C
NT
T –
Đ
H
KH
TN
4
Nhận xét của Giáo viên phản biện
………………………………………………………………………………………………
………………………………………………………………………………………………
………………………………………………………………………………………………
………………………………………………………………………………………………
………………………………………………………………………………………………
………………………………………………………………………………………………
………………………………………………………………………………………………
………………………………………………………………………………………………
………………………………………………………………………………………………
………………………………………………………………………………………………
………………………………………………………………………………………………
………………………………………………………………………………………………
………………………………………………………………………………………………
………………………………………………………………………………………………
………………………………………………………………………………………………
………………………………………………………………………………………………
………………………………………………………………………………………………
………………………………………………………………………………………………
………………………………………………………………………………………………
………………………………………………………………………………………………
………………………………………………………………………………………………
………………………………………………………………………………………………
………………………………………………………………………………………………
………………………………………………………………………………………………
………………………………………………………………………………………………
………………………………………………………………………………………………
………………………………………………………………………………………………
………………………………………………………………………………………………
………………………………………………………………………………………………
………………………………………………………………………………………………
………………………………………………………………………………………………
………………………………………………………………………………………………
………………………………………………………………………………………………
………………………………………………………………………………………………
………………………………………………………………………………………………
………………………………………………………………………………………………
………………………………………………………………………………………………
………………………………………………………………………………………………
………………………………………………………………………………………………
………………………………………………………………………………………………
………………………………………………………………………………………………
………………………………………………………………………………………………
KH
OA
C
NT
T –
Đ
H
KH
TN
5
Lời cảm ơn
Chúng em xin chân thành cảm ơn Khoa Công Nghệ Thông Tin trường đại học Khoa
Học Tự Nhiên TPHCM đã tạo điều kiện cho chúng em thực hiện đề tài tốt nghiệp
này.
Chúng em xin chân thành cảm ơn thầy Trần Đức Duẩn và Nguyễn Viết Hòang đã
tận tình hướng dẫn, chỉ bảo chúng em trong suốt thời gian thực hiện đề tài.
Chúng em cũng xin cám ơn quý thầy cô trong khoa đã tận tình giảng dạy và trang bị
cho chúng em những kiến thức cần thiết trong suốt quá trình học tập tại trường, và
cũng xin gửi lòng biết ơn sâu sắc đến ba mẹ,các anh chị và các bạn đã ủng hộ,giúp
đỡ động viên chúng em trong những lúc khó khăn cũng như trong suốt những năm
học vừa qua.
Mặc dù đã cố gắng hoàn thành luận văn với tất cả sự nổ lực của bản thân nhưng
luận văn chắc chắn không tránh khỏi những thiếu sót nhất định,kính mong sự thông
cảm và tận tình chỉ bảo của quý thầy cô và các bạn.
TPHCM 7/2004
Nhóm thực hiện
Huỳnh Tấn Kiệt - Trần Thị Thùy Trang
KH
OA
C
NT
T –
Đ
H
KH
TN
6
Lời mở đầu
Công nghệ thông tin đang trở thành một phần tất yếu của cuộc sống chúng ta. Ngày
nay các thiết bị công nghệ ngày càng gần gũi với sinh hoạt của con người ,đặc biệt
là các thiết bị di động, ngoài các chức năng cơ bản là liên lạc điện thoại, nhắn
tin…Điện thoại di động ngày nay còn hơn thế nữa ,chúng trở thành máy nghe nhạc ,
xem phim ,chụp hình và cả chơi games. Hơn thế nữa chúng dần trở thành…..máy
tính cá nhân (PC) - một viễn cảnh khổng lồ !
Với các thiết bị di động thông minh như máy tính cá nhân ,việc có một hệ điều hành
cho nó là điều tất yếu .Nhiều năm qua ,được sự hậu thuẫn của các hãng điện thoại
danh giá như Nokia ,Motorola,Samsung ,Ericsson…Symbian là sự lựa chọn hàng
đầu và thống lĩnh thị trường về hệ điều hành cho điện thoại di động. Hệ điều hành
Symbian từ những phiên bản ban đầu vốn đơn giản vì thực hiện chỉ những chức
năng cơ bản .Nhưng từ phiên bản EPOC 5.0 rồi tới Symbian 6.0 dành cho các loại
điện thoại dòng crystal – dòng điện thoại cho các loại máy có bàn phím tương tự
máy tính cá nhân - thì Symbian trở nên phức tạp và mạnh mẽ không khác gì
Windows hay Linux.
Trên môi trường Symbian 6.0 ,có hàng loạt các ứng dụng tương tự như máy tính cá
nhân mà ta không ngờ tới như trình gửi mail ,trình duyệt web ,các ứng dụng văn
phòng ,các trò chơi dàn trận…Do vậy ,nhu cầu tìm hiểu về Symbian 6.0 trở nên cấp
bách vì càng ngày người ta càng muốn rằng “phone là PC” và “PC là phone”, viễn
cảnh đó sẽ ngày càng gần hơn nữa khi mà giá các thiết bị như vậy không còn quá
đắt.Ước tính tới năm 2006 ,sẽ có thêm gần 60 triệu người trên toàn cầu sử dụng
những loại điện thoại “lai” PC như vậy.
Với ý tưởng đó, cùng với sự đồng tình của Khoa Công nghệ thông tin – thuộc Đại
học Khoa học Tự nhiên TPHCM ,chúng em đã cùng nhau thực hiện đề tài : Nghiên
cứu hệ điều hành Symbian 6.0 ,ứng dụng Xây dựng Bộ gõ Tiếng việt và Các
chức năng hỗ trợ soạn thảo Tiếng việt trên máy Nokia 9210.
KH
OA
C
NT
T –
Đ
H
KH
TN
7
MỤC LỤC
Chương 1 Tổng quan đề tài ............................................................................................12
1.1 Giới thiệu lĩnh vực và ý nghĩa đề tài....................................................................12
1.2 Các kết quả nghiên cứu hiện nay về lĩnh vực này ...............................................14
1.3 Nội dung nghiên cứu của đề tài ...........................................................................16
1.4 Tóm tắt kết quả của đề tài ....................................................................................17
1.5 Bố cục luận văn....................................................................................................18
Chương 2 Hệ điều hành Symbian ..................................................................................19
2.1 Lịch sử .................................................................................................................19
2.2 Kiến trúc tổng quan của HDH Symbian ..............................................................20
2.3 Các đặc tính .........................................................................................................21
2.4 Các thiết kế của HDH Symbian...........................................................................23
2.5 Kĩ thuật chung(Generic Technology-GT) để phát triển hệ điều hành Symbian.26
2.5.1 Base..............................................................................................................27
2.5.2 Framework ...................................................................................................29
2.5.3 Communications ..........................................................................................30
2.5.4 Messaging ....................................................................................................32
2.5.5 Browsing......................................................................................................32
2.5.6 Application Engines.....................................................................................33
2.5.7 Java runtime.................................................................................................34
2.5.8 Connectivity.................................................................................................35
2.6 Các hàm APIs của HDH Symbian.......................................................................36
2.6.1 Trao đổi thông điệp......................................................................................37
2.6.2 TCP/IP và sockets API ................................................................................37
2.6.3 Communication API(các hàm về giao tiếp).................................................37
2.6.4 Các ứng dụng và dịch vụ .............................................................................38
2.6.5 Symbian là một hệ điều hành đa nhiệm:......................................................38
2.6.6 Các mã lệnh (code) có thể dùng lại được. ...................................................40
Chương 3 Vấn đề về phát triển ứng dụng trên hệ điều hành Symbian .....................41
3.1 Bộ nhớ trong Symbian phone ..............................................................................41
3.2 Kiến trúc của 1 phần mềm trên Symbian.............................................................42
3.2.1 Kiến trúc thư viện : (Library Architecture)..................................................42
3.2.2 Kiến trúc lớp của ứng dụng : (Application Class Architecture) ..................44
3.3 Các ngôn ngữ có thể dùng phát triển ứng dụng trên HDH Symbian...................46
3.3.1 Phát triển ứng dụng bằng C++:....................................................................47
3.3.2 Phát triển ứng dụng bằng Java .....................................................................48
3.3.3 Phát triển ứng dụng bằng WAP và HTML:.................................................49
Chương 4 Xây dựng ứng dụng VNSmartType .............................................................50
4.1 Giới thiệu .............................................................................................................50
4.2 Các chức năng......................................................................................................50
KH
OA
C
NT
T –
Đ
H
KH
TN
8
4.3 Kỹ thuật chạy nền (Background) .........................................................................53
4.4 Kỹ thuật bắt phím ................................................................................................54
4.5 Xử lý Tiếng Việt ..................................................................................................60
4.6 Tổ chức lưu trữ dữ liệu ........................................................................................64
4.7 Chức năng AutoComplete....................................................................................70
4.8 Chức năng AutoCorrect .......................................................................................72
4.9 Chức năng thêm dấu tự động (Automatic AddAccents)......................................74
4.10 Chức năng xoá dấu (Remove Accents)................................................................77
4.11 Các chức năng khác .............................................................................................78
Chương 5 Cài đặt và thử nghiệm ...................................................................................79
5.1 Tìm hiểu DTDD Nokia 9210 ...............................................................................79
5.1.1 Giới thiệu .....................................................................................................79
5.1.2 Các tính năng chính của Nokia: ...................................................................80
5.1.3 Cấu trúc của Nokia ......................................................................................81
5.2 Cách biên dịch 1 chương trình.............................................................................82
5.3 Cài đặt một chương trình vào Emulator ..............................................................83
5.4 Cài đặt một chương trình vào máy Nokia 9210...................................................84
5.5 Cài đặt & Sử dụng ứng dụng VNSmartType trên máy Nokia 9210....................85
Chương 6 Tổng kết & Đánh giá .....................................................................................96
Phần phụ lục.....................................................................................................................101
A.Tìm hiểu thêm về Nokia 9210 .....................................................................................101
B.Tiếng Việt Unicode.......................................................................................................116
C. Công cụ MEAD(Minimal Eikon Application Development) ..................................121
D. Công cụ Menu Builder................................................................................................122
E. Tìm hiểu trình giả lập Symbian 6.0 EPOC...............................................................122
F. Tra cứu API phát triển ứng dụng..............................................................................123
G. Hướng dẫn từng bước (Tutorial) ..............................................................................126
Thuật ngữ 131
Tài liệu tham khảo ...........................................................................................................133
KH
OA
C
NT
T –
Đ
H
KH
TN
9
DANH MỤC HÌNH
Hình 2-1 Tính tương thích của HDH Symbian...................................................................20
Hình 2-2 DTDD Nokia 9210 ..............................................................................................23
Hình 2-3 DTDD Nokia 7650 ..............................................................................................24
Hình 2-4 DTDD Sony Ericsson ..........................................................................................24
Hình 2-5 Thiết kế Quartz ....................................................................................................25
Hình 2-6 Thành phần chính của GT ...................................................................................26
ình 2-7 Thành phần của Base...........................................................................................27
Hình 2-8 Công cụ hổ trợ cho PC của Base .........................................................................28
Hình 2-9 Framework...........................................................................................................29
Hình 2-10 Communications................................................................................................31
Hình 2-11 Messaging..........................................................................................................32
Hình 2-12 Browsing............................................................................................................33
Hình 2-13 Application Engines ..........................................................................................33
Hình 2-14 Java runtime.......................................................................................................34
Hình 2-15 Connectivity ......................................................................................................35
Hình 2-16 Các APIs mà HDH Symbian cung cấp..............................................................36
Hình 3-1 Bộ nhớ trong Symbian phones ............................................................................41
Hình 3-2 Kiến trúc thư viện................................................................................................43
Hình 3-3 Lớp Ckon và Uikon trong kiến trúc thư viện ......................................................44
Hình 3-4 Kiến trúc lớp của ứng dụng .................................................................................44
Hình 3-5 Liên hệ giữa các thành phần trong kiến trúc của ứng dụng.................................46
Hình 4-1 DTDD Nokia 9210 ..............................................................................................51
Hình 4-2 Thuật toán của bộ gõ tiếng Việt ..........................................................................63
Hình 4-3 Thuật toán AutoComplete ...................................................................................72
Hình 4-4 Thuật toán AutoCorrect .......................................................................................74
Hình 4-5 Thuật toán chức năng thêm dấu...........................................................................76
Hình 4-6 Thuật toán của hàm vietPhrase............................................................................76
Hình 5-1 Qui trình biên dịch 1 chương trình ......................................................................82
Hình 5-2 Màn hình chính của ứng dụng .............................................................................85
Hình 5-3 Màn hình Help.....................................................................................................86
Hình 5-4 Chọn chức năng hỗ trợ ........................................................................................87
Hình 5-5 Màn hình các chức năng quản lý từ (WordStore) ...............................................87
Hình 5-6 Màn hình Word....................................................................................................88
Hình 5-7 Chọn chế độ gõ tiếng Việt ...................................................................................88
Hình 5-8 Màn hình chức năng AutoComplete....................................................................89
Hình 5-9 Màn hình chức năng AutoCorrect .......................................................................89
Hình 5-10 Màn hình chức năng AddAccent .......................................................................90
KH
OA
C
NT
T –
Đ
H
KH
TN
10
Hình 5-11 Màn hình Remove Accent .................................................................................91
Hình 5-12 Màn hình phối hợp chức năng...........................................................................92
Hình 5-13 Màn hình Quản lý từ vựng ................................................................................92
Hình 5-14 Màn hình Thêm từ vựng trong khi soạn thảo ....................................................93
Hình 5-15 Màn hình thêm từ vựng cho AutoCorrect .........................................................94
Hình 5-16 Màn hình xóa từ vựng cho AutoComplete ........................................................94
Hình 5-17 Màn hình xóa từ vựng cho AutoCorrect............................................................95
Hình 0-1 Ứng dụng telephone của Nokia 9210 ................................................................109
Hình 0-2 Ứng dụng SMS của Nokia 9210........................................................................109
Hình 0-3 Ứng dụng mobile email của Nokia 9210...........................................................110
Hình 0-4 Ứng dụng Internet của nokia 9210 ....................................................................111
Hình 0-5 Màn hình màu và đa phương tiện của N9210....................................................112
Hình 0-6 Ứng dụng Contact của N9210 ...........................................................................113
Hình 0-7 Ứng dụng Calendar của N9210 .........................................................................114
Hình 0-8 Ứng dụng Office của Nokia 9210 .....................................................................115
KH
OA
C
NT
T –
Đ
H
KH
TN
11
DANH MỤC BẢNG
Bảng 4-1 Các hàm xử lý của bộ gõ tiếng Việt.....................................................................63
Bảng 4-2Các hàm xử lý của AutoComplete ........................................................................72
Bảng 4-3 Các hàm xử lý của AutoCorrect...........................................................................73
Bảng 4-4 Các hàm xử lý của chức năng chuyển dấu...........................................................75
Bảng 0-1 Phím gõ tiếng Việt kiểu Telex ...........................................................................117
Bảng 0-2 Các phím gõ tiếng Việt kiểu VNI ......................................................................119
Bảng 0-3 Các phím gõ tiếng Việt kiểu VIQR....................................................................120
KH
OA
C
NT
T –
Đ
H
KH
TN
Chương 1 Tổng quan đề tài
12
Chương 1 Tổng quan đề tài
1.1 Giới thiệu lĩnh vực và ý nghĩa đề tài
Như chúng ta được biết, cho đến bây giờ đã có rất nhiều hệ điều hành được sử dụng
rộng rãi trên toàn thế giới : hệ điều hành Windows, Linux, Unix…Nhưng khi những
chiếc DTDD1 cao cấp ra đời, cần đến 1 hệ điều hành cho chúng thì các hệ điều hành
trên đều không phải là sự lựa chọn! Nhu cầu về 1 hệ điều hành mới dùng cho
DTDD ra đời.
Nhưng tại sao chúng ta phải có 1 Hệ điều hành khác cho DTDD?Câu hỏi này
đặt ra cũng giải quyết cho vấn đề mà tại sao đề tài lại hướng đến lĩnh vực này.
Các nhà phát triển DTDD cho rằng có 5 đặc điểm chính để cho thị trường DTDD
trở thành độc nhất, dẫn tới nhu cầu có hệ điều hành thiết kế riêng cho DTDD là:
o DTDD có kích thước nhỏ và mang chuyển được.
o DTDD có mặt ở khắp mọi nơi, trở thành thị trường rộng lớn cho
những đối tượng tiêu thụ khác nhau.
o Đa số DTDD có thể nối mạng - chúng có thể dùng khi được kết nối
với mạng không dây, nối nội bộ với các thiết bị khác.
o Những nhà sản xuất phải đặc trưng hóa sản phẩm của họ để phát triển
và cạnh tranh trong 1 thị trường thay đổi nhanh chóng.
o Platform phải “mở” với những công nghệ khác nhau và những nhà
cung cấp phần mềm khác nhau, để cho các nhà cung cấp dịch vụ hỗ
trợ có thể phát triển, đồng thời dễ dàng phát triển cải tiến công nghệ
và dịch vụ.
1 viết tắt của điện thoại di động( từ đây đến cuối tài liệu sẽ dùng từ viết tắt này)
KH
OA
C
NT
T –
Đ
H
KH
TN
Chương 1 Tổng quan đề tài
13
Với những đặc điểm trên của điện thoại di động thì hệ điều hành phải được
thiết kế làm sao đề đáp ứng những đặc điểm đặc trưng đó.
Trước hết, để giải quyết vấn đề : DTDD phải vừa nhỏ vừa “di động” - một yêu cầu
quan trọng, cũng là lí do làm cho DTDD khác hẳn với máy PC và không dùng được
HDH 2 của máy PC- phải cần 1 bộ nguồn (power) rất mạnh. Thiết bị phải có giải
đáp trong các trường hợp và không mất nhiều thời gian khởi động. Thực tế, thiết bị
không bao giờ bị tắt nguồn hẳn bởi vì nó phải chạy đồng hồ báo thức và chờ cuộc
gọi. Ngoài ra, DTDD phải cung cấp 1 lượng pin để có thể sử dụng trong mấy giờ
liền. Với những yêu cầu này thì toàn bộ HDH phải được thiết kế với mục tiêu là thật
hiệu quả.
Để trở thành 1 thị trường tiêu thụ rộng lớn thì yếu tố về sự tin cậy là quyết định vì
việc mất dữ liệu của điện thoại di động sẽ làm mất lòng tin của người dùng.
Sự tin cậy thì đòi hỏi thiết kế hệ điều hành thật tốt và xử lý lỗi tốt, có khả năng khôi
phục khi bị những lỗi thời gian chạy (run-time errors), hạn chế việc người dùng can
thiệp vào mã nguồn làm mất đi sự ổn định của hệ thống, quản lý bộ nhớ hiệu quả
bằng cách ngăn chặn những lỗ hỏng về bộ nhớ, giải phóng tài nguyên hệ thống khi
không dùng tới. Mặt khác, HDH cho DTDD phải cung cấp sự tích hợp giao tiếp và
chức năng quản lý thông tin cá nhân.
Thêm vào đó, chức năng kết nối mạng của DTDD yêu cầu 1 HDH đa nhiệm, tốc độ
giao tiếp thời gian thực và thích hợp với nhiều giao thức khác nhau. Ngoài ra để
duy trì kết nối tốt, HDH phải xử lý tốt những kết nối bị đứt và thông báo tức thời
cho người dùng. Để sự truyền âm được trôi chảy và có thể cung cấp những chuẩn
mới (chẳng hạn thế hệ thứ 3 của W-CDMA và sự phát triển của nó) thì mạng phải
được thiết kế sao cho giao diện tầng ứng dụng vẫn còn thích hợp bất kể giao thức
nào được dùng. Còn HDH phải cung cấp đầy đủ bộ API để chắc chắn rằng các ứng
dụng đạt được kết quả từ khả năng kết nối và có thể dễ dàng thích ứng với những
giao thức mới mà nó sẽ được cài đặt.
2 hệ điều hành
KH
OA
C
NT
T –
Đ
H
KH
TN
Chương 1 Tổng quan đề tài
14
Vấn đề còn phải đươc đặt ra ở đây là về sự đa dạng hóa các sản phẩm. Trong khi
các máy PC không có nhiều hình dáng thì DTDD quả là 1 thách thức lớn cho việc
thiết kế hệ điều hành cũng bởi chính sự “đa hình” của nó. Và vấn đề ở chỗ là, trong
khi các nhà phát triển phần mềm muốn tạo ra platform chung cho các sản phẩm thì
các nhà sản xuất lại muốn đặc trưng hóa sản phẩm của mình.
Do đó, cách giải quyết vấn đề trên là tách ra thành 2 phần chuyên biệt là giao diện
và HDH. Đặc biệt là HDH này phải có platform “mở”. Nó phải độc lập với các nhà
cung cấp sản phẩm phần mềm, các công ty tin học khác nhau, mạng khác nhau…
Nhìn lại những yêu cầu trên, những yêu cầu phải có của 1 HDH dành cho DTDD thì
chúng ta đã hiểu được tại sao phải xây dựng 1 HDH khác, chứ không phải là các
HDH thông thường, HDH mini được nữa.
HDH đó phải thỏa mãn được những yêu cầu chức năng cao cấp trên mạng 2.5G và
3G. HDH mà phải được thiết kế sao cho nhỏ gọn với 1 bộ nhớ giới hạn như của
DTDD.
Đó cũng chính là lĩnh vực mà đề tài hướng tới: hệ điều hành cho điện thoại di động,
nhằm giải quyết “bài tóan” Nghiên cứu về hệ điều hành dành cho điện thoại di động
để có thể lập trình hay tạo ra ứng dụng chạy trên nó, vốn đang là vấn đề “ thời sự”
trong thời đại công nghệ thông tin như ngày nay.
1.2 Các kết quả nghiên cứu hiện nay về lĩnh vực này
Ban đầu hệ điều hành dành riêng cho DTDD chỉ là hệ điều hành 16 bits và những
chiếc DTDD lúc đó hầu như chỉ để thực hiện cuộc gọi. Nhưng đến bây giờ thì đã có
rất nhiều dòng sản phẩm DTDD khác nhau cũng như ngày càng hiện đại hơn và
phong phú về chức năng. HDH lúc này đã là 1 HDH 32 bits và DTDD không chỉ để
thực hiện cuộc gọi mà còn có các chức năng giống như 1 máy PC. Nghĩa là các điện
KH
OA
C
NT
T –
Đ
H
KH
TN
Chương 1 Tổng quan đề tài
15
thoại này trở nên thông minh hơn với các chức năng đa dạng như nghe nhạc ,xem
phim, chụp hình hay cả chơi trò chơi.
Symbian ra đời trong sự chào đón đặc biệt của các hãng điện thoại danh tiếng trên
thế giới như Nokia, Motorola, Sony Ericsson... Chính vì vậy Symbian nhanh chóng
chiếm lĩnh thị trường di động từ các dòng Symbian 5.0 đến 6.x rồi 7.x, càng ngày
càng đa dạng và đặc biệt hỗ trợ được các công nghệ tiên tiến nhất hiện nay như
J2ME, WAP, BlueTooth.
Tuy vậy không phải Symbian không có các đối thủ, hiện nay sự phát triển ào ạt của
công nghệ đã khiến cho sự cạnh tranh càng “khốc liệt” hơn .
Hiện nay có 5 môi trường phát triển phổ biến cho thiết bị di động (được xem là các
đối thủ lớn của Symbian):
o J2ME: Phổ biến nhất có khả năng kết hợp với các đối thủ khác.
o Brew (Binary Runtime Environment for Wireless) là sản phẩm của
Qualcomm, phát triển bằng C++, qua bộ Brew Toolkit, J2ME được
đánh giá là có khả năng bổ sung tốt nhất cho BREW.
o Symbian OS: hệ điều hành được thiết kế riêng cho điện thoại di động,
thuộc sở hữu của các hãng điện thoại nổi tiếng như Nokia, Ericsson,
Motorola, Panasonic, Psion trong đó Nokia nắm giữ toàn bộ cổ phần,
do vậy Symbian hiện nay đang chiếm gần 90% thị phần điện thoại di
động. J2ME có khả năng làm việc tốt trên Symbain OS version 7.0.
o Openwave: Hãng sản xuất trình duyệt WAP nổi tiếng cùng tên chạy
trên Symbian và kết hợp được với J2ME.
o Microsoft: Với Windows CE dành cho SmartPhone, MS đang định
tấn công vào thị trường phần mềm cho điện thoại di động với những
bộ phát triển công cụ hấp dẫn như Embeded VC++ và cả MS Visual
Studio.NET gần đây.
KH
OA
C
NT
T –
Đ
H
KH
TN
Chương 1 Tổng quan đề tài
16
1.3 Nội dung nghiên cứu của đề tài
Để có thể bước vào thế giới DTDD và có thể điều khiển được chúng, việc hiểu về
một hệ điều hành dành cho điện thoại di động thì không thể thiếu. Đề tài này chọn
nghiên cứu về HDH Symbian.
Như đã trình bày ở trên về nhu cầu cần có 1 HDH riêng cho DTDD và những yêu
cầu về HDH đó thì Symbian thỏa mãn tất cả những vấn đề được đặt ra. Thực tế,
HDH Symbian được thiết kế dựa trên 5 yêu cầu đó, giúp cho nó trở thành 1 HDH
khác với những HDH trên desktop hay workstation và HDH server, hay là đối thủ
nào của nó, mà không đạt được những tiêu chuẩn trên. Có thể nói, đó là một HDH
đa nhiệm, bảo đảm chuẩn “mở” giúp cho nhà sản xuất DTDD dựa trên HDH
Symbian có thể tạo ra sản phẩm riêng cho mình trên nền tảng của các công nghệ có
sẵn. Cấu trúc chặt chẽ của HDH Symbian đưa ra khả năng với các nhà phát triển các
phần mềm, cho phép họ viết các ứng dụng mang đầy đủ các tính năng của công
nghệ không dây.
Chính vì những thế mạnh trên mà Symbian đã trở thành đề tài nghiên cứu đầy hấp
dẩn và tiềm năng cho các nhà phát triển điện thoại di động, cũng là nội dung chính
cho đề tài này. Cụ thể, đề tài nghiên cứu về các nội dung sau :
o Tìm hiểu lịch sử phát triển của HDH Symbian 6.0.
o Tìm hiểu các đặc tính và các thiết kế của Symbian 6.0.
o Kĩ thuật chung để phát triển HDH Symbian.
o Các hàm APIs mà HDH Symbian cung cấp.
o Kiến trúc của phần mềm viết trên Symbian 6.0.
o Bộ nhớ trong Symbian phones.
o Các ngôn ngữ để phát triển phần mềm trên Symbian.
o Vận dụng các kiến thức về Symbian để xây dựng ứng dụng minh họa.
KH
OA
C
NT
T –
Đ
H
KH
TN
Chương 1 Tổng quan đề tài
17
1.4 Tóm tắt kết quả của đề tài
Qua đề tài nghiên cứu này chúng em đã thu được một số kết quả sau :
o Hiểu rõ về cách thức hoạt động của hệ điều hành Symbian nói chung,
Symbian version 6.0 nói riêng.
o Hiểu rõ về những đặc thù của Nokia 9210, đặc biệt là khi kết hợp với
Symbian 6.0.
o Nắm được cách phát triển ứng dụng trên hệ điều hành Symbian, bằng
2 ngôn ngữ phổ biến nhất hiện nay là C++ và Java.
o Nắm được và thực hiện một bộ gõ tiếng Việt cũng như các chức năng
hỗ trợ cho việc soạn thảo tiếng việt trên hệ điều hành Symbian 6.0. Từ
đó phát triển lên thành một phương pháp giải quyết các vấn đề soạn
thảo tiếng việt trên bất cứ hệ thống. Tức là biết được, quy trình cũng
như những vấn đề cần thiết khi phát triển một giải pháp tiếng việt trên
một hệ thống.
o Phát triển được ứng dụng hỗ trợ soạn thảo Tiếng Việt VNSmartType
có thể đưa vào sử dụng thực tế.
KH
OA
C
NT
T –
Đ
H
KH
TN
Chương 1 Tổng quan đề tài
18
1.5 Bố cục luận văn
Nội dung luận văn được chia làm 6 chương :
Chương 1 : Tổng quan về đề tài, giới thiệu chung về đề tài, ý nghĩa và các mục
tiêu của đề tài, trình bày các vấn đề nghiên cứu, nội dung nghiên cứu của đề tài và
kết quả dự kiến đạt được.
Chương 2: Hệ điều hành Symbian, giới thiệu về HDH Symbian. Các tính năng,
các thiết kế cũng như công nghệ chung trong các thiết kế của HDH Symbian.
Chương 3: Vấn đề về phát triển ứng dụng trên HDH Symbian, giới thiệu bộ
nhớ và cách sử dụng bộ nhớ hiệu quả của Symbian phones, đồng thời giới thiệu
kiến trúc của 1 phần mềm viết trên Symbian.
Chương 4: Xây dựng ứng dụng VNSmartType, giới thiệu chức năng và trình bày
cách thiết kế và cách xây dựng các chức năng cũng như tổ chức bộ nhớ lưu trữ và kĩ
thuật thực hiện chung.
Chương 5:Cài đặt và thử nghiệm, trình bày về cách thức biên dịch cũng như cài
đặt một chương trình vào emulator và Nokia 9210. Chương này cũng giới thiệu
tổng quan về máy Nokia 9210.
Chương 6 Tổng kết và đánh giá, đúc kết lại những gì đề tài đã thực hiện được và
các hướng mở rộng trong tương lai
Phần phụ lục
Thuật ngữ
Tài liệu tham khảo
KH
OA
C
NT
T –
Đ
H
KH
TN
Chương 2 Hệ điều hành Symbian
19
Chương 2 Hệ điều hành Symbian
2.1 Lịch sử
Khoảng giữa năm 1994, Psion bắt đầu thực hiện 1 HDH 32 bits để thay thế cho
HDH 16 bits SIBO của họ trước đó. Trước đó, những sản phẩm dựa trên nền của
SIBO đã phát triển thật vượt bậc như Psion Series 3a, Series 3c, Siena và Series
3mx, sản phẩm cuối cùng là vào năm 1998.
HDH mới được lấy tên là EPOC, phản ánh một thời đại mới trong thiết bị thông tin
không dây (Wireless Information Devices - WIDs).
Nhóm phát triển và nhóm tiếp thị sản phẩm đã hợp lại và thành lập công ty lấy tên
là Psion Software và tháng 6/1996, trong khi Psion đang phát triển EPOC thì Nokia
– hãng sản xuất hàng đầu của thị trường DTDD giới thiệu Nokia 9000 Comunicator
vào khoảng cuối năm 1996. Tuy vậy Nokia 9000 Comunicator sử dụng HDH GEOS
của hãng Geo works, đây là HDH 16 bits và EPOC dĩ nhiên có cơ hội để đánh bại
GEOS vì nó là HDH 32 bits. Một ý tưởng hết sức quan trọng là nếu Psion Software
là sở hữu một tập hợp các nhà sản xuất thì thị trường của họ sẽ mở rộng toàn bộ đối
với thiết bị không dây.
Ngày 24/6/1998, một công ty mới, công ty Symbian được công bố trên thế giới.
CollyMyers, người phát triển EPOC trở thành người điều hành và Symbian trở
thành sở hữu của Nokia, Ericsson và dĩ nhiên Psion. Sau đó vào 10/1998, Motorola
tham gia và vào 5/1999 Panasonic tham gia.
Symbian là sở hữu của những nhà sản xuất hàng đầu trong ngành truyền thông và
có văn phòng đặt tại Luân đôn, Cambridge ở Anh, Silicon Valley ở Mỹ, Ronneby ở
Thụy Điển và Tokyo ở Nhật mặc dù tại thời điểm đó, Symbian chỉ có hơn 700 nhân
viên toàn thế giới.
KH
OA
C
NT
T –
Đ
H
KH
TN
Chương 2 Hệ điều hành Symbian
20
2.2 Kiến trúc tổng quan của HDH Symbian
Như đã giới thiệu, HDH Symbian là HDH được thiết kế theo đúng yêu cầu mà 1
HDH dành cho DTDD phải đạt được. Nó gồm 6 thành phần tạo thành các thiết kế
khác nhau cho các thiết bị :
o lõi của hệ điều hành, thường được gọi là kernel.
o một tập hợp các middleware (phần mềm giữa 2 hệ thống) cho các dịch
vụ hệ thống.
o một tập hợp các quản lý tài nguyên, gọi là application engines
o một khung chương trình để thiết kế giao diện người dùng
o các phương pháp để đồng bộ hóa với những máy khác.
o Cài đặt máy ảo Java.
Chính vì thế mà HDH Symbian là 1 hệ điều hành tương thích với nhiều mô hình
khác nhau cũng như tương thích với nhiều thiết kế giao diện người dùng, như trong
hình dưới đây :
Hình 2-1 Tính tương thích của HDH Symbian
KH
OA
C
NT
T –
Đ
H
KH
TN
Chương 2 Hệ điều hành Symbian
21
Do đó, ta nên hiểu hệ điều hành Symbian là nền tảng cho những thiết bị truyền
thông không dây, cung cấp những ứng dụng mạnh có các chức năng tích hợp từ
điện thoại không dây và dữ liệu. Mặt khác có thể triển khai ứng dụng trên nhiều
ngôn ngữ khác nhau và đa phương tiện, và còn có thể cho những thiết bị truyền
thông không dây và ứng dụng chạy trên nó.
Quả thật, đây là một hệ điều hành “thống trị” trong lĩnh vực DTDD vì cho đến ngày
nay thì Symbian đã được phổ biến và cài đặt trên nhiều DTDD cao cấp như Sony
Ecrission P800, P900, Nokia các dòng 9200 (9210, 9210i, 9290), Nokia 6600,
7650, 3650, 3660, 3620, Nokia N- Gage, Siemens SX1, Sendo X, Panasonic X700,
NTT DoCoMo Fujisu 2102V… BenQ, Motorola, Panasonic, Samsung, Sendo and
Siemens cũng đang dùng các giấy phép của HDH Symbian.
Ngoài ra Symbian còn cung cấp mạng toàn cầu cho những nhà cung cấp công cụ hổ
trợ và trung tâm huấn luyện Symbian Competence Centers và Symbian Training
Centers. Điều này làm cho các tổ chức và người phát triển phần mềm khác có thể
tham gia vào nền kinh tế mới này. Thêm vào đó, việc Symbian tin tưởng vào cộng
sự trong thị trường DTDD và tham gia vào các tổ chức như Open Mobile Alliance
và Java Community Process, cộng với cái nhìn tốt về công nghệ trong tương lai
giúp cho HDH Symbian có chỗ đứng vững chắc, xâm nhập vào các hệ thống điện
thoại khác nhau , trở thành HDH cho hầu hết các DTDD trên thị trường
2.3 Các đặc tính
Sở dĩ HDH Symbian là sự lựa chọn cho hầu hết các DTDD cũng chính vì các đặc
tính sau của nó:
o có 2 thiết kế phần mềm tham khảo: Quartz và Crystal.
o có 4 tùy chọn để phát triển chương trình: C++, Java, WAP, WEB.
o tích hợp thông tin, nhắn tin, duyệt tài liệu và điện thoại không dây.
KH
OA
C
NT
T –
Đ
H
KH
TN
Chương 2 Hệ điều hành Symbian
22
o Giao thức giao tiếp: TCP/IP, WAP, GSM, Bluetooth, IrDA, Serial.
o bảo mật toàn bộ, quản lý chứng nhận, bảo vệ những giao thức giao
tiếp, chứng nhận cài đặt ứng dụng.
o ứng dụng dồi dào và phù hợp: giao tiếp, thời khóa biểu, trình duyệt,
âm thanh, văn phòng, và hệ thống các ứng dụng hổ trợ….
o hổ trợ Unicode, dữ liệu nhập phức tạp, nhận diện chữ viết tay, thêm
font hay định dạng văn bản.
o đồng bộ hóa dữ liệu với những ứng dụng trên PC bằng Symbian
Connect.
Một loạt các đặc tính trên đã chứng tỏ lợi thế của HDH Symbian trong việc chạy
đua cho vị trí dẫn đầu trong các HDH dành cho DTDD. Ngoài ra, ta còn có thể
khẳng định nó là 1 HDH mạnh mẽ và ổn định. Bởi, trước tiên mỗi một tiến trình
được chạy trong không gian địa chỉ được bảo vệ của riêng nó. Điều đó làm cho bất
cứ một chương trình nào cũng không thể ghi đè lên vùng không gian địa chỉ của
chương trình khác, nguyên nhân gây lỗi ở các ứng dụng. Tiếp theo, ngay cả kernel
của Symbian cũng chạy trong một vùng địa chỉ được bảo vệ của riêng nó, vì thế các
lỗi của 1 chương trình không thể ngẫu nhiên ghi đè lên stack và heap của kernel và
đó là nguyên nhân gây lỗi của hầu hết các hệ thống mà hệ thống của Symbian
không cho phép điều đó xảy ra. Nếu chương trình cần chuyển dữ liệu cho một
chương trình khác, chúng sử dụng cơ chế client-server của Symbian OS, cơ chế này
cho phép các ứng dụng chuyển các dữ liệu bằng cách sử dụng hệ thống chuyển
thông điệp. Hệ thống chuyển thông điệp được thiết kế vì thế nó sử dụng rất ít tài
nguyên hệ thống có thể: message overhead rất nhỏ và sử chuyển dữ liệu giảm đến
mức tối thiểu.
Để biết được các đặc tính thế mạnh này của Symbian được tận dụng như thế nào, ta
sẽ tìm hiểu về các thiết kế của HDH Symbian ở phần tiếp theo.
KH
OA
C
NT
T –
Đ
H
KH
TN
Chương 2 Hệ điều hành Symbian
23
2.4 Các thiết kế của HDH Symbian
Đúng như mục tiêu của nó là hướng đến nhiều loại thiết bị nên để cho các thiết bị có
thể sử dụng được HDH Symbian, Symbian phát triển các thiết kế phần mềm khác
nhau cho các thiết bị di động và điện thoại. Có 3 thiết kế chính:
o keyboard-based mobile phone, điện thọai di động dùng keyboard (bàn
phím giống máy vi tính), là những thiết kế của thiết bị mà còn được
gọi là communicators- thiết bị thông tin có khả năng giao tiếp. DTDD
tiêu biểu cho thiết kế này là Nokia 9210.
Hình 2-2 DTDD Nokia 9210
o single-handed use mobile phones, là các thiết bị được thiết kế với khả
năng phức tạp về dữ liệu. Đây chính là dòng máy smartphones, điện
thoại thông minh với cả khả năng giao tiếp và dữ liệu. DTDD tiêu
biểu cho thiết kế này là Nokia 7650, có cả công nghệ GPRS, kết nối
Bluetooth và hình ảnh digital.
KH
OA
C
NT
T –
Đ
H
KH
TN
Chương 2 Hệ điều hành Symbian
24
Hình 2-3 DTDD Nokia 7650
o Pen-based mobile phones, là các thiết kế dòng communicators nhưng
không có keyboard.
Hình 2-4 DTDD Sony Ericsson
KH
OA
C
NT
T –
Đ
H
KH
TN
Chương 2 Hệ điều hành Symbian
25
Riêng đối với dòng Communicators có 2 thiết kế hoàn chỉnh là Quartz và Crystal.
o Crystal là sự phát triển của Psion Series 5 trong dòng sản phẩm
Nokia 9000 Communicator với sản phẩm gồm Nokia 9210, dựa vào
Version 6.0 công bố vào 11/2000. Nó duy trì và nâng cao về thiết bị
truyền tin không dây dựa trên keyboard của Symbian. Crystal cung
cấp sự tinh vi cho những người sử dụng chuyên nghiệp, thao tác bằng
bàn phím, màn hình 640x200, với soft keys, giao diện đồ họa, thích
hợp với nhiều ứng dụng.
Quartz là dạng bảng (tablet device), sử dụng pen (cây viết) với một
nửa màn hình VGA vừa vặn cầm tay (máy palm), có kích thước nhỏ,
giao diện đồ họa đúng ý người dùng và xây dựng trên việc định dạng
chữ viết.
Hình 2-5 Thiết kế Quartz
KH
OA
C
NT
T –
Đ
H
KH
TN
Chương 2 Hệ điều hành Symbian
26
2.5 Kĩ thuật chung(Generic Technology-GT) để phát triển hệ
điều hành Symbian
Như phần trên đã giới thiệu, HDH Symbian có rất nhiều thiết kế khác nhau. Nhưng
cho dù với thiết kế nào thì cũng dùng chung các hàm APIs cốt lõi và chung một
công nghệ - đó chính là Symbian’s Generic Technology. Symbian’s GT được thiết
kế riêng cho các thiết bị truyền tin không dây nên nó phải đảm bảo những yêu cầu
về việc sử dụng tài nguyên phải thật hiệu quả, đặc biệt là nguồn, RAM và ROM,
yêu cầu về việc truy cập tức thời đến dữ liệu của người dùng, tin cậy trong việc lưu
trữ dữ liệu người dùng. Nó phải thích ứng được với phần cứng của thiết bị, phải
giao tiếp tốt, tích hợp dược dữ liệu cá nhân, các ứng dụng trên thiết bị và dữ liệu
trên thiết bị khác.
Những thành phần chính của GT gồm có Base, Framework, Communication,
Messaging, Browsing, Connectivity và Java, như hình vẽ sau đây:
Hình 2-6 Thành phần chính của GT
Chúng ta sẽ lần lượt tìm hiểu các thành phần của GT tiếp theo sau đây:
KH
OA
C
NT
T –
Đ
H
KH
TN
Chương 2 Hệ điều hành Symbian
27
2.5.1 Base
Base cung cấp hệ thống thời gian chạy nền tảng, các công cụ để xây dựng nó và
bảo mật ở mức thấp nhất.
Hình 2-7 Thành phần của Base
Theo như trong hình vẽ, phần thứ nhất trong Base là EPOC kernel. EPOC kernel
làm việc trên chế độ độc quyền. Nó chiếm hữu tài nguyên như drivers (thiết bị điều
khiển thiết bị), thực thi việc quản lý nguồn, định vị bộ nhớ hệ thống cho nó và các
tiến trình không có độc quyền. Kiến trúc microkernel được sử dụng để cho hầu hết
code trong hệ thống chạy không độc quyền. Còn EPOC runtime nguyên thủy là
chạy trên bộ xử lý có kiến trúc ARM. Có 3 giao diện ứng dụng nhị phân được dùng
(ABIs- application binary interfaces). Đầu tiên là ARM4, có tốc độ tốt nhất và thích
hợp cho ROMs trên các máy tốc độ cao. Còn Thumb, hơi chậm hơn ARM4, sử
dụng tốt cho ROMs của máy rẻ tiền. Cuối cùng là ARMI. Đây là “interworking”
ABI cho phép đọan code xây dựng thêm chạy được trên cả Thumb và ARM4
ROMS. Dùng cho các đoạn code viết bổ sung. ARM4 và Thumb hổ trợ hiệu quả
tiến trình 16 bits, bao gồm cả Unicode nguyên thủy của EPOC.
Phần thứ hai có trong Base là thư viện người dùng (user library). Thư viện người
dùng hổ trợ các dịch vụ cho ứng dụng người dùng, bao gồm:
o tiến trình, tiểu trình, chương trình và quản lý bộ nhớ.
o Bắt lỗi và cleanup framework.
o chuỗi các kí tự và vùng đệm chứa dữ liệu nhị phân.
KH
OA
C
NT
T –
Đ
H
KH
TN
Chương 2 Hệ điều hành Symbian
28
o mảng và danh sách
o đối tượng động, đa nhiệm, chuyển sự kiện không đòi hỏi phí chuyển
đổi.
o kiến trúc client-server.
o các định dạng cho tiền tệ, ngày và thời gian.
o file server (máy chủ tập tin) hổ trợ RAM, ROM, flash, MMC, flash
RAM; VFAT.
o Bảo mật bao gồm các thuật toán mã hóa chuẩn và quản lý bản quyền.
Base cũng cung cấp các công cụ trên máy PC để hổ trợ cho các phần mềm và để
phát triển các thiết bị như trong hình sau:
Hình 2-8 Công cụ hổ trợ cho PC của Base
Trong đó, máy giả lập (emulator) là công cụ phát triển phần mềm chính, dùng để
tìm thấy và loại bỏ những sai sót trong chương trình trước khi giới thiệu sản phẩm,
chạy dưới HDH Window NT và 9x.
Còn các công cụ phát triển (deleloper tools) hổ trợ chương trình C++ trên môi
trường nguyên thủy và môi trường giả lập. Công cụ này được phát cho các nhà phát
triển phần mềm trong SDKs.
Và công cụ OEM hổ trợ khởi tạo ROM cho các thiết bị chạy trên hệ điều hành
Symbian. Các công cụ này đã được phân phối cùng với công cụ phát triển trong
OEM Customization Kits(OCKs).
KH
OA
C
NT
T –
Đ
H
KH
TN
Chương 2 Hệ điều hành Symbian
29
2.5.2 Framework
Phần cốt lõi làm cho HDH Symbian trở nên mạnh mẽ, có lẽ cũng nhờ GT có
framework hổ trợ rất đa dạng. Framework bao gồm các hàm APIs cho middlewares
cho quản lý dữ liệu, văn bản, clipboard, đồ họa, các tập tin nguồn, đa phương tiện,
chuẩn hóa quốc tế, và các tiện ích của giao diện người dùng đồ họa. Sau đây là hình
vẽ minh họa :
Hình 2-9 Framework
Thành phần đầu tiên trong framework là hệ quản lý cơ sở dữ liệu, hổ trợ nhiều
bảng, truy cập vào client-server để chia sẻ, cơ chế chuyển đổi và quay lui
(transaction và rollback) các hàm APIs của C++ và SQL để truy xuất và định nghĩa
dữ liệu, tìm chỉ mục và thực hiện các câu truy vấn. Bảng thường gồm 256 cột và
không giới chính xác về hạn kích thước bảng.
Phần thứ hai là đồ họa, bao gồm hổ trợ đồ họa căn bản, văn bản và ảnh bitmaps trên
những thiết bị tạo ảnh bitmap.
Về phần window server có chức năng chia sẻ màn hình, bàn phím và con chuột giữa
các ứng dụng. Còn Control Environment (CONE) chia sẻ 1 cửa sổ ứng dụng giữa
các thành phần của ứng dụng.
KH
OA
C
NT
T –
Đ
H
KH
TN
Chương 2 Hệ điều hành Symbian
30
Trong khi đó Uikon and Standard Eikon cung cấp GUI components, bao gồm
framework cho hộp thọai, các controls cụ thể, môi trường GUI, phụ thuộc vào các
thiết kế phần mềm cụ thể.
Mặt khác, Eikon server bao gồm giao diện người dùng mức hệ thống tức gồm các
báo động các sự kiện và thanh chỉ trạng thái. Standard Eikon là điểm xuất phát cho
việc chế tạo ra GUIs cho Quartz và Crystal.
Một vấn đề nữa là kiến trúc ứng dụng nhận biết các tập tin bằng UID và lọai MIME,
giải phóng và điều khiển các ứng dụng, và hổ trợ các đối tượng kèm theo.
Còn vùng nhớ clipboard hổ trợ chuyển dữ liệu giữa các ứng dụng.
Về phần media server thì hổ trợ âm thanh dạng WAV, AU, WVE và những định
dạng thô khác, hổ trợ hình ảnh dưới định dang JPEG, BMP, MBM, GIF, WBMP và
Nokia Smart Messaging (định dạng hình ảnh).
Ngoài ra Framework của Symbian còn hổ trợ cho văn bản ở cấp độ cao bao gồm
text content model and rendering, hổ trợ định dạng đoạn văn và kí tự, đồ họa kèm
theo, những kí tự địa phương trên thế giới…Và hổ trợ in ấn, thì bao gồm đĩa cài đặt
máy in cho những máy in thật sự, và các máy in từ PC nối tới qua Symbian
Connect. Luôn luôn có sẵn chế độ xem trước khi in.
Symbian cũng quan tâm đến chuẩn hóa quốc tế để hổ trợ cho văn bản chuẩn và
front-end processors (FEPs) cho văn bản được nhập vào bằng cách dùng định dạng
chữ viết tay và bàn phím( đối với các mã chữ Ả rập hay tiếng Hoa…).
Với những gì mà framework của Symbian hổ trợ thì muốn cài đặt 1 ứng dụng phải
bao gồm các thao tác như: giải nén gói thông tin, kiểm tra điều kiện tiên quyết, tháo
gở cài đặt và quản lý chữ kí kĩ thuật số.
2.5.3 Communications
Chính thành phần Communications này đã làm kiến trúc GT của Symbian trở nên là
sự lựa chọn cho các nhà sản xuất DTDD.
Hãy nhìn hình vẽ minh họa sau:
KH
OA
C
NT
T –
Đ
H
KH
TN
Chương 2 Hệ điều hành Symbian
31
Hình 2-10 Communications
Theo như trong hình vẽ thì Communications– cơ sở hạ tầng dựa trên 3 server cấp
thấp :
o the serial comms server, cung cấp APIs cho clients và cung cấp sự
thực thi cho ports, IR ports, modems…
o the sockets server, cung cấp sockets API cho clients và cài đặt như
TCP/IP, SMS datagrams, IrDA…
o the telephony server, cung cấp telephony API cho clients và generic
Hayes landline modem, và những dịch vụ GSM cơ bản.
Mỗi server có 1 nhà cung cấp API vì thế những socket hay telephony
implementations khác đều có thể đươc cung cấp.
Trong khi đó, wide-area communications hổ trợ:
o Networking: dial-up TCP/IP dùng PPP; bảo mật bằng TLS và SSL;
ứng dụng bao gồm Telnet và FTP .
o Telephony: GSM cho âm thanh, dữ liệu và fax, landline modems cho
dữ liệu và fax.
o WAP stack to WAP 1.1 level: WSP, WTP; WTLS; WDP, UDP và
SMS bearers supported.
Còn Personal-area communications thì hổ trợ:
KH
OA
C
NT
T –
Đ
H
KH
TN
Chương 2 Hệ điều hành Symbian
32
o IR: IrDA gồm IR tốc độ nhanh đến 4Mbps
o Bluetooth: dựa trên Bluetooth HCI (host controller interface), cung
cấp stack cho 1.0 specifications và Generic Access Profile, Serial Port
Profile, Headset Profile, Dialup Networking Profile (chỉ dành cho chế
độ khởi động) serial: RS232 .
2.5.4 Messaging
Một phần quả là rất quan trọng đối với những ai dùng DTDD là chuyển thông điệp.
Cho nên đây là phần không thể thiếu được trong GT của HDH Symbian.
Symbian thiết kế cơ chế này như trong hình vẽ sau:
Hình 2-11 Messaging
Theo Symbian, trao đổi thông điệp gồm thư điện tử qua mạng internet, tin nhắn
GSM, SMS và fax. Nhiều kiểu thông điệp khác nhau được hổ trợ bằng kiến trúc
plug-in dựa trên MTMs.
Ngoài ra, còn cung cấp cho ta hộp nhận thư và quản lý thư mục. Hộp thư chứa
thông điệp sẽ gửi thông điệp khi cần thiết
Còn IrOBEX object exchange được hổ trợ qua MTM.
2.5.5 Browsing
Với HDH Symbian thì DTDD không đơn giản chỉ để gọi điện hay gửi thông điệp
mà còn có thể lên mạng. Dường như máy PC + fax modem + dây điện thọai đều trở
thành quá lớn so với chiếc DTDD mặc dù nhỏ bé nhưng cũng đảm nhiệm cả chức
năng này của 3 thiết bị trên.
KH
OA
C
NT
T –
Đ
H
KH
TN
Chương 2 Hệ điều hành Symbian
33
Đó là do GT của Symbian hổ trợ cho WML và HTML browsers.
Hình 2-12 Browsing
Trong đó, WAP 1.1 browser hổ trợ WML và WMLScript.
Còn trình duyệt web (web browser) hổ trợ HTML 3.2 gồm frames, các Java applets
kèm theo; caching, HTTPS, bookmark và danh sách các liên kết cũ. Rendering
engine hổ trợ hiển thị MHTML . Plug-in viewers được hổ trợ.
2.5.6 Application Engines
Nối tiếp với những thành phần trên của kiến trúc GT trong HDH Symbian thì thành
phần này cũng không kém phần quan trọng. Nó cung cấp engines cho các ứng dụng
chuẩn Symbian. Trong đó, mỗi thiết kế cung cấp code UI của nó cho các ứng dụng
mà nó làm việc với.
Hãy nhìn hình minh họa sau:
Hình 2-13 Application Engines
KH
OA
C
NT
T –
Đ
H
KH
TN
Chương 2 Hệ điều hành Symbian
34
Đầu tiên phải kế đến là Contacts application. Đây là phần chính của thiết bị thông
tin không dây. Contacts engine là 1 kho dữ liệu của các cá nhân và nhóm. Kho dữ
liệu này được bảo trì bởi 1 server, nhờ đó các ứng dụng client có thể dùng chung.
Kế tiếp là The Agenda engine, có nhiệm vụ duy trì 1 kho dữ liệu của lịch trình và
chức năng nhớ các công việc cần làm. Nó cũng được bảo vệ bởi 1 server.
Còn spreadsheet engine hổ trợ nhiều worksheets, cách thức định giá và biểu đồ. Và
spell checker (kiểm tra lỗi chính tả) gồm 1 từ điển 100,000-word và từ đồng nghĩa.
Ngoài ra còn có Context-sensitive help luôn có sẵn, cùng với các công cụ công
cộng.
Nói chung có thể nói GT như là chứa kho dữ liệu thông tin về các thành phố và các
nước trên thế giới.
2.5.7 Java runtime
The Symbian platform cung cấp cài đặt đầy đủ của Java trong bộ J2ME, bao gồm
PersonalJava và bản cài đặt đầu tiên JavaPhone trên thiết bị không dây. Bản cài đặt
PersonalJava rất bao quát, gồm tất cả các đặc tính bắt buộc và tự chọn được định
nghĩa trong Personal Java Application Environment 1.1 specification.
Hình 2-14 Java runtime
Được biết các hàm APIs chính của GT, như là telephony (điện thoại), contacts
management (quản lý thông tin đồi tác), calendaring (lịch), datagram messaging
(chuyển thông điệp) và power monitoring được cung cấp rộng rãi trong JavaPhone
KH
OA
C
NT
T –
Đ
H
KH
TN
Chương 2 Hệ điều hành Symbian
35
APIs. Và Symbian sẽ duy trì khả năng tương thích với các ứng dụng viết cho các
môi trường Java như là MID profile và the KVM.
Ngoài ra Unicode được hổ trợ qua host interface. JVMDI cũng được hổ trợ trong
kiến trúc này.
Điều đáng lưu ý là bản cài đặt GT của Java được kiểm tra trên GUI. Các thiết kế,
như Crystal và Quartz, chạy cài đặt AWT trên mỗi thiết kế, và bằng cách cung cấp
các lớp đặc trưng trong mỗi thiết kế nhằm hổ trơ cho GUI.
2.5.8 Connectivity
Thành phần quan trọng cuối cùng phải kể đến trong kiến trúc của GT của Symbian
là Connectivity. Thành phần này có mặt đáp ứng cho nhu cầu chuyển đổi dữ liệu
giữa những thiết bị dùng HDH Symbian - ở đây là DTDD và máy PC thông thường.
Theo thiết kế của Symbian, Connectivity bao gồm EPOC-based và PC-based
components:
Hình 2-15 Connectivity
Trong đó, thành phần của khung chương trình của máy EPOC gồm:
o quản lý kết nối(connection manager) để bảo vệ và nối với máy PC
đang chạy Symbian connect.
o servers cho bản cài đặt dự phòng, lưu trữ và đồng bộ.
KH
OA
C
NT
T –
Đ
H
KH
TN
Chương 2 Hệ điều hành Symbian
36
o bộ chuyển đổi giữa EPOC và các định dạng của Microsoft cho các tài
liệu văn bản.
o EPOC rich text cho HTML converter .
o printer driver cho phép in ấn từ đến 1 máy in nối với máy PC.
Về phía PC, Symbian Connect cung cấp bản dự phòng và lưu trữ, nhiều chuyển đổi
định dạng tập tin, cài đặt ứng dụng và chức năng in ấn.
2.6 Các hàm APIs của HDH Symbian
Mặc dù đã nén đủ để để đưa vào bộ nhớ của DTDD, HDH Symbian được thiết kế
bao gồm đầy đủ các chức năng của một hệ điều hành. Nó cung cấp rất nhiều các tập
lệnh API, hỗ trợ nhiều hàm trước đây không có trong các hệ điều hành cho DTDD
trước đây, được minh họa trong sơ đồ dưới đây:
Hình 2-16 Các APIs mà HDH Symbian cung cấp
KH
OA
C
NT
T –
Đ
H
KH
TN
Chương 2 Hệ điều hành Symbian
37
2.6.1 Trao đổi thông điệp
HDH Symbian cung cấp các tập hàm API trao đổi thông điệp mở rộng. Những hàm
này cung cấp cho việc viết các ứng dụng tích hợp các hàm trao đổi thông điệp, mà
không cần can thiệp vào các API cấp thấp.
Ví dụ: Các lập trình viên có thể: viết các ứng dụng gửi và nhận email, SMS
messages và fax chỉ với số lượng code rất ít. Truy cập vào dữ liệu Giao dịch trong
ứng dụng của ta, bằng cách sử dụng các API Contacts database. Sử dụng hàm
Global Find API để tìm kiếm đoạn text trong văn bản được lưu trữ trong điện thoại.
2.6.2 TCP/IP và sockets API
HDH Symbian còn cung cấp socket API để truy cập đến các giao thức mạng. Nó
cho phép viết các ứng dụng nhận và gửi các dữ liệu xác định trên kết nối internet.
Symbian OS còn cho phép các giao thức vận chuyển khác nhau được sử dụng chứ
không riêng gì TCP/IP, mà còn có SMS hay hồng ngoại (infrared). Sự lựa chọn giao
thức nào để sử dụng được thực hiện trong quá trình khởi tạo trong mã nguồn của
ứng dụng, và những đoạn code còn lại thì cùng sự lựa chọn đó mà không cần quan
tâm.
2.6.3 Communication API(các hàm về giao tiếp)
Ngoài ra, HDH Symbian cung cấp phần mở rộng cho giao tiếp (communication) ở
tầng ứng dụng (Application) trong mô hình OSI như là trao đổi thông điệp
(messaging và sockets APIs). Một vài các đặc tính cao hơn của mà các nhà phát
triển có thể tận dụng như:
o Truy cập file giữa các thiết bị sử dụng IrOBEX API trên cổng hồng
ngoại (IrDA).
o Thực hiện các cuộc gọi các thiết từ xa sử dụng telephony API, với
phương tiện để khởi tạo, điều khiển và chấm dứt các cuộc gọi điện
thoại.
KH
OA
C
NT
T –
Đ
H
KH
TN
Chương 2 Hệ điều hành Symbian
38
o Truyền các hình ảnh giữa máy camera kỹ thuật số và Symbian OS
phones qua hồng ngoại.
o Truy cập dịch vụ web.
o Truy cập dịch vụ WAP qua chồng giao thức WAP và thao tác nội
dung văn bản WAP tại tầng ứng dụng bằng WAP Engine API.
2.6.4 Các ứng dụng và dịch vụ
HDH Symbian cho phép xây dựng các ứng dụng nhanh chóng bằng cách cung cấp
các máy ứng dụng có thể sử dụng lại, cũng như hàng loạt các dịch vụ ứng dụng.
Một vài trong các máy và dịch vụ bao gồm:
o Quản lý cơ sở dữ liệu quan hệ.
o hoạch định, lên danh sách kế hoạch làm việc.
o tiến trình về văn bản.
o in ấn và phóng đại.
o hổ trợ cho chuẩn vCard và vCalenda và giao thức IrOBEX .
o hổ trợ vùng đệm.
o các thư viện về chuỗi, mảng động và thư viện về phép toán.
o thư viện đồ họa và các hiệu ứng hoạt họa.
o server đa phương tiện, hổ trợ thu âm thanh và phát âm, chức năng
hình ảnh.
o hổ trợ Unicode và chuẩn hóa quốc tế.
2.6.5 Symbian là một hệ điều hành đa nhiệm:
Nếu như trong máy PC, Windows vốn tự hào nhất khi đánh bại HDH Dos là khả
năng đa nhiệm của nó thì HDH Symbian cũng đảm bảo được thế mạnh này. Thật
vậy, HDH Symbian là một hệ điều hành đa nhiệm đầy đủ. Mỗi chương trình chạy
như một tiến trình riêng biệt, Symbian OS cho phép các ứng dụng chạy song song.
KH
OA
C
NT
T –
Đ
H
KH
TN
Chương 2 Hệ điều hành Symbian
39
Mỗi tiến trình trong Symbian OS đều bao gồm 1 hay nhiều threads, và bộ điều phối
hệ thống cấp quyền sử dụng CPU cho các threads dựa vào sự ưu tiên. Có 2 cách để
cài đặt là Multithreads và co-operative multitasking với các lời gọi hàm bất đồng
bộ.
o Multithreading
Mỗi tiến trình trong Symbian OS mặc định có 1 thread, có thể thêm
các đoạn code vào ứng dụng để tạo thêm các thread khác để tạo một
ứng dụng multithread. Mỗi thread có thể được cấp cho một độ ưu tiên
tuyệt đối hoặc tương đối với độ ưu tiên của tiến trình cha, và bộ điều
phối hệ thống sẽ dựa vào nó để điều phối.
o Co-operative multitasking
Tuy nhiên, viết một chương trình multithread thì thường không cần
thiết bởi vì Symbian OS cũng cung cấp các lời gọi hàm không đồng
bộ cho hầu hết các dịch vụ hệ thống. Lời gọi không đồng bộ cho phép
các ứng dụng cài đặt nhiệm vụ cộng tác, và với nó thì thường không
cần phải sử dụng multithread.
Một ứng dụng tạo một lời gọi bất đồng bộ đến server để thi hành một
vài các công việc, như gửi và nhận dữ liệu qua các kết nối truyền
thông, hoặc lấy dữ liệu từ cơ sở dữ liệu. Việc sử dụng lời gọi bất đồng
bộ nghĩa là ứng dụng có thể làm việc khác trong khi chờ server hoàn
thành công việc được giao - giống như với multithread.
Khi server hoàn thành công việc nó sẽ nhắc ứng dụng. Không giống
như Multithread, tuy nhiên lời nhắc thì không được ưu tiên trước: nó
chuyển đến ứng dụng khi nó kiểm tra thấy rằng công việc đã hoàn
thành. Vì thế lời gọi bất đồng bộ cung cấp các nhiệm vụ cộng tác (co-
operative multitasking) hơn các nhiệm vụ ưu tiên trước (pre-emptive
multitasking).
KH
OA
C
NT
T –
Đ
H
KH
TN
Chương 2 Hệ điều hành Symbian
40
Sử dụng lời gọi bất đồng bộ trong ứng dụng thay cho multithread cho chúng ta 2 lợi
ích đáng kể. Thứ nhất, các lời gọi bất đồng bộ thì dễ lập trình hơn, bởi vì chúng
tránh những lập trình phức tạp về đồng bộ hóa giữa các tiểu trình (thread). Thứ hai,
các lời gọi bất đồng bộ tiết kiệm tài nguyên hệ thống bởi vì việc tạo một thread sẽ
chịu một gánh nặng về việc chuyển đổi tài nguyên trên kernel. Vì thế việc sử dụng
lời gọi bất đồng bộ (asynchronous calls) có nghĩa là vẫn thi hành được những công
việc của mình mà không làm tăng thêm gánh nặng chuyển đổi. Các lời gọi bất đồng
bộ (Asynchronous calls) thường được gắn vào mô hình lập trình trong hệ điều hành
Symbian được biết đến như là đối tượng động (active objects). Các đối tượng động
được sử dụng nhiều trong hệ điều hành Symbian khi truy cập đến server hệ thống,
server hệ thống này cung cấp nhiều các hàm chính yếu của hệ điều hành. Ngay cả
server cũng dùng active object để cài đặt. Các server hệ thống bao gồm file server,
window server, messaging server, telephony server, socket server, font và bimap
server, database server, serial communications server, WAP server, multimedia
server … Đối với các nhà phát triển trên hệ điều hành Symbian, truy cập đến các
server này thông qua đối tượng động, nó cung cấp các công cụ cho cả sự phát triển
ứng dụng và hệ thống.
2.6.6 Các mã lệnh (code) có thể dùng lại được.
Một ưu đãi mà Symbian cung cấp cho những nhà lập trình trên nó là việc sử dụng
lại mã nguồn có sẵn. Thực vậy, khi một chương trình được load, hệ điều hành chắc
chắn rằng tất cả các DLL mà nó sử dụng cũng được load. Các DLL hệ thống được
lưu trữ trong bộ lưu trữ vĩnh cữu (permanent storage) có thể được thi hành tại chỗ,
vì thế không cần phải load lên bộ nhớ chính. DLLs mà được lưu trữ trong thẻ nhớ
mở rộng thì cần phải load lên bộ nhớ chính, nhưng nếu chúng đã được load lên bởi
một tiến trình khác, thì chúng không cần phải load nữa.
Hơn nữa, thiết kế của API trong hệ điều hành Symbian cho phép code được sử dụng
lại ngay khi viết chương trình. Rất hiếm khi phải viết lại từ đầu, nếu có thì cũng
không bắt các lập trình viên viết lại các đoạn code để cài đặt ở dịch vụ cấp thấp. Do
đó với cách đó, một chương trình mới có thể có rất ít code.
KH
OA
C
NT
T –
Đ
H
KH
TN
Chương 3 Vấn đề phát triển ứng dụng trên Symbian
41
Chương 3 Vấn đề về phát triển ứng dụng trên
hệ điều hành Symbian
Khi muốn phát triển một ứng dụng trên HDH Symbian thì 2 vấn đề cần phải quan
tâm tới là vấn đề về bộ nhớ và kiến trúc của một phần mềm. Vì như ta biết HDH
Symbian được sử dụng chính yếu và rộng rãi trên DTDD là những thiết bị có bộ
nhớ vô cùng hạn chế. Phần ngay tiếp sau sẽ giới thiệu một số thông tin về 2 vần đề
quan trọng này.
3.1 Bộ nhớ trong Symbian phone
Trong Symbian OS phones, bộ lưu trữ thường trú được cài đặt bằng cách sử dụng
flash memory và thẻ nhớ mở rộng (expansion cards) (MMC trên Nokia 9200
Series), trong khi toàn bộ RAM được sử dụng cho bộ nhớ chính.
Xem hình minh họa sau
Hình 3-1 Bộ nhớ trong Symbian phones
KH
OA
C
NT
T –
Đ
H
KH
TN
Chương 3 Vấn đề phát triển ứng dụng trên Symbian
42
Hình vẽ minh họa trên đã cho thấy việc phân chia bộ nhớ và nhiệm vụ của chúng
trong Symbian phones. Flash memory là bộ lưu trữ vĩnh cửu, dùng để lưu trữ mã
nguồn của hệ điều hành. Còn RAM dùng để lưu trữ stack và heap của tiến trình và
stach, heap của hệ điều hành, các biến toàn cục. Ngoài ra, còn có MMC và flash
memory để lưu trữ dữ liệu người dùng, mã nguồn chương trình và dữ liệu dùng bởi
hệ thống.
Vì thế, để tăng hiệu quả bộ nhớ, Symbian OS và Palm OS đều sử dụng cơ chế “thi
hành tại chỗ” (execute inplace). Trên PC, bất cứ chương trình nào, ngay cả hệ điều
hành, đều phải load lên bộ nhớ chính (RAM), kết quả là khi một chương trình thi
hành sẽ phải copy 2 lần code: một lần lên đĩa và một lần lên RAM.
Cả Palm OS và Symbian OS đều tránh được phải tạo lại bản copy của code lên
RAM cho hệ điều hành: thay vào đó, chúng sử dụng cơ chế thi hành tại chỗ. Nghĩa
là đoạn code chương trình có thể được thi hành mà không cần copy vào bộ nhớ
chính, và điều đó sẽ tiết kiệm được tài nguyên bộ nhớ, là cái giới hạn nhất của điện
thoại di động và thiết bị cầm tay.
3.2 Kiến trúc của 1 phần mềm trên Symbian
3.2.1 Kiến trúc thư viện : (Library Architecture)
Một ứng dụng trên Symbian thưòng được chia làm 2 phần: phần giao diện ứng dụng
(application UI) và phần mô hình ứng dụng (application model).
Phần giao diện bao gồm các yếu tố đồ họa và nhận dữ liệu từ người dùng, còn phần
mô hình bao gồm dữ liệu của ứng dụng và các thuật giải.
Với kiến trúc này sẽ giúp cho việc cài đặt, thử nghiệm 2 phần được tiến hành dễ
dàng hơn.
Điều này được minh họa như trong hình sau:
KH
OA
C
NT
T –
Đ
H
KH
TN
Chương 3 Vấn đề phát triển ứng dụng trên Symbian
43
Hình 3-2 Kiến trúc thư viện
Phần mô hình ứng dụng thường được cài đặt riêng biệt thành một thư viện DLL.
Còn phần giao diện sẽ được cài đặt dựa trên các thành phần GUI của Crystal.
Thành phần chính là một lõi chung, tên là Uikon, và một thành phần khác được xây
dựng trên nó tên là Ckon.
Uikon và Ckon là lớp trên của 2 thành phần khác: UI Control Framework (hay còn
gọi là Cone), và Application Architecture (AppArc). Thư viện GUI sẽ cung cấp
những bản cài đặt (implementation) của lớp đối tượng trừu tượng này .
Theo đó, UI Control Framework định nghĩa các khái niệm UI ở mức đơn giản.
Còn Application Architecture định nghĩa kiến trúc cho ứng dụng chẳng hạn như
file…
Đối với giao diện Crystal GUI, Uikon và Ckon là một tập các file DLL và file
resource. Thư viện này cung cấp cho lập trình viên một bộ khung để lập trình, trong
đó, tất cả các ứng dụng đều sử dụng bộ khung này, ví dụ như khởi tạo, các phần
code có sẵn, truy cập file…và một tập các thành phần giao diện chuẩn, bao gồm các
control, dialog…
KH
OA
C
NT
T –
Đ
H
KH
TN
Chương 3 Vấn đề phát triển ứng dụng trên Symbian
44
Hình sau minh họa cho Uikon và Ckon:
Hình 3-3 Lớp Ckon và Uikon trong kiến trúc thư viện
3.2.2 Kiến trúc lớp của ứng dụng : (Application Class Architecture)
Một bộ khung của ứng dụng bao gồm 4 đối tượng : application, document, AppUI,
và AppView.
Ta có sơ đồ sau:
Hình 3-4 Kiến trúc lớp của ứng dụng
KH
OA
C
NT
T –
Đ
H
KH
TN
Chương 3 Vấn đề phát triển ứng dụng trên Symbian
45
Chẳng hạn có CExample- là tên của ứng dụng, được viết bởi lập trình viên. Các lớp
CEik- được cung cấp bởi Uikon Core API. CCoeControl và CCoeAppUi thuộc về
UI Control Framework. CApaDocument và CApaApplication thuộc về AppArc.
Trong đó:
o Lớp application định nghĩa các thuộc tính của ứng dụng: UID, tiêu đề
và tạo mới một document.
o Lớp document trình bày mô hình dữ liệu cho ứng dụng. Trong các
ứng dụng về tập tin, nó thực hiện các thao tác đọc/ghi dữ liệu. Nó tạo
một yêu cầu của tài liệu bằng cách tạo appUI.
o appUi là nơi tập trung các lớp giao diện. Nó tạo và sở hữu các control
để hiển thị dữ liệu, và bắt tất cả các sự kiện từ control.
o AppView có thể xem như là một control để hiện thị dữ liệu và tương
tác người dùng. Một ứng dụng phức tạp có thể có nhiều cách để hiển
thị dữ liệu, do đó sẽ có nhiều view.
Tuy nhiên đối với kiến trúc này thì có một số điểm cần lưu ý khi lập trình :
o Sự phân cách giữa xử lý dữ liệu và hiển thị dữ liệu.
o Sự thống nhất giữa xử lý file và các tài liệu.
o Có thể nhúng ứng dụng khác vào ứng dụng hiện thời.
o Hướng sự kiện.
Như vậy thì cấu trúc của một ứng dụng có thể biểu diễn như trong sơ đồ sau :
KH
OA
C
NT
T –
Đ
H
KH
TN
Chương 3 Vấn đề phát triển ứng dụng trên Symbian
46
Hình 3-5 Liên hệ giữa các thành phần trong kiến trúc của ứng dụng
Trình tự thực hiện các thành phần trong ứng dụng là : Application tạo một
document, rồi đến lượt document tạo App UI, AppUI tiếp tục tạo View.
Khi AppUI nhận lệnh (command), AppView nhận và hiển thị dữ liệu. Document
chứa mô hình được hiển thị bởi view.
3.3 Các ngôn ngữ có thể dùng phát triển ứng dụng trên HDH
Symbian
Phần mềm viết trên HDH Symbian, version 6.0 có thể được phát triển bằng 4 ngôn
ngữ:
o EPOC C++ : HDH Symbian được viết bằng C++. Do đó, dùng
EPOC C++ thì rất hiệu quả và có thể truy cập đến tất cả các hàm APIs
mà HDH Symbian có cung cấp.
o Java: Java 2, Micro Edition, với rich profiles. PersonalJava 3.0 bao
gồm trọn bộ đầy đủ hệ quản lý dữ liệu Java và các hàm APIs cho giao
tiếp, đồ họa AWT. JavaPhone 1.0 cung cấp khả năng truy cập ở các
KH
OA
C
NT
T –
Đ
H
KH
TN
Chương 3 Vấn đề phát triển ứng dụng trên Symbian
47
thiết bị không dây, chẳng hạn như contacts, schedule, telephony,
power monitoring ….
o WAP: HDH Symbian version 6.0 cài đặt WAP version 1.1
communication stacks và browsers standars
o HTML: trình duyệt web của Symbian version 6.0 cài đặt HTML 3.2
với đầy đủ bộ khung, HTTPS và nhúng Java applets.
3.3.1 Phát triển ứng dụng bằng C++:
Mã nguồn cho 1 project viết bằng C++ bao gồm:
o C++ source file( .cpp, .h)
o tập tin nguồn cho resource của chương trình ( resource files, bitmap,
icons)
o những tập tin hệ thống của project: tập tin chứa thông tin xây dựng
(bld.inf), 1 hay nhiều makefile specifications ( .mmp)
SDK của cả Quartz và Crystal của Symbian cung cấp các công cụ để xây dựng
chương trình bằng C++:
o công cụ xây dựng các makefiles và điều khiển các tác vụ mà được
điều khiển bời tiến trình xây dựng (build process).
o công cụ để chuyển makefile specifications thành makefile hay
workspace của Visual C++ IDE.
o Trình biên dịch GNU C++, phiên bản 98r2, thiết kết riêng cho các yêu
cầu của EPOC và xây dựng các chương trình cho các máy hoạt động
dựa trên ARM.
o Trình biên dịch và chuyển đổi các resources của chương trình
(resource files, bitmap, icons)
o Help compiler
KH
OA
C
NT
T –
Đ
H
KH
TN
Chương 3 Vấn đề phát triển ứng dụng trên Symbian
48
o Công cụ trợ giúp thường trú, để chuyển phần trợ giúp viết cho EPOC
R5 thành cho Quartz và Crystal.
o tập tin cài đặt từ hệ thống cài đặt của Symbian.
o App wizard
o GUI icon và application information file builder.
o Perl, ngôn ngữ scripting được dùng bởi rất nhiều công cụ.
Để xây dựng và debug chương trình bằng mày giả lập thì cần phải có Microsoft
Visual C ++,version 6.0.
3.3.2 Phát triển ứng dụng bằng Java
Mã nguồn cho 1 project viết bằng Java bao gồm:
o Java source file( .java)
o Các tập tin cần thiết cho việc xác định ứng dụng sẽ được cài đặt như
thế nào ( .app, .txt)
o Sử dụng JavaDoc cho việc documeting APIs và implemention.
SDK của cả Quartz và Crystal của Symbian cung cấp các công cụ để xây dựng
chương trình bằng Java:
o batch files để xây dựng các tập tin JAR cho các máy giả lập.
o GUI icon và application information file builder.
o GUI icon và application information file builder, như trong C++,
nhưng có hổ trợ riêng cho các yêu cầu của Java.
o tập tin cài đặt từ hệ thống cài đặt của Symbian.
Để xây dựng và debug chương trình bằng mày giả lập thì cần phải có môi trường
lập trình Java chuẩn. Còn để phát triển và debug bằng phương pháp Java nguyên
thủy cần có SDK của Quarzt hay Crystal C++: SDKs cho Java bao gồm phần bổ
KH
OA
C
NT
T –
Đ
H
KH
TN
Chương 3 Vấn đề phát triển ứng dụng trên Symbian
49
sung C++ SDKs chứa phần hổ trợ cho build-time của phương phát Java nguyên
thủy. Ta vẫn có thể dùng thư viện của Java mà không cần SDKs của C++.
Ngoài ra, SDKs của quarzt và Crystal cung cấp hổ trợ đầy đủ cho việc xây dựng các
ứng dụng.
3.3.3 Phát triển ứng dụng bằng WAP và HTML:
Cũng có thể nhưng rất hiếm khi dùng 2 ngôn ngữ này để xây dựng phần mềm trên
HDH Symbian.Cách làm cũng giống như C++ và Java:
o viết trang HTML hay WML
o sao chép những trang này đến thư mục thích hợp trong máy giả lập.
o dùng ứng dụng WAP hay WEB trên mày giả lập để biên dịch các
trang này.
o sửa lại cho thật đúng và biên dịch những trang này trên máy giả lập.
o dùng hệ thống cài đặt để cài đặt những trang này trên thiết bị thật.
Thường thì người ta phát triển nội dung HTML và Wap bằng server và sau đó biên
dịch trên thiết bị thật. Các thiết bị dùng HDH Symbian, và máy giả lập đều có thể
nối mạng nội bộ với nhau bằng cách dùng Windows NT Remote Access Services
(RAS), để giảm bớt giá thành kiểm tra và tăng tốc độ kiểm tra lên.
KH
OA
C
NT
T –
Đ
H
KH
TN
Chương 4 Xây dựng ứng dụng VNSmartType
50
Chương 4 Xây dựng ứng dụng VNSmartType
4.1 Giới thiệu
Ý tưởng : Như đã đề cập ở chương 1, với các thiết bị cầm tay thông minh như
Pocket PC, smartphone nói chung, hệ điều hành Symbian 6.0 và Nokia 9210 nói
riêng dường như chưa có một ứng dụng hỗ trợ soạn thảo Tiếng Việt hoàn chỉnh.
Một bộ gõ Tiếng Việt, một số chức năng sao cho gõ soạn thảo nhanh chóng tiện lợi
đối với những người sử dụng dạng điện thoại Crystal3 vẫn còn là điều mơ ước. Với
các phím bấm tương đối nhỏ, soạn thảo không thể nhanh, việc có các chức năng hỗ
trợ quả là rất quý giá và tiện lợi vô cùng. Đó là những ý tưởng ban đầu để hình
thành nên VNSmartType. Một bộ gõ Tiếng Việt hoàn chỉnh, không những thế mà
còn là một công cụ hỗ trợ soạn thảo đa dụng, dường như bạn không cần phải gõ
từng chữ một với nhiều dấu rườm rà phức tạp vốn là đặc thù của Tiếng Việt.
4.2 Các chức năng
Trước hết VNSmartType phải là một bộ gõ tiếng việt, tương tự như Vietkey hay
Unikey trên PC. Với vai trò là “một bộ gõ tiếng Việt”, VNSmartType phải hỗ trợ
các kiểu gõ tiếng Việt khác nhau như chúng ta đã biết trên PC, đó là 3 kiểu gõ thông
dụng nhất hiện nay4:
VNI
TELEX
VIQR
Và hỗ trợ toàn bộ bằng bảng mã Unicode (đây có thể xem là một trong những đặc
tính mạnh mẽ của hệ điều hành Symbian 6.0). Với 3 kiểu gõ thông dụng này hầu
3 Dạng điện thoại có phần cứng tương tự máy tính cá nhân
4 Chi tiết về các kiểu gõ xin mời tham khảo phần phụ lục.
KH
OA
C
NT
T –
Đ
H
KH
TN
Chương 4 Xây dựng ứng dụng VNSmartType
51
như đã đáp ứng nhu cầu của người dùng, đặc biệt cho người dùng cảm giác gần gũi
với chiếc máy tính cá nhân quen thuộc.
Tuy nhiên, không phải không có những trở ngại, chúng ta hãy xem lại hình minh
hoạ sau đây :
Hình 4-1 DTDD Nokia 9210
Dễ dàng nhận thấy với Nokia 9210, sự hạn chế về các thiết bị là rất rõ ràng: bàn
phím nhỏ, khó bấm, một số nút để soạn thảo nhanh trong PC bị lược bỏ, chính vì
vậy dù đã hỗ trợ soạn thảo tiếng Việt khá hoàn chỉnh thì người dùng vẫn cảm thấy
thật sự khó khăn khi thao tác.
Chính vì vậy, một bộ gõ tiếng Việt cũng chưa thể khắc phục những hạn chế mà thiết
bị đem lại cho người dùng.
Vậy chúng ta cần gì ?
Chúng ta cần một chức năng có khả năng tự động hoàn chỉnh từ khi chúng ta chỉ
đánh một vài từ đầu tiên (AutoComplete). Ví dụ chỉ cần đánh từ “ph” sẽ cho chúng
ta một loạt các từ bắt đầu bằng “ph” như “phở gà”, ”phong thuỷ”, ”phương án”,
”phi vật thể”, ”phiếu thu tiền”…, và chỉ cần nhấn một phím, ta sẽ có được từ mình
mong muốn.
KH
OA
C
NT
T –
Đ
H
KH
TN
Chương 4 Xây dựng ứng dụng VNSmartType
52
Chúng ta cần một chức năng có thể viết ra một từ thật dài mà ta thường hay dùng
khi ta chỉ đánh một từ tắt của nó(AutoCorrect), ví dụ chúng ta chỉ cần đánh “it” lập
tức cụm từ “dài ngoằn nghèo” “information technology” hay “Công nghệ thông
tin” sẽ xuất hiện.
Nhận xét : Với 2 chức năng trên, chúng ta cảm thấy vô cùng tiện lợi và không cần
phải gõ quá nhiều, việc này có ý nghĩa thật quan trọng trong thời đại công nghệ hiện
nay khi công việc luôn dồn dập cấp bách và cần sự ngắn gọn, tiện lợi, nhanh chóng.
Tiến xa hơn một bước, với Tiếng Việt chúng ta thường mất công bỏ các loại dấu
khác nhau như huyền, sắc, ngã, hỏi, nặng… Việc ấy càng mất công khi thiết bị cầm
tay vốn là quá nhỏ. Với AutoComplete và AutoCorrect chúng ta không cần đánh
nhiều nhưng chúng ta cũng không thể lưu tất cả những từ của Tiếng Việt được, đó
là chuyện không thể vì hạn chế về bộ nhớ xử lý….
Hai chức năng cơ bản trên chỉ hỗ trợ “những từ chúng ta thường dùng nhất”, xin
nhắc lại “thường dùng nhất” mà thôi chúng ta không thể lạm dụng lưu quá nhiều từ
sẽ dẫn tới xử lý chậm và tốn hao bộ nhớ.
Chính vì vậy VNSmartType hỗ trợ thêm chức năng “tự động thêm dấu văn bản”
(Automatic Add Accents), đây là một chức năng khá thông minh, giúp chúng ta rất
nhiều đặt biệt là khi có sự kết hợp với 2 chức năng hỗ trợ trên. Thử tượng tưởng
thay vì chúng ta gõ “Cộng hoà xã hội chủ nghĩa Việt Nam” chúng ta chỉ cần gõ các
chữ không dấu “Cong hoa xa hoi chu nghia Viet Nam” lập tức câu ấy sẽ được thêm
các dấu Tiếng Việt nhanh chóng.
Có chức năng thêm dấu văn bản thì cũng phải có chức năng xoá dấu văn bản
(Automatic Remove Accents), nhiều người nói rằng chức năng này vô lý quá, vì
người Việt ai cũng muốn đọc văn bản có dấu chứ ai lại muốn đọc văn bản không
dấu bao giờ !
Nhưng hãy nghĩ kỹ ! Với các đời điện thoại di động hiện nay, không phải máy nào
cũng hỗ trợ Unicode, tức là rất nhiều máy không thể hiển thị tin nhắn Tiếng Việt,
chính vì vậy nếu muốn gửi tin nhắn cho các loại máy khác nhau chúng ta nên có
KH
OA
C
NT
T –
Đ
H
KH
TN
Chương 4 Xây dựng ứng dụng VNSmartType
53
chức năng thêm dấu cũng như xoá dấu để các máy khác nhau đều nhận được tin
nhắn đó. Càng quan trọng hơn nếu đó là một lời nhắn cấp bách !
Tóm lại : VNSmartType có các chức năng sau đây :
- Bộ gõ Tiếng Việt hoàn chỉnh
- “Bộ tứ” chức năng hỗ trợ thông minh :
o AutoComplete
o AutoCorrect
o Automatic Add Accents
o Automatic Remove Accents
- Cùng với những chức năng người dùng khác như cho phép tìm, thêm xoá,
sửa các từ trong list các từ của các chức năng…..
4.3 Kỹ thuật chạy nền (Background)
Trước hết, một bộ gõ tiếng Việt phải đáp ứng các yêu cầu cần thiết sau :
Chạy đồng thời với các chương trình khác, để bất cứ đang ở ứng dụng soạn thảo nào
có hỗ trợ Unicode đều phát huy tác dụng được.
Bắt được phím bấm của các chương trình khác để từ đó tuỳ biến xử lý hiển thị tiếng
Việt.
Như vậy việc cần làm của chúng ta là phải tìm kiếm API hỗ trợ việc chạy đồng thời
với các chương trình khác (nói ngắn gọn là chạy nền – chạy background) và tìm
cách bắt tất cả các phím của các ứng dụng đồng thời với bộ gõ của chúng ta.
Việc chạy nền không quá khó khăn trong Symbian 6.0 vì hệ điều hành này đã hỗ trợ
các API của lớp CAcitve được cụ thể hoá cho Dialog có tên là CancelDialog đã xây
dựng sẵn. Đây là dialog được xây dựng kế thừa của lớp CActive, đối tượng được
KH
OA
C
NT
T –
Đ
H
KH
TN
Chương 4 Xây dựng ứng dụng VNSmartType
54
đóng gói để yêu cầu những dịch vụ không đồng bộ và để bắt tất cả các sự kiện. Sử
dụng CancelDialog nhằm tạo thành 1 long running task dùng để chạy nền.
Đây là một hỗ trợ vô cùng ý nghĩa đối với người lập trình vì các API hỗ trợ trong
Symbian đều rất khó khăn cho người lập trình vì tính phức tạp và khó thử nghiệm,
vì thế việc có sẵn vài lớp và ứng dụng, nhất là những vấn đề liên quan đến tương tác
người dùng là vô cùng quý giá.
Như vậy, chúng ta đã giải quyết được vấn đề thứ nhất là vấn đề chạy background
nhờ sử dụng dialog có sẵn là CancelDialog của Symbian cung cấp.
4.4 Kỹ thuật bắt phím
Như đã nói ở trên, việc bắt các phím của các ứng dụng khác là yêu cầu bắt buộc của
một bộ gõ tiếng Việt.
Symbian cung cấp một tập API phục vụ cho việc xen vào bắt các phím của các ứng
dụng đang chạy, sử dụng cơ chế đồng hành của các tiến trình. Sau đây là một số
khái niệm cũng như tổng quan một số lớp mà chúng ta sử dụng để xử lý bắt phím .
(Chi tiết hơn xin tham khảo phần phụ lục).
Window Server Session
Khi một ứng dụng bắt đầu thì Symbian coi như đó là một session. Sesion này được
quản lý bởi Window Server, do đó Window Server Session chính là nơi lưu trữ các
thông tin về cửa sổ…Để lấy thông tin về cửa sổ ta có thể dùng các lớp thành viên
của Window Server Client Side (tham khảo thêm trong SDK Documentation).
Trong ví dụ này, chúng ta chỉ sử dụng lớp RWsSession và RWindowGroup.5
Window Group
Khi một session bắt đầu thì các cửa sổ được xem như là một Window Group. Để
quản lý các thông tin này Symbian dùng lớp RWindowGroup.
5 Chi tiết hơn xin tham khảo phần Phụ lục – RwsSession , RWindowGroup
KH
OA
C
NT
T –
Đ
H
KH
TN
Chương 4 Xây dựng ứng dụng VNSmartType
55
CActive, CActiveScheduler
Một đối tượng được quản lý trong scheduler được gọi là “active object” và lớp để
biểu diễn đối tượng này là CActive. Để diễn tả cho bộ điều phối, Symbian cung cấp
lớp CActiveScheduler6.
Cách bắt phím
Để bắt được phím đầu tiên ta phải lấy được bộ điều phối (scheduler) của Symbian.
Sau đó ta thêm vào scheduler hàm xử lý để bắt tất cả sự kiện phím rồi xử lý. Việc
này cũng tương tự như Hook trên Windows.Để bắt sự kiện phím ta làm những bước
sau :
o Kết nối Window Server Session để lấy các thông tin về các cửa sổ.
o Từ Window Server Session lấy Window Group.
o Từ Window Group ta sẽ “capture” các phím mà cần phải xử lý.
Sau các bước này, khi có sự kiện phím xảy ra mà phím này ta đang “capture” thì
thông điệp này sẽ được gửi đến hàm xử lý. Sau đây là source code minh họa:
// Khai báo lớp CKeyboardScheduler để lấy bộ scheduler.
class CKeyboardScheduler : public CActiveScheduler
{
};
// Khai báo “active object” để chèn đối tượng này vào bộ điều phối (scheduler).
class CLongProcess : public CActive
{
public:
….
6 Chi tiết hơn xin tham khảo phần Phụ lục – CactiveScheduler
KH
OA
C
NT
T –
Đ
H
KH
TN
Chương 4 Xây dựng ứng dụng VNSmartType
56
// hàm chính dùng để đăng ký và xử lý
void ConstructL();
void RunL();
void CaptureASCIIiKey();
void CancelCaptureASCIIKey()
;…..
private:
…..
// các biến window server session, window group
RWsSession iWs;
RWindowGroup iWg;
….
}
Sau đây là bản cài đặt hoàn chỉnh :
Void CLongProcess::ConstructL()
{
// con trỏ đến bộ điều phối sẽ lấy được
CKeyboardScheduler* runner;
// Kết nối tới window server
User::LeaveIfError(iWs.Connect());
// Lấy window group của session
KH
OA
C
NT
T –
Đ
H
KH
TN
Chương 4 Xây dựng ứng dụng VNSmartType
57
iWg=RWindowGroup(iWs);
// Tạo các thông số cần thiết cho window group
User::LeaveIfError(iWg.Construct((unsigned long)this,EFalse));
// “Capture” các phím cần thiết
CaptureASCIIkeys();
// Lấy bộ điều phối hiện thời, nếu chưa có install mới
if(!CActiveScheduler::Current())
{
Runner=new CKeyboardScheduler();
if (Runner)
CKeyboardScheduler::Install(Runner);
}
else
Runner=(CKeyboardScheduler*)CActiveScheduler::Current();
// Thêm đối tượng của chúng ta vào bộ điều phối.
Runner->Add(this);
}
void CLongProcess::CaptureASCIIKey()
{ int i. j;
// Các phím cần bắt từ FromKey->ToKey
for (i=Fromkey;i<=Tokey;i++)
{
CapturedKeys[j]=iWg.CaptureKey(i,0,0);
KH
OA
C
NT
T –
Đ
H
KH
TN
Chương 4 Xây dựng ứng dụng VNSmartType
58
j++;
}
// bắt luôn 2 phím backspace và enter
CapturedKeys[j]=iWg.CaptureKey(8,0,0);
j++;
CapturedKeys[j]=iWg.CaptureKey(13,0,0);
}
void CLongProcess :: CancelCaptureASCIIKey()
{
int i;
for(i=0;i<=NoOfCapturedKeys;i++)
iWg.CancelCaptureKey(CapturedKeys[i]);
}
// Hàm xử lý khi có sự kiện xảy ra
void CLongProcess:RunL()
{
TWsEvent iWsEvent;
int rFocus;
// Lấy thông tin của sự kiện
iWs.GetEvent(iWsEvent);
TInt eventType=iWsEvent.Type();
// lấy window đang được focus
KH
OA
C
NT
T –
Đ
H
KH
TN
Chương 4 Xây dựng ứng dụng VNSmartType
59
rFocus=iWs.GetFocusWindowGroup();
// chỉ nhận sự kiện phím
switch (eventType)
{
case EEventKey:
// Đưa về sự kiện phím
TKeyEvent& key = *iWsEvent.Key();
// tạm thời giải phóng các phím để tránh gửi lặp lại
CancelCaptureASCIIKey();
// Xử lý
Xử lý tiếng việt-phần 4
// Kết thúc xử lý, bắt lại các phím
CaptureASCIIkeys();
default:
break;
}
// gửi yêu cầu nhận sự kiện
iWs.EventReady(&iStatus);}
KH
OA
C
NT
T –
Đ
H
KH
TN
Chương 4 Xây dựng ứng dụng VNSmartType
60
4.5 Xử lý Tiếng Việt
Chúng ta đã chuẩn bị tất cả, 2 yêu cầu của một bộ gõ ta đã chuẩn bị xong, bây giờ
việc còn lại là xử lý hiển thị tiếng Việt theo bảng mã Unicode.
Phần xử lý tiếng Việt sử dụng một số mảng để lưu trữ các ký tự tiếng Việt, các ký
tự có thể làm thay đổi dấu của kí tự khác theo kiểu đánh Telex7 (các kiểu đánh khác
cũng tương tự nhưng chỉ thay đổi các ký tự làm đổi dấu), và các mảng lưu các ký tự
tiếng việt được phân loại theo dấu của nó.
_ToConvert_ch[NoToConvert]={'a','A','d','D','e','E','o','O','u','U','[',']','f','F','j','J','r','R',
's','S','x','X','z','w','W'};
Mảng vietchars gồm các ký tự: a, â, ă, e, ê, i, o, ô, ơ, u, ư, y; A, Â, Ă, E, Ê, I, O, Ô,
Ơ, U, Ư, Y
int _vietchars[24]= { 97, 226, 259, 101, 234, 105, 111, 244, 417, 117, 432, 121,
65, 194, 258, 69, 202, 73, 79, 212, 416, 85, 431, 89};
Mảng vietsac gồm các ký tự: cũng gồm các ký ở trên nhưng có thêm dấu sắc
int _vietsac[24]= { 225, 7845, 7855, 233, 7871, 237, 243, 7889, 7899, 250, 7913,
253, 193, 7844, 7854, 201, 7870, 205, 211, 7888, 7898, 218, 7912, 221};
Mảng viethuyen gồm các ký tự: cũng gồm các ký ở trên nhưng có thêm dấu huyền
int _viethuyen[24] ={ 224, 7847, 7857, 232, 7873, 236, 242, 7891, 7901, 249,
7915, 7923, 92, 7846, 7856, 200, 7872, 204, 210, 7890, 7900, 217, 7914, 7922};
Mảng vietnang gồm các ký tự: cũng gồm các ký ở trên nhưng có thêm dấu nặng
7 Tham khảo các kiểu đánh tiếng việt và bảng mã Unicode trong phần Phụ lục
KH
OA
C
NT
T –
Đ
H
KH
TN
Chương 4 Xây dựng ứng dụng VNSmartType
61
int _vietnang[24]={7841, 7853, 7863, 7865, 7879, 7883, 7885, 7897, 7907, 7909,
7921, 7925,7840, 7852, 7862, 7864, 7878, 7882, 7884, 7896, 7906, 7908, 7920,
7924};
Mảng viethoi gồm các ký tự: cũng gồm các ký ở trên nhưng có thêm dấu hỏi
int _viethoi[24]= { 7843, 7849, 7859, 7867, 7875, 7881, 7887, 7893, 7903, 7911,
7917, 7927, 7842, 7848, 7858, 7866, 7874, 7880, 7886, 7892, 7902, 7910, 7916,
7926};
Mảng vietnga gồm các ký tự: cũng gồm các ký ở trên nhưng có thêm dấu ngã
int _vietnga[24]= {227, 7851, 7861, 7869, 7877, 297, 245, 7895, 7905, 361, 7919,
7929,195, 7850, 7860, 7868, 7876, 296, 213, 7894, 7904, 360, 7918, 928};
Các hàm xử lý
//Hàm này dùng để bắt các ký tự ASCII
void CaptureASCIIkeys();
//Sử dụng hàm này để thôi không bắt các phím, để xử lý vừa nhận được.
void CancelCaptureASCIIKey();
/*Kiểm tra ký tự ch có thể làm thay đổi kí tự trước hay không? Đó là các phím
trong mảng _ToConvert_ch */
bool CanConvertOther(int ch);
KH
OA
C
NT
T –
Đ
H
KH
TN
Chương 4 Xây dựng ứng dụng VNSmartType
62
/*Hàm này :
- trả về mảng kí tự tiếng việt mà có dấu do code_type tạo
- nếu code_type là S thì trả về vietsac
- nếu code_type là F thì trả về viethuyen
- nếu code_type là R thì trả về viethoi
- nếu code_type là X thì trả về vietnga
- nếu code_type là J thì trả về vietnang
- nếu code_type là z thì trả về vietchars*/
Int* PtrArray(char code_type):
/*Hàm này:
- trả về vị trí kí tụ buffer trong mảng chữ việt
- lấy ra mảng chữ việt chứa buffer*/
Int InArray(char buffer):
//Hàm này kiểm tra buffer có trong mảng vietchars không
Bool inVietchars(char buffer)
/*Hàm này :
- Chuyển các ký tự đặc biệt của Telex như : [, ], w, W thành chữ ư,ơ
- Các kí tự khác giữ nguyên*/
TInt DirectConvert(char ch);
/*Hàm này :
- kiểm tra xem buffer có làm thay đổi buffer
- trả ra kí tự mới tạo thành và cờ hiệu cho việc có lưu kí tự mới vào buffer không*/
int vietunicode(int buffer,int code_type, int* return_char,bool* isRestore)
KH
OA
C
NT
T –
Đ
H
KH
TN
Chương 4 Xây dựng ứng dụng VNSmartType
63
//Hàm này gửi phím đến ứng dụng
void sendkey(int Wgr,TWsEvent iWsEvent, char repeat,int mycode);
//Hàm này Gửi ký tự delete đến ứng dụng
void deletekey(int Wgr,TWsEvent iWsEvent);
Bảng 4-1 Các hàm xử lý của bộ gõ tiếng Việt
Thuật giải
Hình 4-2 Thuật toán của bộ gõ tiếng Việt
KH
OA
C
NT
T –
Đ
H
KH
TN
Chương 4 Xây dựng ứng dụng VNSmartType
64
4.6 Tổ chức lưu trữ dữ liệu
Để các chức năng hỗ trợ AutoComplete, AutoCorrect và Add Accents hoạt động ta
phải lưu trữ dữ liệu là những từ do người dùng thêm vào trong quá trình sử dụng để
khi cần có thể đánh nhanh, gõ tắt được.
Cách tốt nhất để lưu trữ đối với các thiết bị di động là phải đảm bảo tính đơn giản
dễ truy xuất và truy xuất phải nhanh chóng.
Lưu trữ vào tập tin nhị phân là cách phù hợp đối với trường hợp Unicode như ứng
dụng này. Ta sẽ lưu trữ vào file nhị phân toàn những số nguyên biểu thị là mã
Unicode của các chữ cái. Lưu trữ 1 từ là việc lưu trữ một dãy số nguyên kết thúc
bằng số đặc biệt -1.
Giả sử lưu trữ chữ “học” ta phải lưu trữ 3 số nguyên biểu thị mã unicode của 3 chữ
cái: “h” “ọ” và “c”, mã của 3 chữ “h”, ”ọ” và “c” lần lượt là 104, 7885, và 99. Như
vậy lưu chữ “học” trong file sẽ lưu theo thứ tự như sau :104 7885 99 -1 với -1 là số
kết thúc của một chữ cần lưu. Cứ như vậy muốn lưu bao nhiêu chữ thì ta lưu lần
lượt như vậy.
Còn phần xử lý chính là chúng ta sẽ lấy các số từ file lên rồi tái tạo lại thành từng từ
theo cấu trúc sau :
struct Word
{
int nChar; //số ký tự chứa trong 1 từ
int charArr[MAXSIZE]; //mảng chứa mã unicode của từng ký tự
}
Chúng ta sẽ tái tạo toàn bộ từ những số lấy từ file và cho vào một mảng gồm các từ
cần dùng và sau này các thao tác tìm, thêm, xoá ...đều chỉ lưu trên mảng.
KH
OA
C
NT
T –
Đ
H
KH
TN
Chương 4 Xây dựng ứng dụng VNSmartType
65
Kỹ thuật tổng quát về xử lý file (tập tin) trên Symbian
Vấn đề đầu tiên phải ghi nhận là : việc xử lý file trên hệ điều hành Symbian khó
khăn và phức tạp hơn rất nhiều so với việc xử lý file trên máy tính cá nhân.
Xử lý file trên Symbian phải thông qua 2 giai đoạn chính :
Giai đoạn tạo file : Đây là giai đoạn tạo mới cho file bao gồm việc tạo mới một
file, và tạo “gốc” (root) cho file. Làm việc với file trên Symbian chúng ta cần làm
quen với gốc (root) ,sau này mọi phần tử thêm ,tìm đều xử lý thông qua root này,
với một id cho root được xem là duy nhất. Đoạn code minh hoạ sau sẽ nêu chi tiết
của bước tạo file này.
TParse filestorename;
/* với aName là tên file do ta truyền vào ,ta dùng fsSession là một biến thuộc kiểu
RFs ,làm việc như là một File Server ,dòng lệnh này chịu trách nhiệm phân tích
tên file đưa vào thành file name kiểu TParse để xử lý*/
fsSession.Parse(aName,filestorename);
// Khởi tạo đối tượng lưu trữ file ,dòng code này có nghĩa là tạo file mới với tên
//truyền vào ,nếu file đã tồn tại thì ghi đè.
CFileStore* store = CPermanentFileStore::ReplaceLC(fsSession,
filestorename.FullName(), EFileRead|EFileWrite);
// Bắt đầu thiết lập store root
store->SetTypeL(store->Layout());
/* Tạo luồng cho lớp CItemArray , CItemArray là một lớp kế thừa từ Cbase được
xem như linh hồn của file ,vì nó xử lý tất cả các thao tác như là lưu trữ ,thêm một
item vào root ,xoá một item khỏi root…..*/
TStreamId id=CItemArray::CreateL(*store);
//Tạo id cho root
KH
OA
C
NT
T –
Đ
H
KH
TN
Chương 4 Xây dựng ứng dụng VNSmartType
66
store->SetRootL(id);
//lệnh Commit để báo đã thực thi xong tác vụ về file
store->CommitL();
Giai đoạn sử dụng : Đây là giai đoạn sau giai đoạn tạo file, sau khi tạo chúng ta sẽ
mở file đã tạo và xử lý các thao tác như thêm xoá, cập nhật…Giai đoạn này xử lý
đơn giản hơn giai đoạn trước. Trong giai đoạn này sẽ chia làm 2 phần nhỏ :phần mở
file và phần xử lý.
Phần mở file (khung): Đoạn code sau sẽ minh hoạ và giải thích chi tiết từng bước
đó.
//Đầu tiên cũng xử lý tên file như giai đoạn đầu
TParse filestorename;
fsSession.Parse(aName,filestorename);
/*Tại giai đoạn này ,thay vì tạo mới như trên chúng ta chỉ cần mở file thay vì tạo
mới*/
CFileStore* store = CFileStore::OpenL(fsSession,filestorename.FullName()
,EFileRead|EFileWrite);
/*Sau đó ta sẽ gọi xử lý như thêm ,tìm ,xoá ….. thông qua hàm doUpdateStore mà
ta sẽ tìm hiểu qua giai đoạn sau ,lệnh gọi TRAPD ,sử dụng để bẫy lỗi nếu xảy ra
lỗi*/
_LIT(KTxtErrorOccurred,"\n** Error %d occured during store update");
TRAPD(error,doUpdateStoreL(*store));
if (error!=KErrNone)
{
KH
OA
C
NT
T –
Đ
H
KH
TN
Chương 4 Xây dựng ứng dụng VNSmartType
67
store->Revert();
console->Printf(KTxtErrorOccurred);
}
//kết thúc tác vụ xoá root
delete store;
Phần xử lý chính : Phần này sẽ miêu tả cách thực hiện hàm doUpdateStoreL ở
trên, hàm này sử dụng lớp CItemArray là lớp chính để xử lý các tác vụ, ở đây ta coi
array là một phần tử quản lý các phần tử con, mỗi phần tử con là một số nguyên
chẳng hạn.Lớp CItemArray kế thừa từ lớp Cbase, chứa các hàm tác vụ xử lý thêm
xoá, cập nhật phần tử vào array. Sau đây là đoạn code định nghĩa lớp CitemArray
typedef TInt16 TItem; //Mỗi Item được định nghĩa là một số nguyên 16 bit
//Định nghĩa lớp CItemArray kế thừa từ CBase quản lý các Item
class CItemArray : public CBase
{
public:
//Tạo dòng lưu trữ : Xử lý việc lưu trữ dữ liệu cũng như phục hồi dữ liệu
static TStreamId CreateL(CStreamStore& aStore);
~CItemArray();
static CItemArray* NewLC(CStreamStore& aStore,TStreamId anId);
void RestoreL();
void StoreL() const;
void ExternalizeL(RWriteStream& aStream) const;
KH
OA
C
NT
T –
Đ
H
KH
TN
Chương 4 Xây dựng ứng dụng VNSmartType
68
//Xử lý các thao tác thêm xoá ,đếm ,lấy các Item
void AddItemL(const TItem& anItem);
void RemoveItemL(TInt anIndex);
TInt Count() const;
void GetItemL(TItem& anItem,TInt anIndex) const;
//Các hàm khởi tạo
protected:
CItemArray(CStreamStore& aStore);
void ConstructL();
void InternalizeL(RReadStream& aStream);
//Các thuộc tính cần thiết của lớp CItemArray
private:
CStreamStore& iStore;
TStreamId iMyId;
CArrayFixFlat* iArray;
};
Có được lớp CItemArray – lớp chính xử lý từng phần tử (gọi là Item) – của file là
đã có được yếu tố quan trọng để xử lý file, việc cuối cùng ta cần làm là sử dụng lớp
CItemArray một cách linh hoạt để thao tác tìm thêm, xoá, cập nhật mảng phần tử
cho file. Đoạn code sau sẽ minh hoạ chi tiết cách sử dụng đó.
//Lấy root của dòng đưa vào bộ nhớ
CItemArray* array=CItemArray::NewLC(aStore,aStore.Root());
KH
OA
C
NT
T –
Đ
H
KH
TN
Chương 4 Xây dựng ứng dụng VNSmartType
69
/*Như trên ta đã định nghĩa ,mỗi Item là một số nguyên 16 bit do đó trong
bài vd này ta sẽ coi như lưu 2 số nguyên 987 và 789 vào file */
TItem item;
item = 987;
//add vào mảng
array->AddItemL(item);
item = 789;
array->AddItemL(item);
//Thực hiện lưu thay đổi
array->StoreL();
//Lưu xong
aStore.CommitL();
// xoá item ở vị trí 1 là item 789
array->RemoveItemL(1);
//thực hiện lưu thay đổi – tương tự như trên
array->StoreL();
//xong
aStore.CommitL();
//thực hiện xong thì trả lại bộ nhớ
CleanupStack::PopAndDestroy();
KH
OA
C
NT
T –
Đ
H
KH
TN
Chương 4 Xây dựng ứng dụng VNSmartType
70
Khi có thể sử dụng file nhị phân và lưu trữ như vậy, chúng ta sẽ thực hiện lưu trữ
dữ liệu theo tinh thần: Sẽ lưu toàn bộ số nguyên biểu thị mã unicode cho mỗi từ cần
lưu, kết thúc mỗi từ bằng -1.
4.7 Chức năng AutoComplete
Phần trên chúng ta đã tìm hiểu kỹ về cách xử lý file trên hệ điều hành Symbian,
chúng ta cũng thực hiện lưu trữ và thêm, xoá, cập nhật file một cách đơn giản. Đối
với chức năng AutoComplete chúng ta sẽ có 1 file lưu trữ các từ cần thiết cho
AutoComplete.
oạt động
Chức năng này giúp người dùng có thể đánh nhanh chữ cần thiết mà chỉ cần đánh
một vài ký tự đầu tiên của chữ đó.
Ví dụ : khi gõ “a” rồi gõ ký tự qui định cho autocomplete là phím “z” thì sẽ xuất
hiện lần lược các từ bắt đầu bằng ký tự “a” (các từ đã được lưu trước trong file) ví
dụ :”anh em”,”anh hùng”,”an tâm”, “an toàn” ,”an hưởng”… nhấn phím “z” để lần
lược xem từ tiếp theo cho tới khi chọn được từ ưng ý nhất.
Cài đặt (Coding)
Có 3 công đoạn trong quá trình thực hiện chức năng này :
- Lấy tất cả các từ trong file đổ ra mảng các từ.
- Xử lý lưu trữ từ người dùng đánh vào nhờ vùng đệm (buffer).
- Khi người dùng nhấn phím z thì xử lý tìm kiếm từ trong mảng từ và thực
hiện đưa ra lần lượt các từ bắt đầu bằng cụm từ do người dùng đưa vào.
KH
OA
C
NT
T –
Đ
H
KH
TN
Chương 4 Xây dựng ứng dụng VNSmartType
71
Tổ chức cấu trúc từ
#define MAXSIZE 256
struct Word
{
TInt nChar; //số ký tự của 1 từ
TInt charArr[MAXSIZE]; //Mãng mã Unicode của từng ký tự
}
Các thuộc tính cần thiết
#define MAXWORD 1000
Word curWord ; //Lưu từ hiện hành : từ do người dùng đánh vào gần nhất
Word prevWord; //Lưu từ xuất hiện trước đó
Word wordArr[MAXWORD]; //Mảng lưu tất cả các từ hiện có trong file
int nWord ;// Lưu số từ hiện có
Các hàm xử lý chính
//hàm lấy tất cả các từ trong file autocomplete ra bỏ vào mảng wordArr ,để sử lý
parseFileToWord(const TDesC& aName,Word wordArr[],TInt &nWord,bool
necessary)
/*hàm tìm kiếm một từ có cụm từ bắt đầu do người dùng đưa vào và trả ra kết quả
từ tìm được.*/
_doFindWordL(Word sWord,TInt &indx,Word &fWord)
//Tìm những từ tiếp theo ngoại trừ những từ đã hiển thị rồi
KH
OA
C
NT
T –
Đ
H
KH
TN
Chương 4 Xây dựng ứng dụng VNSmartType
72
doFindNextWordL(Word sWord,TInt _indxArr[],TInt _nIndx,TInt &indx,Word
&fWord)
Bảng 4-2Các hàm xử lý của AutoComplete
Thuật toán :
Hình 4-3 Thuật toán AutoComplete
4.8 Chức năng AutoCorrect
Chức năng AutoCorrect làm tương tự chức năng AutoComplete nhưng tổ chức file
lưu trữ sẽ khác. Trước hết ta xem phần hoạt động.
Hoạt động
KH
OA
C
NT
T –
Đ
H
KH
TN
Chương 4 Xây dựng ứng dụng VNSmartType
73
AutoCorrect là chức năng giúp ta gõ tắt ,ví dụ ta qui định cụm từ “hcm” biểu thị
cụm từ dài “Chủ tịch Hồ Chí Minh” thì khi ta gõ hcm và gõ thêm phím qui định
chức năng AutoComplete là phím ’ thì chương trình sẽ thay thế cụm từ “hcm”
bằng cụm từ dài “Chủ tịch Hồ Chí Minh”.
Với cách hoạt động như vậy ,ta phải lưu 2 cụm từ cho mỗi cặp autocorrect ,nghĩa là
trong ví dụ trên ta lưu 2 cụm từ “hcm” và “Chủ tịch Hồ Chí Minh” vào file liên tiếp
nhau. Đó chính là điểm khác với cách lưu trữ AutoComplete.
Các thuộc tính cần thiết
#define MAXWORD 1000
Word curWord ; //Lưu từ hiện hành : từ do người dùng đánh vào gần nhất
Word wordArr[MAXWORD]; /*Mảng lưu tất cả các từ hiện có trong file
autocorrect*/
int nWord ;// Lưu số từ hiện có
Các hàm xử lý chính
//hàm lấy tất cả các từ trong file autocorrect ra bỏ vào mảng wordArr ,để sử lý
parseFileToWord(const TDesC& aName,Word wordArr[],TInt &nWord,bool
necessary)
/*hàm tìm kiếm một từ có cụm từ do người dùng đưa vào và trả ra kết quả từ tìm
được.Hàm này cài đặt khác với hàm tìm từ của AutoComplete ,vì ta phải tìm từ kế
tiếp từ tìm được do cụm từ người dùng đưa vào*/
doFindWordL(Word sWord,TInt &indx,Word &fWord)
Bảng 4-3 Các hàm xử lý của AutoCorrect
KH
OA
C
NT
T –
Đ
H
KH
TN
Chương 4 Xây dựng ứng dụng VNSmartType
74
Thuật toán
Hình 4-4 Thuật toán AutoCorrect
4.9 Chức năng thêm dấu tự động (Automatic AddAccents)
Đây là chức năng khá phức tạp, nhất là trên điện thoại di động vốn rất hạn chế về bộ
nhớ, lưu trữ. Cấu trúc từ lưu file sẽ khác với 2 chức năng trước đó là ví dụ ta lưu
chữ trường, thì trong file phải lưu 2 dòng.
…
truong //không dấu
trường //có dấu
…..
liên tiếp nhau
KH
OA
C
NT
T –
Đ
H
KH
TN
Chương 4 Xây dựng ứng dụng VNSmartType
75
Hoạt động
Chức năng cho phép người dùng thêm dấu tự động vào 1 đoạn hay 1 câu ngắn
không dấu tiếng việt. Sử dụng phím ‘/’ để đánh dấu bắt đầu đoạn cần thêm dấu và
kết thúc đoạn thêm dấu. Ví dụ ta đánh:
/(bắt đầu thêm dấu) truong dai hoc khoa hoc tu nhien /(ket thúc thêm dấu) ,chương
trình sẽ thêm dấu tự động thành “trường đại học khoa học tự nhiên”
Các thuộc tính cần thiết
Word wordArr[MAXSIZE]; //những từ lưu trong file sẵn có
TInt nWord ;//Số từ lưu trong file
Word unsignPhrase[MAXSIZE];//lưu trữ cụm từ không dấu
TInt nWordUnsign ;//số từ có trong cụm từ không dấu
Các hàm xử lý chính
//hàm này chịu trách nhiệm chuyển từ cụm từ không dấu thành cụm từ có dấu
Word vietPhrase();
//TÌm từ trong mảng từ
doFindWordL(Word sWord,TInt &indx,Word &fWord)
Bảng 4-4 Các hàm xử lý của chức năng chuyển dấu
KH
OA
C
NT
T –
Đ
H
KH
TN
Chương 4 Xây dựng ứng dụng VNSmartType
76
Thuật toán
Hình 4-5 Thuật toán chức năng thêm dấu
Thuật toán của hàm vietPhrase chuyển cụm từ không dấu thành có dấu
Hình 4-6 Thuật toán của hàm vietP
Các file đính kèm theo tài liệu này:
- Unlock-nghien-cuu-he-dieu-hanh-symbian-6-0-va-xay-dung-ung-dung-tren-dien-thoai-nokia-9210.pdf