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 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 ……………………………………………………………………………………………… ……………………………………………………………………………………………… ……………………………………………………………………………………………… ………………………………………………………………………………………...

pdf133 trang | Chia sẻ: hunglv | Lượt xem: 907 | Lượt tải: 0download
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:

  • pdfUnlock-nghien-cuu-he-dieu-hanh-symbian-6-0-va-xay-dung-ung-dung-tren-dien-thoai-nokia-9210.pdf