2 Hướng nghiên cứu và giới hạn đề tài
7.2.3 Các ứng dụng hệ thống
- Application Launcher: quản lý tất cả các ứng dụng hiện có trong hệ thống. Các ứng dụng được hiển thị trong khung nhìn Application Launcher theo dạng các icon hoặc theo dạng danh sách (list).
KHOA CNTT –
ĐH KHTN
- Installer: chương trình cài đặt và gỡ bỏ ứng dụng được nạp từ menu của Application Launcher.
H7.7 Installer
- Control Panel: ứng dụng thiết lập các cài đặt hệ thống, được hiển thị dưới dạng các dialog.
H7.8 Control Panel 7.2.4 Bộ SDK UIQ 2.1 WINSCW
UIQ 2.1 là bộ SDK được sử dụng để phát triển các ứng dụng cho các điện thoại dùng nền hệ thống UIQ 2.1 (SE P900, BenQ P300 và Motorola A1000). So với UIQ 2.0, UIQ 2.1 hỗ trợ phần tạo hiệu ứng cho giao diện themes, skin, đa phương tiện (multimedia), hỗ trợ MIDP 2.0 thay cho MIDP 1.0, v.v…
SDK UIQ 2.1 WINSCW là bộ SDK hỗ trợ phát triển ứng dụng trên môi trường IDE Metrowerks CodeWarrior bao gồm các gói công cụ phát triển cho C++ và Java (JavaPhone, PersonalJava và MIDP 2.0).
KHOA CNTT –
ĐH KHTN
7.3 IDE Metrowerks CodeWarrior for Symbian Personal 2.0
IDE CodeWarrior do công ty Metrowerks, một công ty thành viên của Motorola phát triển. IDE CodeWarrior cho ứng dụng Symbian có 3 bản phân phối là Personal, Professional và OEM. Hiện nay cùng với Borland C++ BuilderX, CodeWarrior là IDE hàng đầu để phát triển ứng dụng trên Symbian. IDE CodeWarrior cung cấp đầy đủ các công cụđể soạn thảo, kiểm lỗi, biên dịch, liên kết và đóng gói ứng dụng.
Phiên bản chúng tôi sử dụng là CodeWarrior for Symbian Personal 2.0 đầy đủ
các công cụ để xây dựng và phát triển ứng dụng Symbian nhưng thiếu hỗ trợ kiểm lỗi trực tiếp trên điện thoại Symbian, bản phân phối Professional và OEM mới có.
KHOA CNTT –
ĐH KHTN
CHƯƠNG 8
XÂY DỰNG VÀ CÀI ĐẶT TỪ ĐIỂN TRÊN
ĐIỆN THOẠI SONY ERICSSON P900
Ứng dụng từđiển Anh Việt, Việt Anh Xây dựng chương trình
Sơ đồ UML cho chương trình ứng dụng Các lớp cài đặt
4 Lớp cơ bản
Lớp xử lý tiếng Việt Lớp phát âm
File cơ sở dữ liệu từđiển và cách truy xuất Biên dịch và cài đặt chương trình
Biên dịch
KHOA CNTT –
ĐH KHTN
8.1 Ứng dụng từđiển Anh Việt, Việt Anh
Ứng dụng từđiển Anh Việt, Việt Anh được phát triển cho hệđiều hành Symbian trên nền hệ thống UIQ 2.1 và được cài đặt cụ thể trên điện thoại Sony Ericsson P900. Tuy nhiên các loại điện thoại UIQ khác như Sony Ericsson P800 (UIQ 2.0) vẫn có thể sử dụng được.
Mục tiêu của ứng dụng là công cụ phục vụ cho tra từ với 2 phần Anh Việt và Việt Anh. Để tra từ người dùng nhập từ cần tra qua nhận dạng viết tay hay bàn phím
ảo vào khung nhập. Tương ứng với các từ người dùng nhập, danh sách các từ tương tự sẽ được hiện ra và để tra từ, người dùng có thể chọn từ mình muốn tra từ danh sách này. Kết quả tra nghĩa sẽđược thể hiện trên một khung hiển thị.
Đối với từđiển Anh-Việt, một số từ sẽ có phần phát âm đi kèm.
Đối với từ điển Việt Anh, một bộ gõ tiếng Việt được tích hợp sẵn trong chương trình. Người dùng có thể chọn 2 kiểu gõ thông dụng là Vni và Telex.
• Chương trình:
KHOA CNTT –
ĐH KHTN
8.2 Xây dựng chương trình
8.2.1 Sơđồ UML cho chương trình ứng dụng
H8.2 Sơđồ UML chương trình từđiển TNDic 8.2.2 Các lớp cài đặt
8.2.2.1 4 Lớp cơ bản trong kiến trúc ứng dụng chương trình đồ họa
• Mã khởi tạo hoạt động ứng dụng đồ họa: Như mọi ứng dụng đồ họa khác trên Symbian (vốn là một thư viên đa hình), ứng dụng từ điển cũng bao gồm mã khởi tạo ứng dụng được lưu trữ trong file Dictionary.cpp.
EXPORT_C CApaApplication* NewApplication() {
return new CDicApplication; }
• Lớp ứng dụng: CDicApplication. Nhiệm vụ của lớp này là khởi tạo đối tượng tài liệu cho ứng dụng. Lớp được cài đặt trong file DicApplication.cpp
CApaDocument* CDicApplication::CreateDocumentL() {
return new (ELeave) CDicDocument(*this); }
• Lớp tài liệu: CDicDocument. Ứng dụng từđiển TNDic không phải là ứng dụng file mặc dù trong ứng dụng có truy xuất file. Do đó nhiệm vụ chính của lớp
KHOA CNTT –
ĐH KHTN
CEikAppUi* CDicDocument::CreateAppUiL() {
return new (ELeave) CDicAppUi; }
• Lớp giao tiếp ứng dụng: CDicAppUi. Như mọi ứng dụng đồ họa khác, trên TNDic, nhiện vụ của lớp giao tiếp ứng dụng chỉ là khởi tạo đối tượng hiển thị ứng dụng và phân phối các xử lý ứng dụng từ sự kiện trên menu và của cửa sổ hiển thị (ứng dụng không có toolbar).
void CDicAppUi::ConstructL() {
CQikAppUi::ConstructL();
iAppView=new (ELeave) CDicAppView();
iAppView->ConstructL(ClientRect(),KUidTNDicAppView); RegisterViewL(*iAppView);
AddToStackL(*iAppView, iAppView); SetDefaultViewL(*iAppView);
}
Trên Symbian, từ menu cho đến cửa sổ hiển thịứng dụng (AppView) đều là các đối tượng điều khiển dẫn xuất từ CCoeControl.
• Lớp hiển thị ứng dụng: CDicAppView. Lớp này đảm nhận việc xây dựng các điều khiển cho ứng dụng TNDic và phân phối các xử lý cho chúng. Từ điển TNDic có 4 đối tượng điều khiển được xây dựng qua hàm ConstructControlsL():
- Đối tượng nhập từ cần tra: là một đối tượng khung nhập từ lớp CEikRichTextEditor. Sự kiện nhập ký tự trên khung nhập này đều được bắt và xử lý qua hàm xử lý sự kiện phím: OfferKeyEventL(const TKeyEvent& aKeyEvent, TEventCode aType). Liên quan xử lý tiếng Việt trên khung nhập này (tra từ Việt), hàm ProcessKey(TUint16 aChar) sẽđảm nhận. Tiếng Việt được xử lý gián tiếp qua
KHOA CNTT –
ĐH KHTN
đối tượng iTransVietChar, đối tượng của lớp CTransVietChar, nhờ lớp hiển thị
CDicAppView has-a lớp CTransVietChar.
- Đối tượng nút nhấn: là đối tượng của lớp CEikCommandButton. Trong từ điển Anh Việt, nhiệm vụ của nó là phát âm từ cần tra, nếu có. Trong từ điển Việt Anh, nhiệm vụ của nó là chuyển đổi giữa 2 kiểu gõ: Telex và Vni. Nút nhấn thứ 2 làm nhiệm vụ xóa từ trên khung nhập, áp dụng chung cho 2 từđiển.
- Đối tượng danh sách từ: là đối tượng của lớp CEikTextListBox. Nhiệm vụ
của nó là hiển thị danh sách từ nằm trong mục từ cần tra và hiển thị phần gần từ cần tra nhất khi người dùng nhập từ cần tra.
- Cuối cùng là đối tượng thể hiện nội dung tra từ: đây là đối tượng của lớp CEikRichTextEditor với khả năng nhập bị loại bỏ.
Các đối tượng này được quản lý trong một mảng các đối tượng CCoeControl qua biến iControls. Các đối tượng này được cài đặt thông qua các thông số trên file tài nguyên TNDic.rss.
Sau đây là phần cài đặt cho khung nhập từ: TResourceReader reader;
iCoeEnv->CreateResourceReaderLC(reader, R_DICTIONARY_RICHTEXTEDITOR);
CEikRichTextEditor* editor = new CEikRichTextEditor(); editor->ConstructFromResourceL(reader); CleanupStack::PopAndDestroy(); editor->SetContainerWindowL(*this); editor->SetObserver(this); editor->SetExtent(TPoint(1,0),TSize(157,25)); editor->SetBackgroundColorL(KRgbDitheredLightGray); editor->SetTextLimit(100); editor->SelectAllL(); editor->ApplyCharFormatL(charFormat, charFormatMask); editor->SetCursorPosL(0,EFalse);
KHOA CNTT –
ĐH KHTN
iControls->AppendL(editor);
Câu lệnh cuối cùng là để đưa đối tượng khung nhập vào quản lý ở
iControls.
Phần xử lý sự kiện con trỏ khi người dùng kích vào nút nhấn hay danh sách từđược xử lý ở hàm HandlePointerEventL(const TPointerEvent& aPointerEvent).
8.2.2.2 Lớp xử lý tiếng Việt
Phần xử lý tiếng Việt sẽ do lớp CTransVietChar đảm nhận. Các ký tự nhập từ khung nhập sẽ lần lượt được chuyển cho hàm TransChar(TUint16& aChar, TInt8& aIndex) của lớp này. Hàm này sẽ xác định ký tự nhập là ký tự dấu trăng (w
đối với Telex hoặc 7 hay 8 đối với Vni), ký tự dấu (s, f, r, x, j, và z đối với Telex hoặc 1, 2, 3, 4, 5, 0 đối với Vni), ký tựđôi (a, e, o, d cho Telex hoặc 6, 9 cho Vni) hay các ký tự thông thường khác qua hàm CharType(TUint16 aChar) rồi phân bố
cho hàm xử lý các loại ký tự này: PutBreveMark(TUint16 aChar), PutToneMark(TUint16 aChar) và DoubleChar(TUint16 aChar). Kết quả trả về ký tự
chuyển đổi (nếu có) và vị trí sẽđổi trên từ trong khung nhập dựa trên giá trị trả về. Nếu giá trị trả về là 0, ký tự thông thường, chỉ cần thêm vào. Nếu là 1, ký tự tại vị
trí aIndex sẽđược thay bằng ký tự aChar mới. Nếu giá trị trả về là –1, ký tự tại vị trí aIndex sẽ được trả về nguyên dạng và ký tự vừa nhập sẽ được thêm vào khung nhập. Ví dụ hiện tại trên khung nhập là chữ “Từ” nếu tiếp tục nhập ký tự “w” khi
đang ở chếđộ gõ Telex thì kết quả sẽ là “Tùw”. 8.2.2.3 Lớp phát âm
Phần phát âm với các từ trong từđiển Anh-Việt do lớp Cspeaker đảm nhận.
Đối tượng lớp này được khai báo trong lớp CDicAppView theo mối quan hệ has-a. Khi từ có thể phát âm, nút nhân loa sẽ bỏ phần gạch chéo. Khi người dùng nhấn vào nút này đối tượng lớp CSpeaker sẽ gọi hàm PlayL() với tham số vào là tên file .wav tương ứng với từ cần đọc. Hàm này sẽ kết nối media server để thực thi file .wav này.
KHOA CNTT –
ĐH KHTN
8.2.3 File cơ sở dữ liệu từđiển và cách truy xuất
• Cơ sở dữ liệu được lưu trữ trong 2 file: evdict.dat và vedict.dat. Cấu trúc của file này như sau: @từ *nghĩa. Để tiện truy xuất, 2 file chỉ mục evindex.dat và veindex.dat được tạo ra theo cấu trúc: @Từ:vị trí (byte) lưu trữ.
• Thông qua file chỉ mục, việc truy xuất sẽ thực hiện dễ dàng nhờ hàm seek trên lớp đọc file Rfile.
• Khi người dùng nhập ký tựđầu tiên của từ cần tra, toàn bộ các từ trong mục từ đó sẽ được nạp vào listbox chứa danh sách từ. Người dùng có thể tra cứu trực tiếp bằng cách nhấn Enter trên bàn phím ảo hay chọn từ danh sách này. Kết quả trả
về sẽ là nghĩa từ cần tra (chọn trên danh sách) hay nghĩa từ gần nhất (khi dùng phím Enter nhưng trong cơ sở dữ liệu không có từ khớp.
8.3 Biên dịch và cài đặt ứng dụng
8.3.1 Biên dịch chương trình ứng dụng
Sau khi biên dịch chương trình nhờ IDE CodeWarrior với loại biên dịch là ARMI và kiểu biên dịch UREL chúng ta thu được 4 file chương trình đã biên dịch dưới dạng mã nhị phân được lưu trữ như sau:
• File ứng dụng: File ứng dụng (thư viện đa hình) từđiển là TNDic.app được lưu trữ tại thư mục: <%Symbian-UIQ2.1%>\epoc32\release\armi\urel\
• File tài nguyên TNDic.rsc, file thông tin ứng dụng TNDic.aif và file ảnh TNDic.mbm được lưu trữ tại thư mục:
<%Symbian-UIQ2.1%>\epoc32\data\z\system\apps\TNDic\ 8.3.2 Cài đặt ứng dụng
8.3.2.1 File cấu hình font Unicode
Để hiện thị tiếng Việt chương trình sử dụng font Unicode Tahoma. Tuy nhiên font mặc định được dùng trên điện thoại Sony Ericsson P900 không phải là font Unicode. Để thực hiện việc chuyển đổi font hệ thống thành font Unicode nói chung và cho Tahoma nói riêng, chúng ta không thể sử dụng các hàm API sẵn có mà phải tạo một file cấu hình .ini và sử dụng thư viện freetype.dll. Thư viện
KHOA CNTT –
ĐH KHTN
freetype.dll là thư viện được cung cấp để cấu hình font Unicode cho các nền hệ
thống sử dụng hệ điều hành Symbian 7.0 trở về sau. Freetype.dll có thể lấy về từ
trang web: http://www.freetype.org.
Do đó trong file cài đặt chương trình sẽ có thêm 3 file: thư viện freetype.dll, font tahoma.ttf và file cấu hình sysfnt.ini dùng để cấu hình font Tahoma .
8.3.2.2 Đóng gói ứng dụng
Với 4 file chương trình, 2 file dữ liệu từ điển và các file cấu hình font, file thông tin đóng gói TNDic.pkg được xây dựng như sau:
; TNDic Installation script. ;Languages
&EN
; The installation name and header data #{"TNDic"},(0x10202239),1,0,0
(0x101F61CE), 0, 0, 0, {"UIQ21ProductID"} ;
; The files to install
"C:\Symbian\UIQ_21\Epoc32\release\armi\urel\TNDic.app"- "!:\System\Apps\TNDic\TNDic.app" "C:\Symbian\UIQ_21\Epoc32\data\z\system\apps\TNDic\TNDic.rsc"- "!:\System\Apps\TNDic\TNDic.rsc" "C:\Symbian\UIQ_21\Epoc32\data\z\system\apps\TNDic\TNDic.aif"- "!:\System\Apps\TNDic\TNDic.aif" “..\Data\evdict.dat”-“!:\System\Apps\TNDic\evdict.dat” “..\Data\vedict.dat”-“!:\System\Apps\TNDic\vedict.dat” “..\Data\evdictindex.dat”-“!:\System\Apps\TNDic\evindex.dat” “..\Data\evdictindex.dat”-“!:\System\Apps\TNDic\evtindex.dat” "..\Font\freetype.dll"-"C:\System\fonts" "..\Font\tahoma.ttf"-"C:\System\Fonts" "..\Font\sysfnt"-"C:\System\Data"
KHOA CNTT –
ĐH KHTN
- Đầu tiên là phần ngôn ngữ dùng trong quá trình cài đặt: EN: English. - Tiếp theo là tên file ứng dụng: TNDic, định danh UID: 0x10202239 và phiên bản là 1.0.
- Tiếp theo là phần khai báo nền hệ thống tương thích: chương trình tương thích cho UIQ 2.1 với định danh 0x101F61CE nhưng với phiên bản UIQ 2.0, chương trình vẫn hoạt động tốt.
- Tiếp theo các file chương trình, dữ liệu cần cài đặt. Lưu ý dấu “!” thể hiện
đĩa cài đặt (C hay D) sẽ do người dùng chọn trong quá trình cài đặt.
- Cuối cùng là các cấu hình cho font Unicode được chỉ định đến thư mục cụ
thể trên đĩa C để đáp ứng việc cấu hình font Unicode Tahoma. 8.3.2.3 Cài đặt ứng dụng
Với công cụ makesis chúng ta có file cài đặt TNDic.sis: makesis TNDic.pkg TNDic.sis
Với file TNDic.sis vừa tạo, ta có thể cài đặt chương trình lên điện thoại bằng cách chép file này lên điện thoại rồi cài đặt trực tiếp nhờ tiện ích Installer hặc cài đặt thông qua đồng bộ từ xa qua cáp nối máy tính, hồng ngoại, bluetooth hay qua Internet.
Sau đây là quá trình cài đặt qua cáp nối giữa máy tính và điện thoại SE P900 qua cổng USB.
• Sau khi đã có tín hiệu kết nối giữa máy tính và điện thoại, kích đúp vào file TNDic.sis, một hộp thoại hiện ra:
KHOA CNTT –
ĐH KHTN
• Chọn nút “Yes”, chương trình cài đặt hoạt động và bắt đầu kiểm tra chữ
ký điện tử, chứng thực cho chương trình. Từđiển TNDic không có phần chứng thực nên hộp thoại sau hiện ra để cảnh báo người dùng vềđộ an toàn khi cài đặt nó:
H8.4 Hộp thoại cảnh báo về rủi ro khi cài đặt thiếu chứng thực
• Chọn “Install anyway”, chương trình cài đặt bắt đầu cài đặt:
H8.5 Thông tin ứng dụng sẽ cài đặt H8.6 Ngôn ngữ dùng trong cài đặt
KHOA CNTT –
ĐH KHTN
H8.8 Quá trình cài đặt
H89 Kết thúc cài đặt
• Với ứng dụng đồ họa thông thường, sau khi cài đặt là có thể sử dụng ngay nhưng trong TNDic có cài đặt thêm phần cấu hình font hệ thống nên cần khởi
động lại điện thoại trước khi sử dụng. Sau khởi động, toàn bộ font đều được chuyển thành Tahoma và lúc này ứng dụng từ điển Anh Việt, Việt Anh đã sẵn sàng sử
KHOA CNTT –
ĐH KHTN
TỔNG KẾT
Với mong muốn tìm hiểu những công nghệ kỹ thuật mới, tinh tế và được sự phân công, hướng dẫn của Thầy Đỗ Hoàng Cường, chúng tôi đã hoàn thành luận văn cử
nhân tin học với đề tài: “"Tìm hiểu và nghiên cứu kỹ thuật phát triển ứng dụng trên môi trường Symbian OS ".
Với luận văn này, chúng tôi đã xây dựng một quy trình hoàn chỉnh để phát triển chương trình nói chung và cho ứng dụng đồ họa nói riêng cho môi trường Symbian. Với quy trình này, một người mới bắt đầu lập trình hoặc mới chuyển sang lập trình
ứng dụng cho hệđiều hành Symbian từ các môi trường khác sẽ dễ dàng có một kế
hoạch phát triển ứng dụng và bước đầu hiểu rõ những vấn đề then chốt nhất trong lập trình cho Symbian.
Và để làm rõ hơn, minh họa cho quy trình này, chúng tôi đã xây dựng một ứng dụng đồ họa nhỏ: Từ điển Anh Việt, Việt Anh. Ứng dụng từ điển này được phát triển cho điện thoại dòng Quartz, dòng điện thoại phù hợp cho tiêu chí tra cứu và
được cài đặt cụ thể trên điện thoại Sony Ericsson P900.
Tuy nhiên, do chỉ phục vụ minh họa cho luận văn nên ứng dụng từđiển khá đơn giản. Từđiển chỉ phục vụ cho mục đích tra từ, còn khả năng thêm từ và xây dựng từ điển riêng cho người dùng vẫn còn bỏ ngõ. Cơ sở dữ liệu cho chương trình vẫn khá lớn khó phù hợp cho điện thoại ít bộ nhớ. Vấn đề cơ sở dữ liệu sẽ được chúng tôi cải tiến với cách lưu trữ có hỗ trợ nén của Symbian.
KHOA CNTT –
ĐH KHTN
TÀI LIỆU THAM KHẢO
[1] Diễn đàn All About Symbian: http://www.allaboutsymbian.com [2] Diễn đàn My Symbian: http://www.my-symbian.com [3] Diễn đàn NewLC: http://www.newlc.com [4] Hệđiều hành Symbian: http://www.symbian.com [5] Hệđiều hành Palm: http://www.palmsource.com/ [6] Hệđiều hành WindowCE: http://msdn.microsoft.com/embedded/prevver/ [7] Hệđiều hành Linux nhúng: http://www.embedded-linux.org [8] Java nhúng: http://java.sun.com/j2me/ [9] Thư viện lập trình Symbian: http://www.symbian.com/developer/ [10] Thư viện lập trình UIQ: http://developer.sonyericsson.com/ http://www.uiq.com
[11] Thư viện lập trình Series 60, Series 80, Series 90: http://www.forum.nokia.com/main.html
[12] IDE Metrowerks CodeWarrior cho Symbian: http://www.Metrowerks.com/ [13] IDE Borland CBuilderX: http://www.borland.com/cbuilderx/