Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 26 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
26
Dung lượng
292 KB
Nội dung
LẬPTRÌNH J2ME CHOTHIẾTBỊDIĐỘNG PHẦN Giáo viên : Trịnh Thị Vân Anh Hà nội, 8-2007 Hướng tự nghiên cứu (1) Cơ sở hệ thống thông tin diđộng (liên quan đến IT) Mạng GSM (Global System for Mobile Communication - Hệ thống thơng tin diđộng tồn cầu) Kiến trúc mạng GSM hệ Khía cạnh liên kết sóng vơ tuyến (radio) Khía cạnh mạng Hai công nghệ IEEE802.11 Bluetooth Khái niệm IEEE802.11 (ở mạng cục bộ) Bluetooth Các mô hình OSI Bluetooth 802.11 dùng scenario Bluetooth Multiplayer Games Framework (BluetoothMGF) Các vấn đề khác Hướng tự nghiên cứu (2) Giao thức ứng dụng không dây (Wireless Application Protocol – WAP) Giới thiệu giao thức WAP Cổng WAP WML (Wireless Markup Language)/ WML script Web Service VoiceXML Các sản phẩm Tự thiết kế xây dựng Nghiên cứu sản phẩm sẵn có sau phát triển lên Các lựa chọn khác 1.Giới thiệu J2ME Lịch sử J2ME phát triển từ kiến trúc Java Card, Embeded Java Personal Java phiên Java 1.1 Đến đời Java Sun định thay Personal Java đươc gọi với tên Java Micro Edition, hay viết tắt J2ME Đúng với tên gọi, J2ME tảng chothiếtbị có tính chất nhỏ, gọn Lý chọn J2ME Java ban đầu thiết kế dành cho máy với tài nguyên nhớ hạn chế Thị trường J2ME mở rộng cho nhiều chủng loại thiếtbị như: • Các loại thẻ cá nhân Java Card • Máy điện thoại diđộng • Máy PDA (Personal Digital Assistant - thiếtbị trợ giúp cá nhân) • Các hộp điều khiển dành cho tivi, thiếtbị giải trí gia dụng … Kiến trúc J2ME (1) Các thành phần tảng J2ME Định nghĩa Configuration (Cấu hình): đặc tả định nghĩa mơi trường phần mềm chodòngthiếtbị phân loại tập hợp đặc tính, ví dụ như: • Kiểu số lượng nhớ • Kiểu tốc độ vi xử lý • Kiểu mạng kết nối Do đặc tả nên nhà sản xuất thiếtbị Samsung, Nokia …bắt buộc phải thực thi đầy đủ đặc tả Sun qui định để lậptrình viên dựa vào mơi trường lậptrình qn thơng qua quán này, ứng dụng tạo mang tính độc lậpthiếtbị cao Hiện Sun đưa dạng Configuration: Kiến trúc J2ME (2) • • CLDC (Connected Limited Device Configuration-Cấu hình thiếtbị kết nối giới hạn): thiết kế để nhắm vào thị trường thiếtbị cấp thấp (low-end), thiếtbị thông thường máy điện thoại diđộng PDA với khoảng 512 KB nhớ Vì tài nguyên nhớ hạn chế nên CLDC gắn với Java không dây (Java Wireless ), dạng cho phép người sử dụng mua tải ứng dụng Java, ví dụ Midlet CDC- Connected Device Configuration (Cấu hình thiếtbị kết nối): CDC đưa nhắm đến thiếtbị có tính mạnh dòngthiếtbị thuộc CLDC yếu hệ thống máy để bàn sử dụng J2SE Những thiếtbị có nhiều nhớ (thông thường 2Mb) có xử lý mạnh Các sản phẩm kể đến máy PDA cấp cao, điện thoại web, thiếtbị gia dụng gia đình … Định nghĩa Profile: Profile mở rộng Configuration cách thêm vào class để bổ trợ tính chothiếtbị chuyên biệt Cả Configuration có profile liên quan từ profile dùng class lẫn Đến ta nhận thấy profile định nghĩa tập hợp class khác nhau, nên thường ta chuyển ứng dụng Java viết cho profile chạy máy hỗ trợ profile khác Cũng với lý đó, bạn khơng thể lấy ứng dụng viết J2SE hay J2EE chạy máy hỗ trợ J2ME Sau profile tiêu biểu: Mobile Information Device Profile (MIDP): profile bổ sung tính hỗ trợ kết nối, thành phần hỗ trợ giao diện người dùng … vào CLDC Profile thiết kế chủ yếu để nhắm vào điện thọai diđộng với đặc tính hình hiển thị hạn chế, dung lượng chứa có hạn Do MIDP cung cấp giao diện người dùng đơn giản tính mạng đơn giản dựa HTTP Có thể nói MIDP profile tiếng kiến thức cholậptrình Java máy diđộng (Wireless Java) Giới thiệu MIDP (1) Định nghĩa: Đây Profile định nghĩa dành riêng chothiếtbịdiđộng thành phần J2ME MIDP cung cấp chức cho hầu hết dòngthiêtbịdiđộng phổ biến máy điện thoại diđộng máy PDA Tuy nhiên MIDP đũa thần cholậptrình viên biết, MIDP thiết kế cho máy diđộng có cấu hình thấp Những chức MIDP khơng thực được: • Phép tính dấu phẩy động (floating point): Phép tính đòi hỏi nhiều tài nguyên CPU phần lớn CPU chothiếtbịdiđộng không hỗ trợ phép tính này, MIDP khơng có • Bộ nạp lớp (Class Loader) • Hỗ trợ từ khóa finalize() J2SE: Việc “dọn dẹp“ tài nguyên trước bị xóa đẩy phía lậptrình viên • Khơng hỗ trợ JNI • Hỗ trợ hạn chế thao tác bắt lỗi • Phần lớn thư viện API cho Swing AWT sử dụng MIDP • Khơng hỗ trợ tính quản lý file thư mục: Đây làm bạn ngạc nhiên thực tế thiếtbị J2ME khơng có hỗ trợ thiếtbị lưu trữ thông thường ổ cứng v.v Tuy nhiên, điều khơng có nghĩa bạn phải liệu quan trọng tắt máy, Sun cung cấp chức khác tương đương gọi Record Management system (RMS) để cung cấp khả lưu trữ chothiếtbị Giới thiệu MIDP (2) Những chức MIDP cung cấp : • Các lớp kiểu liệu: lớp gói java.util Stack, Vector, Hastable Enumeration • Hỗ trợ đối tượng Display: chương trình MIDP hỗ trợ đối tượng Display,đối tượng quản lý việc hiển thị liệu hình điện thoại • Hỗ trợ Form giao diện người dùng • Hỗ trợ Timer Alert • Cung cấp tính Record Management System (RMS) cho việc lưu trữ liệu • Tháng 11 năm 2003 Sun tung MIDP 2.0 với hàng loạt tính khác cung cấp thêm so với 1.0 Những cải tiến bật so với MIDP 1.0 • Nâng cấp tính bảo mật như: Download qua mạng an toàn qua việc hỗ trợ giao thức HTTPS Kiểm soát việc kết nối máy diđộng server Giới thiệu MIDP (3) • • • Thêm API hỗ trợ Multimedia.Cải tiến hấp dẫn MIDP 2.0 tập API media Các API tập hỗ trợ âm Mobile Media API (MMAPI) Mở rộng tính Form Nhiều cải tiến đưa vào API javax.microedition.lcdui MIDP 2.0, thay đổi lớn (ngoài API cho game) Form Item Hỗ trợ lậptrình viên Game cách tung Game API.Với MIDP 1.0 lậptrình viên phải tự viết code để quản lý hành động nhân vật quản lý đồ họa Việc làm tăng kích thước file sản phẩm việc xuất đoạn mã bị lỗi Được hưởng lợi từ Game API MIDP 2.0 không lậptrình viên Game mà lậptrình viên cần sử dụng tính đồ họa cao cấp Ý tưởng Game API việc giả định hình game tập hợp layer (lớp) Ví dụ như: game đua xe hình layer, đường layer xe xem nằm layer khác Với Game API nhà phát triển cung cấp tính quản lý thao tác bàn phím Hỗ trợ kiểu ảnh RGB: cải tiến hấp dẫn cho nhà phát triển MIDP việc biểu diễn hình ảnh dạng mảng số nguyên, cho phép MIDlet thao tác với liệu hình ảnh cách trực tiếp Môi trường phát triển J2ME (1) Một môi trường phát triển tích hợp (IDE) nhằm để cải thiện suất lậptrình viên cách cung cấp tập cơng cụ lậptrình tích hợp thơng qua giao diện người dùng đồ họa (GUI) Một IDE cho J2ME cần phải cung cấp tiện ích sau: • Quản lý project - Quản lý tập tin nguồn thơng số MIDlet • Trình soạn thảo - Soạn thảo mã nguồn tài nguyên • Build (Biên dịch) obfuscate (tuỳ chọn): loại bỏ thông tin không cần thiết class (như tên biến cục bộ, lớp, phương thức, ) Ngồi việc bảo vệ mã nguồn, obfuscate giảm kích thước tập tin class, làm cho kích thước tập tin JAR giảm đi… pre-verify (tiền kiểm tra) • Đóng gói (package) - Đóng gói MIDlet thành tập tin JAR JAD • Giả lập (emulation) - Thực thi MIDlet với trình giả lập • Gỡ rối (debugger) - Gỡ rối MIDlet 10 Môi trường phát triển J2ME (3) Cài đặt J2SE vào máy tính, địa tải J2SE http://java.sun.com/j2se/ Cài đặt J2ME Wireless Toolkit, Địa http://java.sun.com/j2me/download.html Chọn "New Project " để tạo project Nhập tên project (tên file JAR tên thư mục project mới), nhập tên MIDlet class (là main class ứng dụng) Thư mục : “C:\WTK25-Beta2\apps\Vidu2\src”, nơi chứa source ứng dụng Có thể dùng chương trình soạn thảo văn để soạn code Tiến hành build run chương trình 12 Mơi trường phát triển J2ME (4) Nhấn vào "Settings " toolbar để vào menu cấu hình cho project Đừng để ý đến trường "MIDlet-Jar-Size" (với giá trị "100" bytes), Chúng ta làm cho giá trị tự thiếtlập Chọn MIDlets tab cửa sổ dialog cấu hình porject Chọn hàng bảng ("MIDlet-1") để làm chọn Sau nhấn vào nút "Edit“ Xố trường "Icon" khơng có tập tin *.PNG để đặt vào tập tin JAR Chấp nhận thay đổi (1) Project > Clean: Xoá tất tập tin *.class (2) Build : Build tất tập tin *.class preverify (3)Project > Package > Create Package: Sinh tập tin *.JAR *.JAD Khi làm bước trên, tập tin *.JAR *.JAD kết sẵn sàng thực thi chương trình mơ phỏng, hay đưa lên WWW site để download Trường kích thước *.JAR tập tin *.JAD tự Đừng quên thực bước rebuild 13 Chương trình đơn giản : Hello(Lời chào) import javax.microedition.lcdui.*; import javax.microedition.midlet.*; public class TestMidlet extends MIDlet { private Form mForm; public TestMidlet() { mForm = new Form("Lap trinh voi J2ME"); mForm.append(new StringItem(null, "Hello world!, MIDP!")); } public void startApp() { Display.getDisplay(this).setCurrent(mForm); } public void pauseApp() {} public void destroyApp(boolean unconditional) {} } 14 Vòng đời MIDlet Giống dạng chương trình Applet J2SE, Midlet luôn kế thừa javax.microedition.midlet Hàm Midlet startApp(), hàm khởi tạo Midlet vận hành thành phần đối tượng khác, Mỗi Midlet có pauseApp() destroyApp(), hàm đựợc gọi thực thi tương ứng user chọn dừng thoát chương trình 15 import javax.microedition.lcdui &midlet import javax.microedition.lcdui • Interfaces: Choice, CommandListener, ItemCommandListener, ItemStateListener • Classes: Alert, AlertType, Canvas,ChoiceGroup, Command, CustomItem, DateField, Display,Displayble, Font, Form,Gauge, Graphics, Image, ImageItem,Item, List, Screen, StringItem, TextBox, TextField,Ticker • Ví dụ ta khai báo: import javax.microedition.lcdui.*; Hoặc khai chi tiết import javax.microedition.lcdui.Display; import javax.microedition.lcdui.Form; import javax.microedition.lcdui.StringItem; import javax.microedition.lcdui.TextField; // import javax.microedition.midlet • Classes: MIDlet Ta khai báo: import javax.microedition.midlet.*; Hay : import javax.microedition.midlet.MIDlet; 16 Các thành phần giao diện mức cao ứng dụng MIDP Một ứng dụng MIDlet có đối tượng thể Display Đối tượng dùng để lấy thông tin đối tượng trình bày Một đối tượng Displayable thành phần hiển thị thiếtbị MIDP chứa lớp lớp Displayable Screen Canvas Một đối tượng Screen thiết bị, lớp Screen thừa kế thành phần hiển thị mức cao, thành phần hiển thị hình 17 Tạo Form Tạo Form :Form(String title, Item[] items); Ví dụ: TaoForm form.append("Tat ca cac ban"); import javax.microedition.lcdui.Display; import javax.microedition.lcdui.Form; import javax.microedition.lcdui.StringItem; import javax.microedition.lcdui.TextField; import javax.microedition.midlet.MIDlet; public class CreateForm extends MIDlet { protected Display display; // Flag indicating first call of startApp protected boolean started; protected void startApp() { if (!started) { display = Display.getDisplay(this); Form form = new Form("Tieu de Form"); form.append("Chao"); form.append("\nChung ta bat dau lam viec nao!\n Mot dong moi\n"); form.append("Day la mot dong rat dai chung ta khong viet chung tren mot dong duoc"); form.append(new TextField("Ho va ten:", "Le Thi Cham Chi", 32, TextField.ANY)); form.append("Dia chi:"); form.append(new TextField(null, null, 32, TextField.ANY)); display.setCurrent(form); started = true; } } protected void pauseApp() {} protected void destroyApp(boolean unconditional) {} } 18 Các hành động Các hành động (Command) như: Thoát (EXIT), trở lại (BACK) gọi phương thức Các Type: BACK, EXIT,CANCEL,HELP,ITEM,SCREEN,STOP,OK Command(String label, int commandType, int priority); Ví dụ: private Command cmExit; // khai báo cmExit = new Command("Exit", Command.EXIT, 1); // tạo hành động thoát fmMain.addCommand(cmExit); // đưa hành động vào Form fmMain.setCommandListener(this); // Listen for Event public void commandAction(Command c, Displayable s) { // Thực thi if (c == cmExit){ destroyApp(false); notifyDestroyed(); } } Ví dụ: CacHanhDong 19 Thành phần Form Khai báo: import javax.microedition.lcdui.Screen Một Form đơn giản khung chứa thành phần, mà thành phần thừa kế từ lớp Item • StringItem • • • • • • • TextField DateField Gauge ChoiceGroup Image and ImageItem CustomItem Spacer 20 StringItem TextField Một thành phần StringItem dùng để hiển thị nhãn hay chuỗi văn Người dùng thay đổi nhãn hay chuỗi văn chương trình chạy StringItem khơng nhận kiện Phương thức dựng lớp StringItem StringItem(String label, String text) Ví dụ StringItem :chuoi, chuoi2, chuoi3 Một thành phần TextField đối tượng nhập văn tiêu biểu Có thể định nhãn, số ký tự tối đa phép nhập, loại liệu phép nhập V TextField cho phép nhập vào mật mà ký tự nhập vào che ký tự mặt nạ Phương thức dựng lớp TextField TextField(String label, String text, int maxSize, int constraints) constraints: để xác định loại liệu phép nhập vào TextField MIDP định nghĩa tham số ràng buộc sau cho thành phần TextField: • ANY: nhập ký tự • EMAILADDR: cho phép nhập địa email hợp lệ • NUMERIC: cho phép nhập số • PHONENUMBER: Chỉ cho phép nhập số điện thoại • URL: Chỉ cho phép nhập ký tự hợp lệ bên URL • PASSWORD: che tất ký tự nhập vào Ví dụ TextField : ONhapLieu, TextField1,Login, TextField1,Login 21 DateField , Gauge Thành phần DateField: DateField thao tác đối tượng Date, định nghĩa java.util.Date Tạo đối tượng DateField: chỉnh sửa ngày, hay hai Các phương thức lớp DateField gồm: DateField(String label, int mode) DateField(String label, int mode, TimeZone timeZone) Các mode tương ứng lớp DateField gồm: DateField.DATE_TIME: cho phép thay đổi ngày DateField.TIME: cho phép thay đổi DateField.DATE: cho phép thay đổi ngày Ví dụ:hien Thành phần Gauge: Gauge mơ tả mức độ hồn thành cơng việc Có loại Gauge loại tương tác(thay đổi Gauge) không tương tác(cập nhật Gauge).Hàm dựng lớp Gauge: Gauge(String label, boolean interactive, int maxValue, int initialValue) private Gauge gaVolume; // Điều chỉnh âm lượng gaVolume = new Gauge("Sound Level", true, 100, 4); Ví dụ: HoanThanh ; Tổng hợp hai: bai4 ktra4 thoi,thay doi: ThoiGian, 22 ChoiceGroup Thành phần ChoiceGroup: ChoiceGroup chọn từ danh sách đầu vào định nghĩa trước ChoiceGroup(String label, int choiceType, String [] stringElements, Image[] imageElements); ChoiceType có loại: • EXCLUSIVE (chọn mục): nhóm liên quan đến radio button • MULTIPLE (chọn nhiều mục): nhóm liên quan nhóm checkbox private ChoiceGroup radio1; private int defaultIndex; private int RadioGroup; radio1 = new ChoiceGroup(“Moi ban chon:", Choice.EXCLUSIVE); radio1.append(“Chon 1", null); radio1.append(“Chon 2", null); defaultIndex = radio1.append(“Chon 3", null); radio1.setSelectedIndex(defaultIndex, true); radioButtonsIndex = form.append(radio1); public void itemStateChanged(Item item){ if (item == radio1){ StringItem msg = new StringItem(“Ban da chon: ", radio1.getString(radio1.getSelectedIndex())); form.append(msg); } } Ví dụ:chon nhieu muc (CheckBox): NhomChon Chon mot muc (Radio): NhomChonRadio, NhomChonRadio1 Tổng hợp: ktra5 (multile); ktra6 (exclusive) 23 Image and ImageItem Hai lớp hiển thị hình ảnh: Image ImageItem ImageItem Image dùng tạo đối tượng hình ảnh giữ thơng tin chiều cao, chiều rộng, dù ảnh có biến đổi hay không Lớp ImageItem: ảnh hiển thị, ví dụ ảnh đặt trung tâm, bên trái, bên hình MIDP đưa loại hình ảnh loại khơng biến đổi biến đổi Một ảnh khơng biến đổi kể từ lúc tạo Loại ảnh đọc từ tập tin Một ảnh biến đổi vùng nhớ Điều tùy thuộc vào việc bạn tạo nội dung ảnh b ằng cách ghi lên vùng nhớ Các phương thức dựng cho lớp Image ImageItem • Image createImage(String name) • Image createImage(Image source) • Image createImage(int width, int height) • Image createImage(Image image, int x, int y, int width,int height, int transform)(TOP|LEFT) •I mageItem(String label, Image img, int layout, String altText) Form fmMain = new Form("Images"); // Tao mot image Image img = Image.createImage("/terrain1.png"); // Them vao form fmMain.append(new ImageItem(null, img, ImageItem.LAYOUT_CENTER, null)); Ví dụ: HinhAnh 24 Thành phần List, Textbox List không tường minh đuợc dùng để thể thực đơn chọn lựa List(String title, int listType, String[] stringElements, Image[] imageElements); Ví dụ: Danh sách phần image - DanhSach Danh sách chọn kiểu checkbox - DanhSachCheckBox chọn mode (listType) danh sách - DanhSach1 TextBox dùng phép nhập nhiều dòng TextBox TextField có ràng buộc giống cho phép nhâp liệu Ví dụ ANY, EMAIL, URI… Phương thức dựng TextBox: TextBox(String title, String text, int maxSize, int constraints) Ví dụ: Viết lời chào dùng TextBox – HelloTextBox Nhap du lieu - NhapTextBox 25 Alert, Ticker Một Alert đơn giản hộp thoại nhỏ Có loại Alert: • Modal: hộp thoại thơng báo trình bày đến người dùng ấn nút đồng ý • Non-modal: hộp thoại thơng báo trình bày số giây định Các phương thức dựng Alert: Alert(String title) Alert(String title, String alertText, Image alertImage, AlertType alertType) AlertType sử dụng âm để thông báo cho người dùng biết có kiện xảy AlertType bao gồm loại âm định sẵn là: thông báo, xác nhận, báo lỗi, thông báo cảnh báo Các phương thức dựng Alert cho biết Alert bao gồm tham chiếu đến đối tượng AlertType Ví dụ: Thơng báo có sử dụng ảnh – ThongBao1 Hai loại thông báo – ThongBao2 Các loại thông báo - HopThoaiBao Ticker thể đoạn chuỗi chạy theo chiều ngang Tham số Ticker đoạn văn trình bày Tốc độ chiều xác định việc cài đặt thiếtbị Phương thức dựng Ticker Ticker(String str) Từ phân cấp,ta thấy Ticker không lớp lớp Screen mà Ticker biến lớp Screen Nghĩa Ticker gắn vào lớp lớp Screen bao gồm Alert Ví dụ: Chạy dòng chữ - ChuoiChay,Ticker1, Ticker1 26 ... cung cấp chức cho hầu hết dòng thiêt bị di động phổ biến máy điện thoại di động máy PDA Tuy nhiên MIDP đũa thần cho lập trình viên biết, MIDP thiết kế cho máy di động có cấu hình thấp Những chức... kiến thức cho lập trình Java máy di động (Wireless Java) Giới thiệu MIDP (1) Định nghĩa: Đây Profile định nghĩa dành riêng cho thiết bị di động thành phần J2ME MIDP cung cấp chức cho hầu hết... loại thiết bị như: • Các loại thẻ cá nhân Java Card • Máy điện thoại di động • Máy PDA (Personal Digital Assistant - thiết bị trợ giúp cá nhân) • Các hộp điều khiển dành cho tivi, thiết bị giải