1. Trang chủ
  2. » Luận Văn - Báo Cáo

Tìm hiểu kỹ thuật lập trình trên điện thoại di động

42 6 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Khố luận tốt nghiệp Tìm hiểu kỹ thuật lập trình trờn in thoi di ng Tr-ờng đại học vinh Khoa c«ng nghƯ th«ng tin - Đỗ Thị Hồng Tóm tắt Khoá luận tốt nghiệp đại học Tìm hiểu kỹ thuật lập trình điện thoại di động Chuyên ngành: cử nhân công nghệ thông tin Giáo viên h-ớng dẫn: Th.s Lê Văn Tấn Vinh 2008 Sinh viờn thực hiện: Đỗ Thị Hồng – Lớp 44E2 - CNTT Khố luận tốt nghiệp Tìm hiểu kỹ thuật lập trình điện thoại di động LỜI NĨI ĐẦU Cơng nghệ di động ngày phát triển Chiếc điện thoại di động không phương tiện liên lạc mà phương tiện phục vụ nhu cầu giải trí người Cơng nghệ Java công nghệ tiên phong xâm nhập vào lĩnh vực ứng dụng cho thiết bị di động Nếu bạn có thiết bị di động hỗ trợ Java, bạn chơi Game, chạy ứng dụng viết Java điện thoại đâu lúc điện thoại di động hỗ trợ mạnh âm thanh, hình ảnh, đồ hoạ Để góp phần làm tăng tính giải trí điện thoại di động đồng thời tìm hiểu việc xây dựng ứng dụng điện thoại di động, nên em mạnh dạn tìm hiểu kỹ thuật lập trình điện thoại di động Nội dung đề tài gồm: Chương I: Tổng quan Chương II: Tìm hiểu J2ME Chương III: Kỹ thuật lập trình diện thoại di động Chương IV: Thử nghiệm Để hồn thành khố luận em xin bày tỏ lòng biết ơn sâu sắc tới thầy giáo Th.S Lê Văn Tấn - người tận tình hướng dẫn, giúp đỡ em kể từ nhận đề tài khố luận hồn thành Em xin chân thành cảm ơn thầy giáo, cô giáo khoa CNTT, bạn bè, người thân động viên, giúp đỡ, tạo điều kiện cho em suốt trình học tập thực đề tài Em xin chân thành cảm ơn! Vinh, tháng năm 2008 Sinh viên thực Đỗ Thị Hồng Sinh viên thực hiện: Đỗ Thị Hồng – Lớp 44E2 - CNTT Khố luận tốt nghiệp Tìm hiểu kỹ thuật lập trình điện thoại di động CHƢƠNG I:TỔNG QUAN Lý chọn đề tài Công nghệ thơng tin ngày có vai trị quan trong sống hàng ngày Việc ứng dụng công nghệ thông tin vào lĩnh vực đời sống giúp công việc tiến hành cách nhanh chóng hiệu Có nhiều cơng nghệ phát triển song song với việc phát triển công nghệ thông tin Bluetooth, ADSL, Wireless, Mobile, WAP,…nhằm giúp công nghệ thông tin ngày thân thiết với người dùng Một cơng nghệ mà góp phần không nhỏ việc đưa công nghệ thông tin đến với người sử dụng công nghệ di động Với tốc độ phát triển công nghệ di động ngày lợi ích mà mang lại cho lớn Không giống điện thoại trước – có nhiệm vụ thoại, điện thoại hỗ trợ nhiều ứng dụng khác như: gửi/nhận mail, truy cập Intenet, xem phim, nghe nhạc, chơi game,… Những điện thoại di động hỗ trợ mạnh âm thanh, hình ảnh, đồ hoạ Để góp phần làm tăng tính giải trí điện thoại di động đồng thời tìm hiểu việc xây dựng ứng dụng điện thoại di động, nên em chọn đề tài “Tìm hiểu kỹ thuật lập trình điện thoại di động” nhằm khai thác tính mạnh điện thoại di động Mục tiêu Sau thực hiện, mục tiêu cần đạt là: - Hiểu chi tiết J2ME ứng dụng để lập trình thiết bị di động - Nắm kỹ thuật xử lý âm thanh, hình ảnh, phím kỹ thuật lưu trữ điện thoại di động - Ứng dụng kết nghiên cứu xây dựng ứng dụng nhằm khai thác điểm mạnh âm thanh, hình ảnh, đồ họa nhằm phục vụ cho nhu cầu giải trí người dùng Sinh viên thực hiện: Đỗ Thị Hồng – Lớp 44E2 - CNTT Khố luận tốt nghiệp Tìm hiểu kỹ thuật lập trình điện thoại di động Đối tƣợng nghiên cứu Để xây dựng ứng dụng điện thoại di động, đối tượng cần tìm hiểu gồm phần sau: - Nghiên cứu ngơn ngữ lập trình Java cơng nghệ J2ME ứng dụng lập trình điện thoại di động - Nghiên cứu kỹ thuật xử lý đồ họa hoạt hình - Nghiên cứu kỹ thuật xử lý phím điện thoại di động - Nghiên cứu kỹ thuật xử lý âm điện thoại di động - Nghiên cứu kỹ thuật lưu trữ liệu điện thoại di động Phạm vi nghiên cứu Nghiên cứu công nghệ J2ME tìm hiểu kỹ thuật lập trình điện thoại di động Ứng dụng kết nghiên cứu để xây dựng chương trình ứng dụng cho điện thoại di động Môi trƣờng thực - Hệ điều hành Windows XP - JDK 1.4.2 - J2ME Wireless Toolkit 1.0 - EclipseME - Borland JBuiler 9X Sinh viên thực hiện: Đỗ Thị Hồng – Lớp 44E2 - CNTT Khố luận tốt nghiệp Tìm hiểu kỹ thuật lập trình điện thoại di động CHƢƠNG II: TÌM HIỂU VỀ J2ME Công nghệ di động ngày phát triển Chiếc điện thoại di động khơng cịn đơn giản thực nhiệm vụ thoại mà trở nên thiếu nhu cầu thông tin, giải trí người Cơng nghệ Java công nghệ tiên phong việc xâm nhập vào lĩnh vực di động Nếu bạn có điện thoại di động hỗ trợ Java, bạn chơi game, chạy ứng dụng viết Java nơi đâu lúc I GIỚI THIỆU VỀ JAVA Vào năm 1990, Java đời từ dự án xanh (Green Project) ban đầu xây dựng để kiểm soát thiết bị dân dụng TV, VCR, đèn, điện thoại số thiết bị cầm tay Java xây dựng chủ yếu dựa công cụ phát triển (Java Development Kit – JDK) chứa trình biên dịch, trình thơng dịch, giúp đỡ, tài liệu,… Đây tảng cho việc phát triển ứng dụng Java Với phát triển Java nay, nhà phát triển xây dựng nhiều nhánh cho Java như: JavaMail(thư điện tử), Java TAPI( viễn thông), Java3D (đồ hoạ chiều), J2ME (ứng dụng cho thiết bị di động) Java có phiên sau: TM J2EE (Java Platform, Enterprise Edition): phiên dành cho máy chủ lớn với sức mạnh xử lý dung lượng nhớ lớn TM J2SE (Java Platform, Standard Edition): phiên chuẩn chạy máy PC laptop với số MB nhớ Các máy tính khơng mạnh máy chủ mạnh nhiều so với thiết bị di động TM J2ME (Java Platform, Micro Edition): phiên rút gọn Java cho thiết bị di động giới hạn nhớ xử lý II GIỚI THIỆU VỀ J2ME VÀ ỨNG DỤNG LẬP TRÌNH CHO ĐIỆN THOẠI DI ĐỘNG Giới thiệu J2ME 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 Sinh viên thực hiện: Đỗ Thị Hồng – Lớp 44E2 - CNTT Khố luận tốt nghiệp Tìm hiểu kỹ thuật lập trình điện thoại di động Personal Java 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 cho thiết bị có tính chất nhỏ, gọn (Micro có nghĩa nhỏ tiếng Anh) Mục tiêu J2ME cho phép người lập trình viết ứng dụng độc lập với thiết bị di động, không cần quan tâm đến phần cứng thật Để đạt mục tiêu này, J2ME xây dựng tầng (layer) khác để giấu việc thực phần cứng khỏi nhà phát triển Mỗi tầng tầng phần cứng tầng trừu tượng, 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 - Tầng phần cứng thiết bị (Device Hardware Layer): thiết bị di động thật với cấu hình phần cứng (bộ nhớ tốc độ xử lý) cụ thể Các thiết bị di động có vi xử lý khác tập lệnh khác Mục tiêu J2ME cung cấp chuẩn cho tất loại thiết bị di động khác - Tầng máy ảo Java (JAVA Virtual Machine Layer): mã nguồn Java biên dịch chuyển đổi thành mã bytecode Mã bytecode sau chuyển thành mã ngơn ngữ máy thiết bị di động Tầng máy ảo bao gồm KVM ( K Virtual Machine) biên dịch mã bytecode có nhiệm vụ chuyển mã bytecode chương trình Java thành ngôn ngữ máy để chạy thiết bị di động Tầng cung cấp chuẩn hoá cho thiết bị di động để ứng dụng J2ME sau biên dịch chạy thiết bị di động có hỗ trợ J2ME KVM - Tầng cấu hình (Configuration Layer): cung cấp hàm API nhân J2ME Lập trình viên sử dụng lớp phương thức API nhiên tập API hữu dụng chứa tầng trạng (profile layer) - Tầng trạng (profile layer): cung cấp tập hàm API hữu dụng cho lập trình Mục đích tập trạng xây dựng nên lớp cấu hình cung cấp nhiều thư viện ứng dụng hơn, MIDP định nghĩa API riêng biệt cho thiết bị di động Giới thiệu thành phần tảng J2ME a Định nghĩa Configuration(Cấu hình): đặc tả định nghĩa môi trường Sinh viên thực hiện: Đỗ Thị Hồng – Lớp 44E2 - CNTT Khố luận tốt nghiệp Tìm hiểu kỹ thuật lập trình điện thoại di động phần mềm cho dòng thiết bị 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ết bị Samsung, Nokia …bắt buộc phải thực thi đầy đủ đặc tả Sun qui định để lập trình viên dựa vào mơi trường lập trình qn thông qua quán này, ứng dụng tạo mang tính độc lập thiết bị cao Ví dụ lập trình viên viết chương trình game cho điện thoại Samsung sửa đổi chương trình cách tối thiểu để chạy điện thọai Nokia Qua ta thấy hiệu “Write Once, Run Everywhere” Java khơng cịn ta phải đánh giá cao nổ lực Sun việc tạo môi trường phần mềm chung cho vơ số chủng loại thiết bị di động có thị trường Hiện Sun đưa dạng Configuration CLDC CDC - 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 thiết bị cấp thấp (lowend), thiết bị thông thường máy điện thọai 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ết bị kết nối): CDC đưa nhắm đến thiết bị có tính mạnh dịng thiết bị thuộc CLDC yếu hệ thống máy để bàn sử dụng J2SE Những thiết bị 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ết bị gia dụng gia đình … Cả dạng Cấu hình kể chứa máy ảo Java (Java Virtual Machine) tập hợp lớp (class) Java để cung cấp môi trường cho ứng dụng J2ME Tuy nhiên, phải ý thiết bị cấp thấp, hạn chế tài nguyên nhớ xử lý nên yêu cầu máy ảo hỗ trợ tất Sinh viên thực hiện: Đỗ Thị Hồng – Lớp 44E2 - CNTT Khố luận tốt nghiệp Tìm hiểu kỹ thuật lập trình điện thoại di động tính với máy ảo J2SE, ví dụ, thiết bị thuộc CLDC khơng có phần cứng u cầu phép tính tốn dấu phẩy động, nên máy ảo thuộc CLDC không yêu cầu hỗ trợ kiểu float double b Định nghĩa Profile Profile mở rộng Configuration cách thêm vào class để bổ trợ tính cho thiết bị 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 Chúng ta điểm qua 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 cho lập trình Java máy di động (Wireless Java) Hiện nay, MIDP có hai phiên MIDP 1.0 MIDP 2.0 Những chức mà MIDP cung cấp: - Các lớp kiểu liệu: phần lớn lớp quen thuộc với lập trình viên Java giữ lại, ví dụ: lớp gói java.util Stack, Vector, Hastable,… - Hỗ trợ đối tượng Display: chương trình MIDP hỗ trợ đối tượng Display,là đố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 - Record Management System (RMS) cho việc lưu trữ liệu MIDP 2.0 SUN cho đời vào tháng 11/2003 với hàng loạt tính (hiện Sinh viên thực hiện: Đỗ Thị Hồng – Lớp 44E2 - CNTT Khoá luận tốt nghiệp Tìm hiểu kỹ thuật lập trình điện thoại di động số loại điện thoại hỗ trợ MIDP 2.0 Nokia 6600, Sony Ericssion P900) - Nâng cấp tính bảo mật: doanload 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 với Server: ví dụ chương trình khơng thể kết nối đến server khơng có chấp nhận người dùng - Thêm API hỗ trợ Multimedia: Mobile Media API (MMAPI) - Mở rộng tính Form: nhiều cải tiến đưa vào API javaxmicroedition.lcdui, thay đổi lớn Form Item - Hỗ trợ lập trình game với Game API: Trước với MIDP 1.0, lập trình viên phải tự viết code cho hành động nhân vật đồ họa Việc làm tăng kích thước chương trình khả lỗi Với Game API MIDP 2.0, công việc trở nên nhẹ nhàng nhiều Ý tưởng cở Game API giả định hình game tập hợp lớp (layer) Ví dụ: game đua xe hình layer, đường layer xe layer khác - Hỗ trợ kiểu ảnh RGB: cải tiến hấp dẫn cho nhà phát triển MIDP biểu diễn hình ảnh dạng mảng số nguyên, cho phép thao tác với liệu hình ảnh cách trực tiếp Trong đề tài em tập trung vào MIDP 1.0 điện thoại hỗ trợ MIDP 1.0 nhiều hỗ trợ MIDP 2.0 tương đối + PDA Profile: tương tự MIDP, với thị trường máy PDA với hình nhớ lớn + Foundation Profile: cho phép mở rộng tính CDC với phần lớn thư viện Core Java 1.3 MIDlet Các ứng dụng J2ME gọi MIDlet (Mobile Imformation Device Applet) Một MIDlet lớp Java mở rộng(extend) lớp trừu tượng java.microedition.midlet.MIDlet thực thi (implement) phương thức startApp(), pauseApp() destroyApp() Bộ khung yêu cầu tối thiểu ứng dụng MIDlet Import javax.microedition.midlet.*; Sinh viên thực hiện: Đỗ Thị Hồng – Lớp 44E2 - CNTT Khố luận tốt nghiệp Tìm hiểu kỹ thuật lập trình điện thoại di động Public class exampleMIDlet extends MIDlet { Public exampleMIDlet(){} Public void startApp(){} Public void pauseApp(){} Public void destroyApp(boolean unconditional){} } Các phát biểu import đựơc dùng đề include lớp cần thiết từ thư viện CLDC MIDP - Phần MIDlet: định nghĩa lớp mở rộng lớp MIDlet, ví dụ exampleMIDlet - Hàm tạo (Constructor): hàm tạo thực thi lần MIDlet khởi tạo lần đầu tiên, hàm tạo khơng gọi lại trừ MIDlet sau khởi động lại - StartApp(): phương thức startApp() gọi quản lý ứng dụng MIDlet khởi tạo hay MIDlet trở trạng thái tạm dừng - PauseApp(): phương thức pauseApp() gọi quản lý ứng dụng ứng dụng cần tạm dừng - DestroyApp(): phương thức gọi thoát MIDlet * Chu kỳ sống MIDlet Sơ đồ biều diễn chu kỳ sống Midlet Chương trình c Tạm dừng startApp() pauseApp() Hoạt động destroyApp() Huỷ Sinh viên thực hiện: Đỗ Thị Hồng – Lớp 44E2 - CNTT 10 Khố luận tốt nghiệp Tìm hiểu kỹ thuật lập trình điện thoại di động Những khó khăn hƣớng giải xử lý âm Ta thấy qua tìm hiểu ba loại điện thoại khác Nokia, Samsung, Ericssion sử dụng MIDP 1.0, cách lập trình xử lý âm khác Một số khó khăn mà thấy lập trình âm cho loại điện thoại di động là: - MIDP 1.0 không hỗ trợ âm nên khơng có chuẩn cụ thể cho việc lập trình âm dịng điện thoại di động khác - Mỗi nhà sản xuất điều cung cấp API riêng cho sản phẩm họ - Âm mà nhà sản xuất dùng cho điện thoại họ khác Vậy để viết ứng dụng chạy dịng sản phẩm khác mà khơng cần phải viết nhiều lần cho nhiều dòng sản phẩm khác ? Cách giải sau: - Tạo lớp trừu tượng cho việc xử lý âm chung, gồm phương thức để chơi nhạc - Tạo lớp chơi âm ứng với dòng sản phẩm tương ứng kế thừa từ lớp trừu tượng - Dùng className đề tìm số lớp đặc trưng sản phẩm, tìm thấy xác định sản phẩm thuộc loại dùng lớp tương ứng để chơi nhạc Cài đặt chi tiết cách xử lý âm sau: public class AbSound { //Lớp Abstract cho việc chơi âm public AbSound(){} public void StopSound(){} public void PlaySound(int i, int j, int k){} public synchronized void sound(byte type){} public void a(int i){} Sinh viên thực hiện: Đỗ Thị Hồng – Lớp 44E2 - CNTT 28 Khoá luận tốt nghiệp Tìm hiểu kỹ thuật lập trình điện thoại di động public void Init(){} public void Vibration(){} public void Light(){} } Lớp âm cho Nokia: import com.nokia.mid.sound.*; import java.io.*; import com.nokia.mid.ui.DeviceControl; public class soundnokia extends AbSound implements SoundListener { // Khai báo biến âm // Cài đặt tất phương thức trừu tượng public void StopSound() { // Code Nokia } public void PlaySound(int i, int j, int k) { // Code Nokia } public synchronized void sound(byte type) { // Code Nokia } } Lớp âm cho SAMSUNG: import com.samsung.util.*; public class SoundSS extends AbSound Sinh viên thực hiện: Đỗ Thị Hồng – Lớp 44E2 - CNTT 29 Khố luận tốt nghiệp Tìm hiểu kỹ thuật lập trình điện thoại di động { // Khai báo biến âm // Cài đặt tất phương thức trừu tượng public void PlaySound(int j, int k, int l) { // Code play nhạc Samsung } public void StopSound() { // Code Stop nhạc Samsung } public synchronized void sound(byte type) { Code // Samsung } public void Vibration() { Code // Samsung } public void Light() { Code // Samsung } } Tương tự cho máy khác ta cài đặt Sau để sử dụng ta cần có lớp Detect Sound sau: public class DetectSound { public DetectSound(String s, String s1){} public static AbSound Init() { Sinh viên thực hiện: Đỗ Thị Hồng – Lớp 44E2 - CNTT 30 Khố luận tốt nghiệp Tìm hiểu kỹ thuật lập trình điện thoại di động AbSound q1; try { Class.forName("com.nokia.mid.sound.Sound"); Class.forName("com.nokia.mid.sound.SoundListener"); Class.forName("com.nokia.mid.ui.DeviceControl"); Class class1 = Class.forName("soundnokia"); q1 = (AbSound)class1.newInstance(); } catch(Exception exception) { try { Class.forName("com.samsung.util.AudioClip"); Class.forName("com.samsung.util.Vibration"); Class.forName("com.samsung.util.LCDLight"); Class class2 = Class.forName("SoundSS"); q1 = (AbSound)class2.newInstance(); } catch(Exception exception1) { q1 = new AbSound(); } } return q1; } } Trong ứng dụng, cần sử dụng âm ta cần gọi phương thức Init() để xác định xem loại điện thoại sử dụng AbSound ss=DetectSound.Init(); Sinh viên thực hiện: Đỗ Thị Hồng – Lớp 44E2 - CNTT 31 Khố luận tốt nghiệp Tìm hiểu kỹ thuật lập trình điện thoại di động V XỬ LÝ LƢU TRỮ DỮ LIỆU Giới thiệu hệ thống lƣu trữ liệu điện thoại di động Việc lưu trữ thông tin cho việc khởi tạo ứng dụng cần thiết quan trọng Thông tin mà ứng dụng lưu trữ thơng tin cấu hình ứng dụng, thơng tin q trình sử dụng ứng dụng,…Đối với máy PC việc tương đối dễ dàng có tay nhiều thiết bị lưu trữ HDD, CD-ROM, USB DISK,…nhưng việc tương đối khó khăn ứng dụng điện thoại di động MIDP cung cấp cho đối tượng lưu trữ Record Management System (RMS) cho phép lưu trữ thông tin dạng record Các đối tượng cung cấp tromg gói javax.microedition.rms Một vùng nhớ thiết bị sử dụng MIDP dành riêng cho việc lưu trữ liệu ứng dụng MIDlet Vị trí kích thước vùng lưu trữ xác định tùy thuộc vào thiết bị cụ thể RMS cho phép lưu trữ liệu ứng dụng thoát, khởi động lại thiết bị di động tắt hay thay pin Dữ liệu ứng dụng tồn thiết bị di động ứng dụng thật xóa khỏi thiết bị di động Khi MIDlet bị xóa, tất record mà lưu trữ bị xố Hình sau minh hoạ việc lưu trữ liệu Midlet Lưu trữ ghi Midlet Midlet Lưu trữ ghi Lưu trữ ghi Sinh viên thực hiện: Đỗ Thị Hồng – Lớp 44E2 - CNTT 32 Khố luận tốt nghiệp Tìm hiểu kỹ thuật lập trình điện thoại di động Như hình vẽ, MIDlet có nhiều tập hợp record chúng truy xuất đến tập hợp liệu lưu MIDlet mà chúng lưu trữ Do đó, MIDlet MIDlet truy truy xuất đến Record Store Record Store chúng truy xuất đến Record Store Ngược lại, MIDlet truy xuất Record Store mà truy xuất đến Record Store Record Store Tên lưu trữ liệu phải MIDlet MIDlet khác trùng tên Hệ thống RMS lưu trữ ghi theo mảng byte Các mảng byte có chiều dài khác mảng byte gán số ID ghi Các ghi định danh số ID Các số ID đánh số Các số ID tăng dần không dùng lại cho dù ghi có bị xố nên tồn số khoảng trống ID ghi MIDP khơng kiểm sốt việc ghi q số ghi tối đa, điều phụ thuộc vào ứng dụng Định dạng, thêm, xóa record Thêm record gồm bước: bước định dạng record theo yêu cầu bước hai thêm record định dạng vào RMS RMS không hỗ trợ hố ta phải định dạng mảng byte để lưu trữ ghi Sau ví dụ việc định dạng lưu trữ ghi, mở RMS sau thêm liệu ghi vào RMS ByteArrayOutputStreambaos=new ByteArrayOutputStream(); DataOutoutStream = DataOutputStream(baos); outputStream.writeByte(„T‟); outputStream.writeInt(score); outputStream.writeUTF(name); byte[] theRecord=baos.toByteArray(); recordStore rs=null; rs=RecordStore.openRecordStore(“RecordStoreName”,Creat eINotExist); int RecordID=rs.addRecord(theRecord,0,theRecord.length); Sinh viên thực hiện: Đỗ Thị Hồng – Lớp 44E2 - CNTT 33 Khố luận tốt nghiệp Byte Tìm hiểu kỹ thuật lập trình điện thoại di động Byte Byte Byte Byte Record ID Record ID Byte Byte Byte Byte Byte Byte Byte Byte Byte T Score Name a Định dạng liệu ghi Trong ví dụ hai dòng đầu tạo luồng xuất để ghi liệu ghi Sử dụng đối tượng DataOutputStream cho phép ghi dễ dàng định dạng theo kiểu chuẩn Java (long, int ,string,…) mà quan tâm đến việc tách thành liệu dạng byte Phương thức writeInt(), writeByte(), writeUTF() định dạng liệu hình vẽ (tag, score, name) Sử dụng thẻ tag làm có ích để xác định loại record sau Phương thức toByteArray() chép liệu luồng xuất thành mảng byte chứa ghi để lưu trữ Biến theRecord tham chiếu đến liệu động định dạng b Thêm record RMS Khi liệu định dạng, thêm vào RMS Phương thức openRecordStore() tạo mở RMS với tên RecordStoreName Phương thức addRecord dùng để thêm record byte theRecord trả ID ghi gắn với record c Xóa ghi Bản ghi xóa cách chuyển số ID ghi cho phương thức deleteRecord() đối tượng RecordStore Khi ghi có ID xóa, thêm ghi ghi có ID 8, ID không dùng lại d Lọc ghi (Filtering Records) Giao diện RecordFilter cung cấp cách thuận tiện để lọc ghi theo tiêu chuẩn định, RecordEnumeration dùng để duyệt qua ghi trả record phù hợp với tiêu chuẩn xác định Giao diện RecordFilter có phương thức matches() dùng để xác định tiêu chuẩn phù hợp Phương thức matches() có tham số đầu vào mảng byte biểu diễn Sinh viên thực hiện: Đỗ Thị Hồng – Lớp 44E2 - CNTT 34 Khố luận tốt nghiệp Tìm hiểu kỹ thuật lập trình điện thoại di động ghi Phương thức trả true ghi phù hợp với tiêu chuẩn định nghĩa e Sắp xếp ghi Các ghi RMS xếp theo thứ tự định nghĩa.Việc xếp thực thông qua giao diện RecordComparator Giao diện có phương thức compare() phải implement để định nghĩa cách hai ghi so sánh theo thứ tự Các tham số đầu vào hai mảng byte biểu diễn hai record Class IntegerFilter implements RecordFilter { Public boolean matches(byte [] candidate) throws IlleegalArgumentException { Return (candidate[0]==‟T‟); } Trong ví dụ trên, IntegerFilter dùng để lọc ghi có byte T Nên nhớ ghi khơng có định dạng nên việc sử dụng byte làm thẻ tag có ích Phương thức matches trả true byte T Sinh viên thực hiện: Đỗ Thị Hồng – Lớp 44E2 - CNTT 35 Khố luận tốt nghiệp Tìm hiểu kỹ thuật lập trình điện thoại di động CHƢƠNG IV: THỬ NGHIỆM Bài toán Ứng dụng kết tìm hiểu vào việc xây dựng chương trình máy tính (calculator) điện thoại di động Cơng cụ cài đặt Để thực thi ứng dụng cần cài đặt công cụ sau: - JDK - 1_5_0_15-windows-i586-p: Bộ công cụ phát triển ứng dụng java - Sun_java_wireless_toolkit-2_5_2 – windows: Mơi trường xây dựng đóng gói ứng dụng không dây J2ME - Notepad, wordpad, eclipse, dùng để soạn thảo code Nội dung chƣơng trình Thuật tốn mơ tả chương trình máy tính điện thoại di đông sau: public final class Maytinh extends MIDlet implements CommandListener { private static final int NUM_SIZE = 20; private final Command exitCmd = new Command("Exit", Command.EXIT, 1); private final Command calcCmd = new Command("OK", Command.SCREEN, 2); private final TextField t1 = new TextField(null, "", NUM_SIZE, TextField.DECIMAL); private final TextField t2 = new TextField(null, "", NUM_SIZE, TextField.DECIMAL); private final TextField tr = newTextField("Ket qua", "", NUM_SIZE, TextField.UNEDITABLE); private final ChoiceGroup cg = new ChoiceGroup("", ChoiceGroup.POPUP, Sinh viên thực hiện: Đỗ Thị Hồng – Lớp 44E2 - CNTT 36 Khố luận tốt nghiệp Tìm hiểu kỹ thuật lập trình điện thoại di động new String[] { " Cong ", " tru ", " Nhân ", " Chia " }, null); private final Alert alert = new Alert("Error", "", null, AlertType.ERROR); private boolean isInitialized = false; protected void startApp() { if (isInitialized) { return; } Form f = new Form("Máy Tính"); f.append(t1); f.append(cg); f.append(t2); f.append(tr); f.addCommand(exitCmd); f.addCommand(calcCmd); f.setCommandListener(this); Display.getDisplay(this).setCurrent(f); alert.addCommand(newCommand("Back",Command.SCREEN, 1)); isInitialized = true; } protected void destroyApp(boolean unconditional) { } protected void pauseApp() { } public void commandAction(Command c, Displayable d) { if (c == exitCmd) { destroyApp(false); notifyDestroyed(); return; } double res = 0.0; Sinh viên thực hiện: Đỗ Thị Hồng – Lớp 44E2 - CNTT 37 Khố luận tốt nghiệp Tìm hiểu kỹ thuật lập trình điện thoại di động try { double n1 = getNumber(t1, "First"); double n2 = getNumber(t2, "Second"); switch (cg.getSelectedIndex()) { case 0: res = n1 + n2; break; case 1: res = n1 - n2; break; case 2: res = n1 * n2; break; case 3: res = n1 / n2; break; default: } } catch (NumberFormatException e) { return; } catch (ArithmeticException e) { alert.setString("Divide by zero."); Display.getDisplay(this).setCurrent(alert); return; } String res_str = Double.toString(res); Sinh viên thực hiện: Đỗ Thị Hồng – Lớp 44E2 - CNTT 38 Khoá luận tốt nghiệp Tìm hiểu kỹ thuật lập trình điện thoại di động if (res_str.length() > tr.getMaxSize()) { tr.setMaxSize(res_str.length()); } tr.setString(res_str); } private double getNumber(TextField t, String type) throws NumberFormatException { String s = t.getString(); if (s.length() == 0) { alert.setString("No " + type + " Argument"); Display.getDisplay(this).setCurrent(alert); throw new NumberFormatException(); } double n; try { n = Double.parseDouble(s); } catch (NumberFormatException e) { alert.setString(type + " argument is out of range."); Display.getDisplay(this).setCurrent(alert); throw e; } return n; } } Sinh viên thực hiện: Đỗ Thị Hồng – Lớp 44E2 - CNTT 39 Khố luận tốt nghiệp Tìm hiểu kỹ thuật lập trình điện thoại di động Kết thực - Xây dựng thành công ứng dụng “Máy tính” chạy điện thoại di động - Ứng dụng kỹ thuật nghiên cứu vào thực tế cách hiệu - Chương trình kiểm tra thành công chạy tốt máy ảo Nokia, Samsung * Màn hình kết Sinh viên thực hiện: Đỗ Thị Hồng – Lớp 44E2 - CNTT 40 Khố luận tốt nghiệp Tìm hiểu kỹ thuật lập trình điện thoại di động KẾT LUẬN Sau thực đề tài “tìm hiểu kỹ thuật lập trình điện thoại di động”, em tìm hiểu số kỹ thuật lập trình điện thoại di động xây dựng ứng dụng thực tế từ kết tìm hiểu Ba phần trọng tâm mà em tìm hiểu : - Kỹ thuật xử lý hình ảnh - Kỹ thuật xử lý phím bấm - Kỹ thuật xử lý âm Những kết ứng dụng thành cơng việc xây dựng chương trình máy tính điện thoại di động, ứng dụng kiểm tra thành công máy ảo loại điện thoại Nokia SAMSUNG Em hy vọng kết mà em tìm hiểu góp phần tài liệu có ích cho bạn sinh viên nghiên cứu viết ứng dụng điện thoại di động Hướng phát triển Hiện nay, lập trình điện thoại di động lĩnh vực thu hút nhiều lập trình viên Việc xây dựng ứng dụng điện thoại cần thiết nhu cầu cấp thiết phát triển công nghệ di động Trong phạm vi luận văn, em trình bày phần kỹ thuật lập trình điện thoại di động Và kỹ thuật kiểm tra thực tốt máy ảo, ứng dụng vào thực tế Tuy nhiên cịn có nhiều điều cần cải tiến nghiên cứu thêm như: - Xây dựng module xử lý âm tốt hơn, test chạy máy điện thoại - Cải thiện chất lượng hình ảnh khơng làm tăng kích thước ứng dụng - Nâng cao chất lượng ứng dụng, cho phép ứng dụng chạy tốt MIDP 1.0 MIDP 2.0 - Bổ sung tính kiểm sốt đèn hình, hỗ trợ rung, … - Bổ sung tính chơi qua mạng giao tiếp hồng ngoại Bluetooth Sinh viên thực hiện: Đỗ Thị Hồng – Lớp 44E2 - CNTT 41 Khoá luận tốt nghiệp Tìm hiểu kỹ thuật lập trình điện thoại di động TÀI LIỆU THAM KHẢO [1] Nguyễn Thành Danh, Lập trình Game cho điện thoại di động, Nxb Giao thơng vận tải, 2005 [2] Trần Tiến Dũng, Giáo trình lý thuyết tập Java, Nxb Lao động xã hội, 2007 [3] Lê Ngọc Quốc Khánh, Phát triển ứng dụng J2ME với Samsung Jaumi Wireless toolkit 2.0, Javavietnam.org, 2004 [4] Lê Ngọc Quốc Khánh, Phát triển ứng dụng J2ME J2ME wireless toolkit, Javavietnam.org, 2004 [5] Ngô Văn Khoa, Hướng dẫn sử dụng Samsung JSDK 1.0, Javavietnam.org, 2004 [6] Nguyễn Hữu Mai, Tổng quan J2ME, Javavietnam.org, 2004 [7] Gia Việt, Viết mã cho thiết bị di động, Nxb Giao thông vận tải, 2007 [8] http:// www java.sun.com [9] http:// www.javavietnam.Org [10] http:// www.tinCNTT.com Sinh viên thực hiện: Đỗ Thị Hồng - Lớp 44E2 - CNTT 42 ... tốt nghiệp Tìm hiểu kỹ thuật lập trình điện thoại di động KẾT LUẬN Sau thực đề tài ? ?tìm hiểu kỹ thuật lập trình điện thoại di động? ??, em tìm hiểu số kỹ thuật lập trình điện thoại di động xây dựng... luận tốt nghiệp Tìm hiểu kỹ thuật lập trình điện thoại di động CHƢƠNG III KỸ THUẬT LẬP TRÌNH TRÊN ĐIỆN THOẠI DI ĐỘNG Khi lập trình điện thoại di động, cần phải khai thác mạnh điện thoại ngày âm... lập trình điện thoại di động - Nghiên cứu kỹ thuật xử lý đồ họa hoạt hình - Nghiên cứu kỹ thuật xử lý phím điện thoại di động - Nghiên cứu kỹ thuật xử lý âm điện thoại di động - Nghiên cứu kỹ

Ngày đăng: 02/12/2021, 23:30

Xem thêm:

HÌNH ẢNH LIÊN QUAN

Bảng bờn dưới mụ tả kớch thước file JAR của một số loại điện thoại di động Loại điện thoại Kớch thước File JAR tối đa  Nokia Series 40 64 KB  - Tìm hiểu kỹ thuật lập trình trên điện thoại di động
Bảng b ờn dưới mụ tả kớch thước file JAR của một số loại điện thoại di động Loại điện thoại Kớch thước File JAR tối đa Nokia Series 40 64 KB (Trang 12)

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w