J2ME VÀ LẬP TRÌNH GAME TRÊN ĐIỆN THOẠI DI ĐỘNG
Website: http://www.docs.vn Email : lienhe@docs.vn Tel : 0918.775.368 ĐẠI HỌC THÁI NGUYÊN KHOA CÔNG NGHỆ THÔNG TIN ĐỒ ÁN TỐT NGHIỆP ĐẠI HỌC NGÀNH CÔNG NGHỆ THÔNG TIN J2ME VÀ LẬP TRÌNH GAME TRÊN ĐIỆN THOẠI DI ĐỘNG Giáo viên hướng dẫn: Ngô Thị Lan Sinh viên thực hiện : Trần Đức Nam THÁI NGUYÊN 2007 1 Website: http://www.docs.vn Email : lienhe@docs.vn Tel : 0918.775.368 ĐẠI HỌC THÁI NGUYÊN KHOA CÔNG NGHỆ THÔNG TIN ĐỒ ÁN TỐT NGHIỆP ĐẠI HỌC NGÀNH CÔNG NGHỆ THÔNG TIN (HỆ CHÍNH QUY) J2ME VÀ LẬP TRÌNH GAME TRÊN ĐIỆN THOẠI DI ĐỘNG Giáo viên hướng dẫn: Ngô Thị Lan Sinh viên thự hiện : Trần Đức Nam Lớp : K1C THÁI NGUYÊN 2007 2 Website: http://www.docs.vn Email : lienhe@docs.vn Tel : 0918.775.368 MỤC LỤC 3 Website: http://www.docs.vn Email : lienhe@docs.vn Tel : 0918.775.368 MỞ ĐẦU Công nghệ thông tin (CNTT) ngày càng có vai trò quan trọng trong cuộc sống hàng ngày của chúng ta. Việc ứng dụng CNTT vào các lĩnh vực trong đời sống giúp công việc được tiến hành nhanh chóng và hiệu quả hơn. Có rất nhiều công nghệ mới phát triển song song với sự phát triển của CNTT , một trong những số đó là công nghệ di động. Với tốc độ phát triển của công nghệ di động như ngày nay nó đã mang lại những lợi ích thực sự cho con người. Đầu tiên với sự ra đời của chiếc điện thọai di động (DTDD) nó giúp con người liên lạc với nhau ở bất cứ đâu. Không những thế hiện nay chiếc điện thoại đã trở thành một thiết bị thông minh và đem lại nhiều lợi ích cho người sử dụng như: chơi Game, nghe nhạc, xem phim, kết nối internet, duyệt web, gửi thư…DTDD ngày nay hỗ trợ rất mạnh về âm thanh và khả năng xử lý đồ họa cùng với sự phát triển của J2ME (JAVA 2 MICRO EDITION). Do vậy em chọn đề tài “ J2ME và lập trình Game trên điện thoại di động” nhằm mục đích có những hiểu biết cơ bản về cấu trúc và các thành phần của J2ME. Từ đó có thể viết được những ứng dụng nhằm khai thác phần nào những tính năng mạnh mẽ của J2ME. Để có thể viết được ứng dụng, các đối tượng mà em cần nghiên cứu gồm những phần sau: • Nghiên cứu về ngôn ngữ lập trình Java và công nghệ J2ME lập trình trên điện thoại di động. • Nghiên cứu các kỹ thuật xay dựng giao diện. • Nghiên cứu các kỹ thuật xử lý đồ họa và hoạt hình. • Nghiên cứu các kỹ thuật xử lý phím trên điện thoại. • Nghiên cứu các kỹ thuật lưu trữ trên điện thoại. • Nghiên cứu các kỹ thuật xử lý âm thanh. Do thời gian làm có hạn do đó không thể tránh khỏi những thiếu sót rất mong sự đóng góp ý kiến của các thầy cô giáo và các bạn quan tâm tới đề tài. Đề tài hoàn thành với sự hướng dẫn chỉ bảo của cô giáo Ngô Thị Lan. Em xin chân thành cảm ơn cô. Sinh viên Trấn Đức Nam 4 Website: http://www.docs.vn Email : lienhe@docs.vn Tel : 0918.775.368 Chương 1 TỔNG QUAN VỀ J2ME 1.1 Giới thiệu các phiên bản vủa JAVA Tất cả đều bắt đầu từ phiên bản chuẩn của Java- hiện được biết đến với tên gọi Java 2 phiên bản chuẩn (J2SE) và châm ngôn nổi tiếng là “Viết một lần chạy mọi nơi”. Ý tưởng này của Java là phát triển một ngôn ngữ cho phép bạn viết mã chỉ một lần, sau đó có thể chạy trên bất kỳ nền tảng nào hỗ trợ máy ảo Java (JMV) mà không cần phải viết lại mã mới. Hai năm sau khi giới thiệu J2SE, một phiên bản mới đã ra đời với tên gọi Java 2 Enterprise Edition cung cấp sự hỗ trợ cho một hệ thống ứng dụng có qui mô lớn, những ứng dụng cấp doanh nghiệp. Gần đây nhất là phiên bản Java nhỏ gọn (micro), chạy trên những thiết bị thông tin gia dụng như Tivi, máy chụp ảnh, điện thoại di động, PocketPC… Những tính năng chính của các phiên bản Java: • Phiên bản chuẩn (Java 2 Standard Edition- J2SE): Thiết kế chay trên Desktop và máy trạm Client. • Phiên bản doanh nghiệp (Java 2 Enterprise Edition- J2EE): Đưa thêm vào những thành phần như Servlet, JSP và XML…Phiên bản này nhằm vào những ứng dụng chạy trên nền Web server. • Phiên bản nhỏ gọn ( Java 2 Micro Edition- J2ME): Thiết kế cho những thiết bị có bộ nhớ hạn chế, có sức mạnh về màn hình và tốc độ xử lý kém. Java 2 Micro Edition- J2ME 5 Java 2 Enterprise Edition (J2EE) Java 2 Standard Edition (J2SE) CDC CL DC MIDP Profile Level Configuration Java Virtual Machine (JMV) KMV Website: http://www.docs.vn Email : lienhe@docs.vn Tel : 0918.775.368 1.2 Giới thiệu về J2ME J2ME được phát triển từ kiến trúc Java Card, Embeded Java và Personal Java của phiên bản Java 1.1. Đến sự ra đời của Java 2 thì Sun quyết định thay thế Personal Java và duợc gọi với tên mới là Java 2 Micro Edition, hay viết tắt là J2ME. Đúng với tên gọi, J2ME là nền tảng cho các thiết bị có tính chất nhỏ, gọn (Micro có nghia là nhỏ trong tiếng Anh). Mục tiêu của J2ME là cho phép nguời lập trình viết các ứng dụng độc lập với thiết bị di động, không cần quan tâm dến phần cứng thật sự. Để đạt đuợc mục tiêu này, J2ME duợc xây dựng bằng các tầng (layer) khác nhau dể giấu đi việc thực hiện phần cứng khỏi nhà phát triển. Sau dây là các tầng của J2ME đuợc xây dựng trên CLDC: Hình 1.1 Các tầng của J2ME Mỗi tầng trên tầng phần cứng là tầng trừu tượng, nó cung cấp cho lập trình viên nhiều giao diện lập trình ứng dụng thân thiện hơn. o Tầng phần cứng thiết bị (Device Hardware Layer): đây là thiết bị di động thật sự với cấu hình phần cứng (bộ nhớ và tốc độ xử lý) cụ thể. Các thiết bị di động có thể có bộ vi xử lý khác nhau và các tập lệnh khác nhau. Mục tiêu của J2ME là cung cấp một chuẩn cho tất cả các loại thiết bị di động khác nhau. o Tầng máy ảo Java (JAVA Virtual Machine Layer): khi mã nguồn Java đuợc biên dịch nó đuợc chuyển đổi thành mã bytecode. Mã bytecode này sau đó đuợc chuyển thành mã ngôn ngữ máy của thiết bị di động. Tầng máy ảo bao gồm KVM( K Virtual Machine) là bộ biên dịch mã bytecode có nhiệm vụ 6 Website: http://www.docs.vn Email : lienhe@docs.vn Tel : 0918.775.368 chuyển mã bytecode của chương trình Java thành ngôn ngữ máy để chạy trên các thiết bị di động. Tầng này cung cấp một sự chuẩn hoá cho các thiết bị di động dể ứng dụng J2ME sau khi dã biên dịch có thể chạy đuợc trên bất kỳ thiết bị di động nào có hỗ trợ J2ME KVM. o Tầng cấu hình (Configuration Layer): cung cấp các hàm API cơ bản là nhân của J2ME. Lập trình viên có thể sử dụng các lớp và các phuong thức của các API này tuy nhiên tập các API hữu dụng hon đuợc chứa trong tầng hiện trạng (profile layer). o Tầng hiện trạng (profile layer): cung cấp tập các hàm API hữu dụng hơn cho lập trình. Mục đích của tập hiện trạng là xây dựng nên lớp cấu hình và cung cấp nhiều thư viện ứng dụng hơn, MIDP dịnh nghia các API riêng biệt cho thiết bị di động. Bảng mô tả một số thiết bị sử dụng J2ME: Version 1 Version 2 PCs JDKTM 1.1.x JavaTM 2 Platform Standard Edition (J2SE TM) PDAs and Communicators Personal JavaTM JavaTM 2 Platform, Micro Edition (J2ME TM) / CDC Phones and Pages J2ME/CLDC Embedded Devices Embedded JavaTM J2ME/CLDC Smart Cards JavaCardTM JavaCard 1.3 Giới thiệu các thành phần trong nền tảng J2ME Định nghĩa về Configuration (Cấu hình): là đặc tả định nghĩa một môi trường phần mềm cho một dòng các thiết bị được phân loại bởi tập hợp các đặc tính, ví dụ như: Kiểu và số lượng bộ nhớ. Kiểu và tốc độ xử lý. Kiểu mạng kết nối. Do đây là đặc tả nên các nhà sản xuất thiết bị như Samsung, Nokia …bắt buộc phải thực thi đầy đủ các đặc tả do Sun qui định để các lập trình viên có thể dựa 7 Website: http://www.docs.vn Email : lienhe@docs.vn Tel : 0918.775.368 vào môi trường lập trình nhất quán và thông qua sự nhất quán này, các ứng dụng được tạo ra có thể mang tính độc lập thiết bị cao nhất có thể. Ví dụ như một lập trình viên viết chương trình Game cho điện thoại Samsung thì có thể sửa đổi chương trình của mình một cách tối thiểu nhất để có thể chạy trên điện thọai Nokia. Hiện naySun đã đưa ra 2 dạng Configuration: •CLDC (Connected Limited Device Configuration -Cấu hình thiết bị kết nối giới hạn): được thiết kế để nhắm vào thị trường các thiết bị cấp thấp (low- end), các thiết bị này thông thường là máy điện thọai di động và PDA với khoảng 512 KB bộ nhớ. Vì tài nguyên bộ nhớ hạn chế nên CLDC được gắn với Java không dây (Java Wireless ), dạng như cho phép người sử dụng mua và tải về các ứng dụng Java, ví dụ như là Midlet. •CDC- Connected Device Configuration (Cấu hình thiết bị kết nối): CDC được đưa ra nhắm đến các thiết bị có tính năng mạnh hơn dòng thiết bị thuộc CLDC nhưng vẫn yếu hơn các hệ thống máy để bàn sử dụng J2SE. Những thiết bị này có nhiều bộ nhớ hơn (thông thường là trên 2Mb) và có bộ xử lý mạnh hơn. Các sản phẩm này có thể kể đến như các máy PDA cấp cao, điện thoại web, các thiết bị gia dụng trong gia đình … Cả 2 dạng Cấu hình kể trên đều chứa máy ảo Java (Java Virtual Machine) và tập hợp các lớp (class) Java cơ bản để cung cấp một môi trường cho các ứng dụng J2ME. Tuy nhiên, bạn chú ý rằng đối với các thiết bị cấp thấp, do hạn chế về tài nguyên như bộ nhớ và bộ xử lý nên không thể yêu cầu máy ảo hổ trợ tất cả các tính năng như với máy ảo của J2SE, ví dụ, các thiết bị thuộc CLDC không có phần cứng yêu cầu các phép tính toán dấu phẩy động, nên máy ảo thuộc CLDC không được yêu cầu hỗ trợ kiểu float và double. Định nghĩa về Profile : Profile mở rộng Configuration bằng cách thêm vào các class để bổ trợ các tính năng cho từng thiết bị chuyên biệt. Cả 2 Configuration đều có những profile liên quan và từ những profile này có thể dùng các class lẫn nhau. Đến đây ta có thể nhận thấy do mỗi profile định nghĩa một tập hợp các class khác nhau, nên thường ta không thể chuyển một ứng dụng Java viết cho một profile này và chạy trên một máy hỗ trợ một profile khác. Cũng với lý do đó, bạn không thể lấy một ứng dụng viết trên J2SE hay J2EE và chạy trên các máy hỗ trợ 8 Website: http://www.docs.vn Email : lienhe@docs.vn Tel : 0918.775.368 J2ME. •Mobile Information Device Profile (MIDP): profile này sẽ bổ sung các tính năng như hỗ trợ kết nối, các thành phần hỗ trợ giao diện người dùng … vào CLDC. Profile này được thiết kế chủ yếu để nhắm vào điện thọai di động với đặc tính là màn hình hiển thị hạn chế, dung lượng chứa có hạn. Do đó MIDP sẽ cung cấp một giao diện người dùng đơn giản và các tính năng mạng đơn giản dựa trên HTTP. Có thể nói MIDP là profile nổi tiếng nhất bởi vì nó là kiến thức cơ bản cho lập trình Java trên các máy di động (Wireless Java). 1.4 Giới thiệu MIDP Định nghĩa: Đây là Profile được định nghĩa dành riêng cho các thiết bị di động và là thành phần chính trong J2ME. MIDP cung cấp các chức năng cơ bản cho hầu hết các dòng thiêt bị di động phổ biến nhất như các máy điện thoại di động và các máy PDA. Tuy nhiên MIDP không phải là cây đũa thần cho mọi lập trình viên vì như chúng ta đã biết, MIDP được thiết kế cho các máy di động có cấu hình rất thấp. Những chức năng MIDP cung cấp • Các lớp và kiểu dữ liệu: Phần lớn các lớp mà các lập trình viên Java quen thuộc vẫn còn được giữ lại ví dụ như các lớp trong gói java.util như Stack, Vector và Hastable cũng như Enumeration. • Hỗ trợ đối tượng Display: Đúng như tên gọi một chương trình MIDP sẽ hỗ trợ duy nhất một đối tượng Display là đối tượng quản lý việc hiển thị dữ liệu trên màn hình điện thoại. • Hỗ trợ Form và các giao diện người dùng. • Hỗ trợ Timer và Alert • Cung cấp tính năng Record Management System (RMS) cho việc lưu trữ dữ liệu. 1.5 MIDlet và vòng đời của một MIDlet Giống như dạng chương trình Applet trên J2SE, một Midlet luôn luôn kế thừa javax.microedition.midlet. Hàm cơ bản nhất trong mọi Midlet là startApp(), hàm này sẽ khởi tạo Midlet cũng như vận hành các thành phần hoặc đối tượng 9 Website: http://www.docs.vn Email : lienhe@docs.vn Tel : 0918.775.368 khác, ngoài startApp(), mỗi Midlet còn có pauseApp() và destroyApp(), mỗi hàm này sẽ đựợc gọi thực thi tương ứng khi user chọn dừng hoặc thoát chương trình. Hình 1.2 Vòng đời của một MIDlet 1.6 Môi trường phát triển J2ME Có hai cách để phát triển một ứng dụng J2ME: • Phát triển chương trình từ dòng lệnh Các phần mềm cần thiết: Java Development Kit (JDK). Connectd Limited Device Configuration (CLDC). Mobile Information Device Profile (MIDP). Đây là cách hoàn toàn có thể sử dụng để phát triển bất kỳ một ứng dụng J2ME nào, nhưng sẽ khó khăn để quản lý những ứng dụng lớn vì các thao tác đều phải xử lý bằng dòng lệnh. • Sử dụng các bộ giả lập như: J2ME WIRELESS TOOLKIT của Sun, Samsung WIRELESS TOOLKIT của Samsung, SonyEriction WIRELESS TOOLKIT của SonyEriction… Đây là công cụ giúp lập và quản lý những dự án J2ME hiệu quả hơn, giảm thiểu quá trình gỡ lỗi, theo dõi hệ thống…Mọi thao tác đều thực hiện thông qua giao diện GUI trực quan. Hiện nay các môi trường IDE như JBuilder, Netbeans, Eclipse…đều phát triển theo dạng giao diện đồ hoạ 10 [...]... tượng Display, Displayable và Screens Một ứng dụng MIDlet chỉ có 1 đối tượng thể hiện Display Đối tượng này dùng để lấy thông tin về đối tượng trình bày, ví dụ màu được hỗ trợ, và bao gồm các phương thức để yêu cầu các đối tượng được trình bày Đối tượng Display cần thiết cho bộ quản lý việc trình bày trên thiết bị điều khiển thành phần nào sẽ được hiển thị lên trên thiết bị Mặc dù chỉ có một đối tượng Display... thiết lập bộ lắng nghe sự kiện Listener Có hai giao di n chính cho mỗi MIDlet là: CommandListener và ItemStateListener 16 2.7.1 Đối tượng Command Khi một hành động xảy ra trên thiết bị di động, một đối tượng Command giữ thông tin về sự kiện đó Thông tin này bao gồm loại hành động thực thi, nhãn của mệnh lệnh và độ ưu tiên của chính nó Trong J2ME, các hành động nói chung được thể hiện dưới dạng các nút trên. .. gói javax.microedition.rms Một vùng nhớ trên các thiết bị sử dụng MIDP sẽ được dành riêng cho việc lưu trữ các dữ liệu của ứng dụng MIDlet Vị trí và kích thước của vùng lưu trữ này đuợc xác định tùy thuộc vào những thiết bị cụ thể RMS cho phép lưu trữ dữ liệu khi ứng dụng thoát, khởi động lại và khi thiết bị di động tắt hay thay pin Dữ liệu của ứng dụng sẽ tồn tại trên thiết bị di động cho đến khi... nhưng thiết bị di động vẫn hỗ trợ hệ thống xử lý file và các giao thức kết nối mạng Với kích thước hơn 200 kb và hơn 100 class và interfaces trong gói java.io, java.net của J2SE sẽ chiếm hầu hết bộ nhớ nhỏ bé của những thiết bị đi động Do đó Sun không thể kế thừa những gói này vào trong J2ME, mà đã xây dựng một chuẩn là Generic Connection Framework (GCF) GCF sẽ giúp cho các thiết bị di động có thể truy... khởi tạo của các ứng dụng là cần thiết và quan trọng Thông tin mà các ứng dụng có thể lưu trữ như các thông tin cấu hình ứng dụng, thông tin quá trình sử dụng các ứng dụng,…Đối với máy PC thì việc này tương dối dễ dàng khi chúng ta có trong tay nhiều thiết bị lưu trữ như HDD, CD- ROM, USB DISK,…nhưng việc này tương đối khó khăn đối với các ứng dụng trên điện thoại di động MIDP cung cấp cho chúng ta một... tượng trong một MIDlet có thể được hiển thị ra trên thiết bị như Forms, TextBoxes, ChoiceGroups, Một đối tượng Displayable là một thành phần được hiển thị trên một thiết bị MIDP chứa 2 lớp con của lớp Displayable là Screen và Canvas Hình dưới đây mô tả mối quan hệ trên Hình 2.1 Đối tượng Display Một đối tượng Screen không phải là một cái gì đó hiện ra trên thiết bị, mà lớp Screen này sẽ được thừa kế... giao di n ứng dụng người dùng Tuy nhiên các thành phần cấp cao không cung cấp phương tiện để vẽ trực tiếp lên thiết bị thể hiện Vì thiếu khả năng này nên các ứng dụng được tạo ra sẽ gặp nhiều giới hạn Ví dụ hầu hết các nhà phát triển Game di động dựa trên khả năng vẽ các đường thẳng và các hình dạng như là một phần tích hợp quá trình phát triển Nếu các hàm API cấp cao cho phép chúng ta tạo ra giao di n... 3.3 Sự kiện hành động Cũng như các thành phần Form, List, và TextBox, một Canvas có thể xử lý các sự Command Chúng ta có thể xử lý các sự kiện Command trên thành phần Canvas cung cách như các thành phần khác 20 Đoạn mã sau minh họa việc xử lý sự kiện Command trên thành phần Canvas class TestCanvas extends Canvas implements CommandListener { private Command cmdExit; display = Display.getDisplay(this);... hoạt và vai trò chính của GCF Khi thực thi Connector sẽ tìm kiếm lớp thích hợp cài đặt giao thức được yêu cầu kết nối Nó sử dụng Class.forName() để nạp lớp Một yêu cầu mở kết nối HTTP trong J2ME: Class.forName(“ com.sun.midp.io .j2me. http.Protocol ”); Nếu lớp này được tìm thấy, thì một đối tượng được trả về và đối tượng này được cài đặt giao di n kết nối của connector Giao di n lớp của Connector và Connection... dựng của một TextBox: TextBox(String title, String text, int maxSize, int constraints); 2.5 Alert và AlertType Một Alert đơn giản là một hộp thoại rất nhỏ Có 2 loại Alert: •Modal: là loại hộp thoại thông báo được trình bày cho đến khi người dùng ấn nút đồng ý •Non-modal: là loại hộp thoại thông báo chỉ được trình bày trong một số giây nhất định Các phương thức dựng của Alert: Alert(String title); Alert(String