2 Hướng nghiên cứu và giới hạn đề tài
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/
[14] Heikki Pora, Application Size Optimisation in Mobile Environment, Master’s Thesis, Lappeenranta University of Technology, 2002.
[15] Jukka Ahonen, PDA OS Security: Application Execution, Seminar on Network Security 2001, Helsinki Univesity of Technology.
[16] Maria Holmström, End-to-end monitoring of mobile services, Master’s thesis, Linköping University, 2003.
[17] Jonathan Allin, Wireless Java for Symbian Devices, Wiley, 8- 2001.
[18] Martin Tasker, Jonathan Allin, Professional Symbian Programming: Mobile solutions on the EPOC platform, Wrox Press, 2-2000.
[19] Michael Jipping, Symbian OS Communications Programming, Wiley, 2002 [20] Richard Harrison, Symbian OS C++ for Mobile Phones, Wiley, 4- 2003.
KHOA CNTT –
ĐH KHTN
PHỤ LỤC A
CÁC THUẬT NGỮ DÙNG TRONG LUẬNVĂN
API (Application Programming Interface): API là tập các chức năng được cung cấp bởi một hệ thống và tập hợp các API này thể hiện chức năng của hệ thống đó.
ABI (Application Binary Interface): Các định dạng nhị phân của ứng dụng. Trên Symbian có 3 định dạng là ARM4, THUMB và ARMI.
Bluetooth: Một đặc tả cho truyền thông dữ liệu và âm thanh vô tuyến sóng ngắn giữa các thiết bị di động hay cố định như điện thoại di động, PDA và máy tính. Bluetooth truyền thông ở băng tầng 2,4 GHz và có ảnh hưởng trong tầm khoảng 10 mét.
CLDC (J2ME Connected Limited Device Configuration): Một kiến trúc J2ME
được cấu hình phục vụ cho các thiết bị cá nhân. CLDC bao gồm một số lớp mới
được thiết kếđặc biệt phù hợp cho các thiết bị bộ nhớ thấp.
Cleanup stack: Một ngăn xếp đặc biệt lưu giữ các biến tựđộng (biến cục bộ) là các con trỏ trỏđến vùng nhớ heap để có thể giải phóng các vùng nhớ này khi hàm chứa biến tựđộng bị thoát do lỗi môi trường.
Communicator: Tên gọi chung cho một nhóm thiết bị thông tin vô tuyến. Nhóm thiết bị này là những máy trợ giúp cá nhân PDA có tích hợp thêm các chức năng liên lạc của điện thoại di động.
Crystal: Tên một dòng thiết bị theo mô hình thiết kế tham khảo của Symbian có màn hình 1/2 chuẩn VGA và dùng bàn phím đầy đủ QWERTY.
DFRD (Device Family Reference Design) Mô hình thiết kế tham khảo cho các dòng máy Symbian. Khái niệm này đã được bỏ từ phiên bản Symbian v7.0.
Digitizer: Màn hình cảm ứng dược thiết kế với một lưới điểm bên trong sẽ tạo các điểm ảnh trên màn hình khi có sự tiếp xúc với màn hình bởi bút stylus chuyên dụng hay các dụng cụ khác.
KHOA CNTT –
ĐH KHTN
EPOC: Thế hệ cũ của hệ điều hành Symbian. Epoc vẫn còn được sử dụng trong một số phần trên hệđiều hành Symbian như trên Emulator hay cấu trúc thư mục.
IrDA: Tập hợp các giao thức cho trao đổi dữ liệu qua sóng hồng ngoại giữa hai thiết bị. Truyền thông qua hồng ngoại có thể đạt thông lượng 115,2 Kbps hoặc 4Mbps. IrDA được cài đặt trên điện thoại Symbian, các PDA, máy in và laptop.
J2ME (Java 2 Platform, Mirco Edition): Bản phân phối của nền hệ thống Java nhắm đến các thiết bị gia dụng, thiết bị truyền thông nhỏ. Công nghệ J2ME gồm máy ảo Java và tập các API được thiết kế cho môi trường trên các thiết bị này.
JavaPhone Đặc tả Java API điều khiển, quản lý danh bạ, cuộc gọi và các đòi hỏi khác cho lập trình xây dựng các chức năng trên điện thoại di động.
Leave: Khả năng ngắt hoạt động tại hàm nơi đó xảy ra lỗi môi trường và chuyển
đến phần xử lý lỗi. Các hàm có thể leave có tên hàm kết thúc bằng chữ cái L.
MIDP (Mobile Information Device Profile): tập các Java API được cài đặt trên CLDC. Nó cung cấp một môi trường cơ bản thực thi ứng dụng J2ME cho các thiết