Profile: Configuration thực ra chỉ cung cấp 1 số rất ít các lớp và người phát triển ứng dụng hầu như không thể chỉ làm việc đơn thuần với các Configuration này.. Profile định nghĩa các
Trang 1Lời mở đầu
Sau một thời gian tìm hiểu và thực hiện, luận văn “Xây dựng bản đồ cho di động kết hợp định vị” đã cơ bản hoàn thành Để đạt được kết quả này chúng tôi đã rất cố gắng đồng thời cũng nhận được rất nhiều sự giúp đỡ của các thầy cô, và bạn bè
Xin cảm ơn các thầy cô trong khoa Công nghệ thông tin, đặc biệt là thầy Trần Minh Văn đã tận tình hướng dẫn em thực hiện luận văn này
Luận văn hoàn thành với một số kết quả nhất định, tuy nhiên vẫn không tránh khỏi sai sót Rất mong nhận được ý kiến đóng góp từ các thầy cô và các bạn để chương trình có thể hoàn thiện hơn
Nha Trang, tháng 6 năm 2010
Trang 2Chương 1: GIỚI THIỆU
1.1 Sơ lược về tình hình viễn thông di động ở Việt Nam:
Mặc dù chịu ảnh hưởng của cuộc suy thoái kinh tế thế giới nhưng trong 6 tháng đầu năm 2010, thị trường viễn thông di động của Việt Nam vẫn hết sức náo nhiệt Đầu tiên là sự xuất hiện của công nghệ 3G với nhiều tính năng nổi trội đã mở ra 1 trào lưu di động mới: nhanh hơn, mạnh hơn và đa dạng hơn Các dòng sản phẩm hỗ trợ công nghệ này được các nhà sản xuất đưa ra đều đặn với mức giá ngày càng cạnh tranh Trên thực tế, 3G tuy chưa làm khách hàng hài lòng nhưng theo các chuyên gia, thị phần của nhóm thiết bị này sẽ tiếp tục tăng trong thời gian tới
Cũng trong năm nay, chiếc điện thoại đình đám iPhone chính thức được cung cấp tại Việt Nam sau đó là sự xuất hiện của một loạt các hệ điều hành mới như iPhone 4.0, Android, Window mobile 7 cùng với một số lượng sản phẩm hỗ trợ không nhỏ làm cho thị trường theo đó cũng nóng lên từng ngày một
Trước làn sóng sôi động đó, người tiêu dùng Việt Nam thật khó có thể đứng yên
Tỷ lệ người sử dụng điện thoại ở Việt Nam còn cao hơn cả Trung Quốc và Ấn Độ (theo báo cáo của công ty nghiên cứu thị trường Nielsen năm 2009), đa phần trong độ tuổi thanh thiếu niên Tuy nhiên, trong năm 2010, thị trường đang dần bão hòa Theo ước tính, số người còn có thể sử dụng điện thoại ở Việt Nam vào khoảng 15 – 20 triệu khách hàng và “miếng bánh” này không đủ cho cả 6 nhà cung cấp Họ không còn chạy đua để tăng số lượng thuê bao mà chuyển sang chiến lược giữ chân khách hàng bằng chất lượng dịch vụ
1.2 Nhu cầu phát triễn phần mềm trên thiết bị di động:
Trong vài năm gần đây, hoạt động sản xuất phần mềm cho điện thoại diễn ra khá mạnh mẽ Theo dự báo, doanh thu phần mềm cho điện thoại sẽ đạt 16,6 tỷ USD vào năm 2013 Các hãng điện thoại, các nhà cung cấp ngày càng tập trung nhiều vào phát
Trang 3triễn kho ứng dụng của họ: OviStore(Nokia), Apple App Store, Microsoft MarketPlace, Fstore(FPT), Mstore(Vietel)…Việc đầu tư này góp phần làm tăng tính cạnh tranh của
họ trên thị trường điện thoại thông minh được đánh giá là rất khả quan trong thời gian tới Thực tế cho thấy, sự thành công của iPhone ngoài vấn đề công nghệ và thời trang còn có sự hỗ trợ mạnh của một kho ứng dụng cực lớn với hơn 100000 ứng dụng Người sử dụng sẽ chọn nền tảng có nhiều ứng dụng nhất mặc dù họ chỉ sử dụng một phần nhỏ trong số đó Ngày nay, mọi chuyện đã dễ dàng hơn với một chiếc điện thoại
1.3 Mục tiêu của đề tài:
Bản đồ cho di động là đề tài không mới, tuy nhiên các ứng dụng tương đương trên thị trường chủ yếu phải kết nối Internet và chỉ hỗ trợ ở một số thành phố lớn Nhận thấy việc xây dựng một bản đồ số cho một thành phố du lịch như Nha Trang cũng hết sức cần thiết nên em chọn thực hiện đề tài này
Đề tài nhằm xây dựng ứng dụng bản đồ dùng cho điện thoại có hỗ trợ J2ME với một số chức năng chính như:
- Xem, di chuyển , phóng to, thu nhỏ bản đồ
- Tìm đường theo tên
- Tìm một địa điểm trên bản đồ
- Xác định lộ trình ngắn nhất giữa hai điểm
- Định vị người dùng
Trang 4Chương 2: TỔNG QUAN VỀ LẬP TRÌNH
DI ĐỘNG
Được giới thiệu lần đầu vào năm 1995, ngày nay mục iêu Java nhắm đến cũng đã thay đổi khá nhiều Java hiện nay không chỉ nhắm đến họ máy tính để bàn đơn thuần Hai năm sau ngày đầu được ra mắt, một phiên bản Java mới là J2EE (Java 2 Enterprise Edition) đã được giới thiệu nhắm tới việc phát triển các ứng dụng có qui mô lớn hơn
Phiên bản mới nhất được thêm vào dòng ngôn ngữ Java là J2ME (Java 2 Micro Edition) J2ME nhắm đến việc phát triễn ứng dụng cho các thiết bị “nhỏ” có bộ nhớ, khả năng hiển thị và xử lý hạn chế như:đầu giải mã kỹ thuật số TV set-top boxes, điện thoại di động…
6.1 Các thành phần của J2me:
Hình 1 1 Tổng quan
Trang 56.1.1 Configuration:
Để đáp ứng cho nhiều ch
Configuration Khái niệm Configuration có m
chính xác hơn, một Configuration qui đ
của ngôn ngữ Java mà máy
Việc phân chia thành nh
bộ nhớ, năng lục hiển thị, năng l
Như chúng ta biết, các thiết b
phần cúng Với những thiết b
trợ vào máy ảo trên thiết bị
những thiết bị có khả năng cao hơn, chúng ta s
máy ảo giúp cho công việc l
thành nhiều Configuration là
Configuration khác nhau:
- CDC (Connected Device Configuration)
Hình 1 2 Các thành phần của J2me
u chủng loại thiết bị khác nhau, Sun đã đưa ra khái ni
m Configuration có mối liên hệ chặt chẽ với máy
t Configuration qui định những thành phần và nhữJava mà máy ảo phải hỗ trợ cho configuration đó
c phân chia thành những Configuration khác nhau chủ yếu d
, năng lực xử lý và khả năng kết nối mạng c
t bị di động rất khác nhau về nguồn tài nguyên, v
t bị có năng lực hạn chế, nếu ta đưa quá nhi
ị đó sẽ gây chậm hệ thống và dư thừa không cnăng cao hơn, chúng ta sẽ đưa thêm nhiều thư vi
c lập trình của các nhà phát triển Do đó , nhu c
u Configuration là việc cần thiết Hiện nay Sun đã
CDC (Connected Device Configuration)
đưa ra khái niệm
i máy ảo Java Nói ững thư viện gốc
u dựa vào khả năng
ng của các thiết bị
n tài nguyên, về khả năng
u ta đưa quá nhiều thư viện hỗ
a không cần thiết Với
u thư viện hỗ trợ vào
n Do đó , nhu cầu phân chia
ã đưa ra 2 loại
Trang 6§ 512 kb (minimum) bộ nhớ để chạy Java
§ 256 kb (minimum) bộ nhớ cấp phát động
§ Kết nối mạng liên tục, băng thông rộng
- CLDC (Connected Limited Device Configuration) :
§ 128 kb (minimum) bộ nhớ để chạy Java
§ 32 kb (minimum) bộ nhớ cấp phát động
§ Giao diện người dùng hạn chế
§ Năng lượng tiêu tốn it (chủ yếu dùng pin)
§ Kết nối mạng Wireless, chậm
Việc phân chia này thực chất cũng chỉ mang tính tương đối Công nghệ hiện nay đang phát triễn khá nhanh và điều này càng làm cho ranh giới giữa các loại Configuration trở nên không rõ ràng
6.1.2 Profile:
Configuration thực ra chỉ cung cấp 1 số rất ít các lớp và người phát triển ứng dụng hầu như không thể chỉ làm việc đơn thuần với các Configuration này Vì lý do này Sun đã linh hoạt và đưa thêm một khái niệm mới nằm ở tầng trên của Configuration, đó là Profile
Ta có thể xem Profile là mộ mở rộng của khái niệm Configuration Profile định nghĩa các thư viện giúp lập trình viên phát triển ứng dụng cho một dạng thiết bị nào đó
Ví dụ Mobile Information Device Profile (MIDP) định nghĩa các hàm API cho các thành phần giao diện nhập liệu và xử lý sự kiện, lưu trữ, kết nối mạng và xử lý thời gian,… phù hợp với màn hình hiển thị và khả năng xử lý của các thiết bị di động Profile MIDP được định nghĩa trên nền tảng của CLDC Ngoài ra chúng ta còn một số Profile tiêu biểu khác như:
Trang 7- PDA Profile: tương tự như MIDP, nhưng với thị trường là các máy PDA với màn hình và bộ nhớ lớn hơn
- Foundation Profile: cho phép mở rộng các tính năng của CDC với phần lớn các thư viện của bộ Core Java2 1.3
- Ngoài ra còn có Personal Basis Profile, Personal Profile, RMI Profile, Game Profile
Báo cáo chỉ đề cập đến Profile MIDP và các thư viện liên quan để phục vụ cho việc viết ứng dụng trên điện thoại di động
6.1.3 Máy ảo java:
Như chúng ta đã biết, một chương trình Java sẽ được biên dịch thành mã trung gian sau đó chính máy ảo Java sẽ biên dịch phần mã này sang mã máy để thực thi Máy
ảo Java sẽ chịu trách nhiệm việc cung cấp tính năng bảo mật, cấp phát và thu hồi bộ nhớ và quản lý việc điều phối các tiến trình
Với CDC, máy ảo Java có cùng các đặc tính như J2SE Tuy nhiên, với CLDC, Sun đã phát triển riêng một dạng máy ảo chuyên biệt được gọi là K Virtual Machine, gọi tắt là KVM Chính những hạn chế về tài nguyên của các thiết bị di động đã đề ra nhu cầu về sự ra đời của KVM:
- Chỉ cần 40-80 kb bộ nhớ
- Chỉ đòi hỏi 20-40 kb bộ nhớ động (heap)
- Có thể chạy với bộ vi xử lý 16-bit và xung nhịp 25MHz
Trang 8lưu được nội dung lâu dài, ngay cả khi ngắt điện Bộ nhớ này thường được gọi là nonvolatile memory
- 32 kilobytes bộ nhớ trống để cấp phát các đối tượng (objects) Bộ nhớ này thường được gọi là volatile memory (hay là “heap”)
- Có ít nhất một thiết bị nhập liệu: bàn phím hoặc màn hình cảm ứng
- Có ít nhất 128 kilobytes bộ nhớ non-volatile để chạy các thành phần của MID
- Có ít nhất 8 kilobytes bộ nhớ non-volatile để lưu các cấu hình chương trình và dữ liệu
- Có ít nhất 32 kilobytes để chạy Java
- Có kết nối không dây (wireless network)
6.2.2.2 Yêu cầu phần mêm:
- Mặc dù hệ điều hành của từng thiết bị có thể khác nhau nhưng phải đáp ứng được các yêu cầu tối thiểu sau:
- Hệ điều hành phải hỗ trợ việc xử lý ngắt, xử lý exception và hỗ trợ xử
lý đồ họa bitmap để xuất dữ liệu ra màn hình
- Hệ điều hành phải nhận được tín hiệu nhập liệu (input) và chuyển dữ liệu đó cho máy ảo Java
Trang 9- Hệ điều hành phải hỗ trợ việc đọc/ghi vào bộ nhớ non-volatile Không đòi hỏi hệ điều hành phải định nghĩa file system nhưng phải cho phép ghi dữ liệu dạng persistent (không bị mất đi khi tắt máy, ngắt điện)
- Phải hỗ trợ truy xuất mạng, đặc biệt phải có tính năng đọc/ghi dữ liệu thông qua mạng không dây (wireless network)
6.2.3 MIDlet Suite:
Ta gọi chương trình Java chạy trên thiết bị di động là một MIDlet MIDlet sẽ sử dụng các lớp cung cấp bởi CLDC và MIDP Mộ MIDlet Suite (một bộ MIDlet) chứa một hay nhiều ứng dụng MIDlet được nên chung trong một file JAR (Java Archive)
Hình 2 3 Jar file & Jad file
Trang 10MIDlet-Vendor Tác giả Có
MIDlet-<n> Tham chiếu đến từng
MIDlet trong file JAR, mỗi MIDlet cần một mẫu tin này
Có
MicroEdition-Profile Tên profile cần để chạy
MIDlet này, thường là MIDP 1.0 hoặc MIDP 2.0
Có
MicroEdition Cnfiguration Configuration cần để chạy
MIDlet (thường là CLDC 1.0)
Có
MIDlet-Icon File icon (.pgn) của bộ
MIDlet
Không
MIDlet-Description Mô tả bộ MIDlet Không
MIDlet-Info-URL Địa chỉ trang web nhà phát
triễn MIDlet
Không
Một ví dụ đơn giản của file Manifest:
- MIDlet-1: HelloMIDlet, , hello.HelloMIDlet
Trang 11Bên cạnh file JAR, một bộ ứng dụng MIDlet còn có thêm file JAD (.jad) để cung cấp thông tin về các MIDlet trong file JAR Việc đặt ra file JAD có một só mục đích sau:
- Cung cấp thông tin về nội dung file Jar Từ thông tin này, bộ quản lý ứng dụng trên thiết bị mới quyết định ứng dụng này có thích hợp để chạy trên thiết bị hay không
- Cung cấp các tham số dùng cho MIDlet để tránh thay đổi file JAR File JAR chứa mã ứng dụng nên cần tránh bị thay đổi
Danh sách các thuộc tính trong file JAD:
MIDlet-<n> Tham chiếu đên từng MIDlet trong
file JAR, mỗi một MIDlet cần một mẫu tin này
Có
MIDlet-Jar-URL Địa chỉ URL của file JAR Có
MIDlet-Jar-Size Kích thước file JAR tính bằng byte Có
MIDlet-Data-Size Kích thước tối thiểu tính bằng byte
để ghi các dữ liệu của chương trình (persitent data)
Trang 12Một ví dụ đơn giản về file JAD:
- MIDlet-1: HelloMIDlet, , hello.HelloMIDlet
Trang 13Chương 3: CÁC VẤN ĐỀ CƠ BẢN CỦA
CHƯƠNG TRÌNH MIDlet
3.1 Vòng đời của các ứng dụng MIDlet:
Một chương trình MIDlet khi được nạp và thiết bị có những trạng thái sau:
- Paused: Một chương trình MIDlet sẽ được đưa vào trạng thái paused sau khi thực hiện phương thức khởi tạo (constructor) và trước khi được chương trình quản lý ứng dụng (application manager) trên thiết bị gọi thực thi Trong quá trình hoạt động, chương trình MIDlet cũng có thể bị đưa trở lại trạng thái paused bởi thiết bị (khi cần trả lời cuộc gọi đến …) hoặc bởi chính chương trình MIDlet
- Active: Chương trình MIDlet đang thực thi
- Destroyed: Chương trình MIDlet đã giải phóng tất cả tài nguyên và đã được tắt bởi trình quản lý ứng dụng trên thiết bị
Trang 14Hình 3 1 Vòng đời chương trình MIDlet
public void pauseApp() {}
public void destroyApp(boolean unconditional) {}
Trang 15(boolean unconditional) để giải phóng tài nguyên
abstract void pauseApp () Hàm được gọi để giải phóng tài nguyên
trước khi tạm dừng chương trình
abstract void startApp () Được gọi khi MIDlet sắp được đưa vào
trạng thái thực thi (active state)
final void notifyDestroyed () Báo cho Application manager biết
chương trình đã giải phóng tài nguyên và cần được tắt
final void notifyPause() Báo cho Application manager biết
chương trình đã giải phóng tài nguyên và muốn vào trạng thái tạm dừng
final void resumeRequest() Báo cho application manager MIDlet cần
đưa vào trạng thái hoạt động trở lại (Sau
đó application manager sẽ gọi startApp)
final string getAppProperty
public abstract class MIDlet {
protected abstract void startApp()throws MIDletStateChangeException; protected abstract void pauseApp();
protected abstract void destroyApp(boolean unconditional) throws MIDletStateChangeException;
}
Trang 16Các hàm thường dùng trong lớp MIDlet:
abstract void destroyApp
(boolean unconditional)
Hàm được gọi khi tắt MIDlet Được dùng
để giải phóng tài nguyên
abstract void pauseApp () Hàm được gọi để giải phóng tài nguyên
trước khi tạm dừng chương trình
abstract void startApp () Được gọi khi MIDlet sắp được đưa vào
trạng thái thực thi (active state)
final void notifyDestroyed () Báo cho Application manager biết
chương trình đã giải phóng tài nguyên và cần được tắt
final void notifyPause() Báo cho Application manager biết
chương trình đã giải phóng tài nguyên và muốn vào trạng thái tạm dừng
final void resumeRequest() Báo cho application manager MIDlet cần
đưa vào trạng thái hoạt động trở lại (Sau
đó application manager sẽ gọi startApp)
final string getAppProperty
- User chọn kích hoạt ứng dụng MIDlet
- Application manager khởi tạo các biến, gọi phương thức khởi tạo
- Ứng dụng MIDlet sau khi được nạp vào bộ nhớ sẽ được đưa vào trạng thái paused (nhưng hàm pauseApp() sẽ không được gọi)
Trang 17- Application manager gọi hàm startApp() Thực chất hàm startApp() sẽ được gọi mỗi khi ứng dụng được đưa vào trạng thái thực thi (active); khi ta tạm ngưng ứng dụng và có nhu cầu kích hoạt trở lại hàm này cũng được gọi
3.4.2 Quá trình thoát:
- User chọn thoát chương trình
- Hàm destroyApp() được gọi, hàm này phải bảo đảm việc giải phóng tài nguyên
- Hàm notifyDestroyed() được gọi để báo cho application manager ứng dụng
đã giải phóng hết tài nguyên và sẵn sàng bị tắt
3.5 Display và Displayable:
3.5.1 Display:
Lớp Display đảm nhiệm việc xuất dữ liệu ra màn hình
Môt số phương thức quan trọng:
Trang 18Một MIDlet sẽ có một và chỉ một đối tượng Display để điều khiển việc thể hiện
dữ liệu Đối tượng Display không có phương thức khởi tạo mà được khởi tạo trực tiếp
từ phương thức static của lớp
public class HelloMIDlet extends MIDlet {
private Display display; // đối tượng display cho MIDlet
public HelloMIDlet() {
display = Display.getDisplay(this);
}
public void startApp() {
TextBox t = new TextBox("Hello", "Hello, World!", 256, 0); // hàm khởi tạo display.setCurrent(t);
}
public void pauseApp() {}
public void destroyApp(boolean unconditional) {}
}
Trang 19Hình 3 2 Hiển thị textBox lên màn hình
- abstract public class Displayable;
- public abstract class Canvas extends Displayable;
- public abstract class Screen extends Displayable;
Trang 20Lớp Screen còn được chia thành những lớp con nhỏ hơn như: TextBox, List, Form và Alert Đây là những lớp giao diện cấp cao (vì phần lớn các công việc thể hiện của các lớp này đã được cài đặt sẵn) Các đối tượng của lớp Canvas được gọi là những đối tượng đồ họa cấp thấp, các lớp này cho phép chúng ta xử lý các giao tác đồ họa ở tầng dưới, xử lý màu sắc và chủ yếu dùng trong quá trình viết games
boolean isShown () Kiểm tra đối tượng Displayable có
được thể hiện trên thiết bị hay không
3.6 Quản lý sự kiện (event):
Quá trình xử lý các sự kiện phát sinh bao gồm 3 quá trình cơ bản:
- Phần cứng (thiết bị di động) phải cảm nhận được khi có một sự kiện phát sinh: người dùng ấn một phím, một cable được cắm vào hay rút ra
- Phần mềm trên thiết bị (hệ điều hành) phải nhận biết được có sự kiện phát sinh
Trang 21- Hệ điều hành chuyển thông tin về sự kiện cho ứng dụng, bắt đầu từ đây là công việc của những lập trình viên J2ME Tùy theo các thông tin về sự kiện mà chúng ta phải đưa ra các giải pháp thích hợp
3.6.1 Command & CommandListener:
Ta định nghĩa Command là một đối tượng giữ thông tin về một sự kiện (Event) Nói một cách đơn giản nhất thì command như một nút ấn (button) trên ứng dụng di động, khi ta chọn nút này thì sẽ phát sinh một sự kiện tương ứng
Việc xem một Command tương ứng với một nút ấn trên thiết bị là một quan niệm nhằm đơn giản hóa vấn đề nhưng không hoàn toàn chính xác Nếu chúng ta xem xét các hạn chế về kích thước về màn hình và số lượng nút ấn có trên thiết bị thì vấn đề sẽ trở nên phức tạp hơn, có những form số lượng command có thể nhiều hơn số nút ấn chức năng trên thiết bị, lúc này các command được tổ chức theo dạng menu
Hình 3 3 Command
Trang 22Hình 3 4 Menu command
3.6.2 Item & ItemStateListener:
Sự kiện (event) không chỉ được phát sinh thông qua kích hoạt commands mà còn
có thể được phát sinh thông qua các items Một item là một bộ phận có thể gắn kèm lên trên các form ChoiceGroup, DateField, Gauge và TextField là các dạng khác nhau của Item và mỗi dạng đều có thể phát sinh các sự kiện Để xử lý được các sự kiện phát sinh
ta phải cài đặt một Listener (ở đây là ItemStateListener)
Khi có một thay đổi trên Item (ví dụ như ta chọn một mục trong ChoiceGroup hay thay đổi dữ liệu của một DateField) thì đối tượng listener sẽ được thông báo có một sự kiện phát sinh cùng các thông tin về sự kiện này Sự kiện này sẽ kích hoạt hàm itemStateChanged() được chúng ta cài đặt
Hiện tại MIDP hỗ trợ các loại Items sau: ChoiceGroup, DateField, Gauge, ImageItem, StringItem và TextField Ở đây có một ngoại lệ là hai loại StringItem và
ImageItem không hỗ trợ phát sinh sự kiện mặc dù chúng là lớp con của lớp Item
Trang 23Chúng ta cài đặt một listener trong lớp Form, khi một Item phát sinh sẽ kích hoạt hàm itemStateChanged(), tuy nhiên không phải khi chúng ta thay đổi giá trị nhiều items cùng lúc thì itemStateChanged() sẽ được gọi đủ bấy nhiêu lần Ở đây có một luật được
Nếu thiết bị nhận biết được người dùng chuyển từ Item này sang Item khác (chuyển focus) thì hàm itemStateChanged() phải được gọi trước khi chuyển sang Item
kế tiếp
Các hàm quan trọng khi sử dụng Item:
String getLabel () Lấy nhãn của Item
void setLabel (String label) Đặt nhãn cho Item
void itemStateChanged (Item item) Được gọi khi giá trị item thay đổi
Trang 24Chương 4: ĐỊNH VỊ TRÊN DI ĐỘNG 4.1 Giới thiệu:
Điện thoại di động và PDA là các thiết bị có tính cá nhân rất cao Không như máy tính cá nhân, điện thoại di động có thể được đem theo ở khắp mọi nơi, cho phép chúng
ta sử dụng các dịch vụ ngay cả khi đang di chuyển Từ đó, các loại hình dịch vụ ngày ngay không còn gói gọn trên bàn làm việc nữa
Có nhiều phương pháp khác nhau dùng định vị các thiết bị di động Tuy nhiên, mục đích của việc định vị này nhằm phục vụ cho việc phát triển loại dịch vụ quan trọng nhất của Internet di động: Các dịch vụ dựa trên định vị địa điểm (Location-based services) Phạm vi báo cáo chỉ đề cập đến 2 công nghệ định vị phổ biến nhất là GPS và Cell-ID
4.2 Các dịch vụ dựa trên địa điểm(Location-based services):
Location-based services (LBS) trả lời 3 câu hỏi: Tôi đang ở đâu? Xung quanh tôi
có gì? Làm sao tôi đến đó? Họ xác định vị trí của người dùng bằng cách sử dụng một
số các công nghệ xác định vị trí, sau đó sử dụng vị trí này và một số các thông tin khác
để cung cấp các ứng dụng và các dịch vụ đến cá nhân từng người dùng Ví dụ:
- Dịch vụ gọi khẩn cấp 911 xác định vị trí người gọi một cách tự động nếu cuộc gọi được thực hiện bằng điện thoại di động Một dịch vụ rất hữu ích cho những người không thạo về địa phương họ đang ở
- Dịch vụ tư vấn giao thông và chỉ đường
- Dịch vụ kết hợp địa điểm và các thông tin cá nhân giúp người dùng tìm kiếm vị trí các quán ăn, khách sạn, máy ATM, trường học…
- Cung cấp các thông tin tiếp thị khi người dùng đang ở trong một khu vực địa lý cụ thể nào đó
Trang 25LBS gồm 5 thành phần cơ bản:
- Phần mềm ứng dụng của nhà cung cấp dịch vụ
- Mạng điện thoại di động để truyền dữ liệu và yêu cầu dịch vụ
- Nhà cung cấp nội dung để cung cấp người dùng cuối các thông tin địa lý
4.3.1 Cell-ID(Cell site Identification):
Cell-ID được sử dụng trong mạng GSM, GPRS và WCDMA, đây là cách xác định vị trí thuê bao đơn giản nhất Phương pháp này yêu cầu mạng xác định vị trí của BTS (Base Transceiver Station - trạm phát sóng) mà MS (Mobile Station - máy thu sóng, vd: moblie, ) đang trực thuộc Vị trí của MS cũng chính là vị trí của BTS đó Tuy nhiên, do MS có thể ở mọi vị trí bất kỳ trong cell (được hiểu như phạm vi trạm phát sóng đó bao quát) nên độ chính xác của phương pháp này phụ thuộc vào kích cỡ cell Nếu MS thuộc vùng đô thị, mật độ đông thì kích cỡ cỡ cell bé nên độ chính xác cao hơn, vùng ngoại ô kích cỡ cell lớn hơn nhiều nên sai lệch về vị trí có thể lên tới chục km
Trang 26Hình 4 1 Cell-ID
Để tăng độ chính xác người ta dùng sector-ID hoặc có thể kết hợp với một hay cả hai kỹ thuật TA (Timing Advance) và dựa vào độ mạnh của tín hiệu Kỹ thuật TA sử dụng thông tin về sai lệch thời gian được gửi từ BTS tới hiệu chỉnh thời gian phát của
MS sao cho tín hiệu từ MS tới BTS đúng với khe thời gian dành cho MS để tính ra khoảng cách từ MS tới BTS Tuy nhiên, kỹ thuật TA chỉ cho biết MS trong vùng địa lý của BTS đang phục vụ nó với bán kính xác định được nhờ TA Ngoài ra, trong mạng thông tin di động MS thường đo độ mạnh của tín hiệu từ một số BTS và gửi thông tin này đến BTS đang phục vụ nó, vì vậy có thể dựa vào thông tin độ mạnh tín hiệu này để tính ra được vị trí MS với độ chính xác cao hơn TA Tuy nhiên, có rất nhiều yếu tố làm hạn chế hiệu quả của phương pháp này như địa hình, suy hao ở môi trường trong nhà (các vật liệu xây dựng, hình dạng, kích cỡ toà nhà)
4.3.2 Global Positioning System(GPS):
Trang 27Hình 4 2 Hệ thống vệ tinh GPS
GPS là một hệ thống gồm 24 vệ tinh cách đều nhau trong quỹ đạo Trái đất, có khả năng xác định vị trí địa lý của một máy thu trên mặt đất Độ chính xác của GPS vào khoảng từ 10 – 100m đối với hầu hết các thiết bị, sai số này có thể được giảm đáng
kể xuống còn 1m khi sử dụng các thiết bị quân sự đặc biệt
Toàn bộ hệ thống vệ tinh GPS được giám sát và điều khiển bởi Bộ Quốc Phòng Hoa Kỳ, ban đầu được dùng cho mục đích quân sự, nhưng về sau, GPS chính thức được đưa vào sử dụng trong dân sự
Rất nhiều ứng dụng được phát triển dựa trên cơ sở GPS như hệ thống dẫn đường trên xe hơi, tàu biển, hàng không…
4.3.2.1 Các thành phần:
Trang 28Hình 4 3 Các thành phần của GPS
Phần không gian: gồm 24 quả vệ tinh (21 vệ tinh hoạt động và 3 vệ tinh dự phòng) nằm trên các quỹ đạo xoay quanh trái đất Chúng cách mặt đất 12 nghìn dặm Chúng chuyển động ổn định, hai vòng quỹ đạo trong khoảng thời gian gần 24 giờ Các
vệ tinh này chuyển động với vận tốc 7 nghìn dặm một giờ Các vệ tinh trên quỹ đạo được bố trí sao cho các máy thu GPS trên mặt đất có thể nhìn thấy tối thiểu 4 vệ tinh vào bất kỳ thời điểm nào
Phần kiểm soát: kiểm soát vệ tinh đi đúng hướng theo quỹ đạo và thông tin thời gian chính xác Có tất cả 5 trạm kiểm soát được đặt rải rác trên trái đất Bốn trạm kiểm soát hoạt động một cách tự động (Ascension, Diego Garcia, Kawjalein, Hawai), và một trạm kiểm soát là trung tâm (Spring – Colorado, Mỹ) Bốn trạm này nhận tín hiệu liên tục từ những vệ tinh và gửi các thông tin này đến trạm kiểm soát trung tâm Tại trạm kiểm soát trung tâm, nó sẽ sửa lại data cho đúng và kết hợp với hai anten khác để gửi lại thông tin cho các vệ tinh
Phần sử dụng là thiết bị nhận tín hiệu vệ tinh GPS và người sử dụng thiết bị này
Trang 294.3.2.2 Hoạt động:
Hình 3 4 Hoạt động của hệ thống GPS
Các vệ tinh GPS bay vòng quanh Trái Đất hai lần trong một ngày theo một quỹ đạo rất chính xác và phát tín hiệu có thông tin xuống Trái Đất Các máy thu GPS nhận thông tin này và bằng phép tính lượng giác tính được chính xác vị trí của người dùng
Về bản chất máy thu GPS so sánh thời gian tín hiệu được phát đi từ vệ tinh với thời gian nhận được chúng Sai lệch về thời gian cho biết máy thu GPS ở cách vệ tinh bao xa Rồi với nhiều quãng cách đo được tới nhiều vệ tinh máy thu có thể tính được vị trí của người dùng đơn giản bằng cách lấy giao của các mặt cầu với nhau
Trang 30Vd: Khoản cách đến vệ tinh A là 20km à ta có thể ở bất kỳ đâu trên mặt cầu bán kính 20km Nếu biết thêm khoản cách đến vệ tinh B là 30km à Vị trí được thu gọn còn nằm trong đường tròn là giao điểm cua 2 mặt cầu tâm A và tâm B Và nếu ta biết thêm nữa khoảng cách đến vệ tinh C là 40km à vị trí lúc này chỉ là 1 trong 2 điểm giao nhau giữa đường tròn và mặt cầu tâm C Trái đất là mặt cầu thứ tư, một trong hai giao điểm sẽ nằm trên mặt đất và đó là vị trí cần xác định
Do đó, máy thu phải nhận được tín hiệu của ít nhất ba vệ tinh để tính ra vị trí hai chiều (kinh độ và vĩ độ) và để theo dõi được chuyển động Khi nhận được tín hiệu của
ít nhất 4 vệ tinh thì máy thu có thể tính được vị trí ba chiều (kinh độ, vĩ độ và độ cao) Một khi vị trí người dùng đã tính được thì máy thu GPS có thể tính các thông tin khác, như tốc độ, hướng chuyển động, bám sát di chuyển, khoảng hành trình…
4.3.2.3 Location API cho J2me (JSR 179):
Java Specification Request (JSR) được hiểu như các API được thêm vào nhằm bổ sung thêm tính năng cho ngôn ngữ Java
JSR 179 đặc tả các lớp sử dụng cho việc định vị trên di động
Một ứng dụng định vị cần có một nguồn cung cấp các thông tin về vị trí (Location Porvider – vd: hệ thống GPS) Đoạn code sau minh họa cách lấy tọa độ trong J2me:
// xác định các yêu cầu cụ thể đối với Location Provider
Criteria cr= new Criteria();
Trang 31Coordinates c = l.getQualifiedCoordinates();
// Lấy tọa độ
if(c != null ) {
double lat = c.getLatitude();
double lon = c.getLongitude();
}
Trang 32
Chương 5: PHÂN TÍCH VÀ THIẾT KẾ
ỨNG DỤNG
7.1 Khảo sát hiện trạng:
Có thể nói, thành phố Nha Trang đang dần khẳng định được vị trí của mình và trở thành điểm đến tin cậy của rất nhiều du khách cả trong và ngoài nước Đường xá ở Nha Trang tuy không nhiều và không phức tạp như ở các thành phố lớn nhưng cũng gây ra không ít lúng túng cho những du khách lần đầu tiên đến đây do đó việc có một tấm bản
đồ là hết sức cần thiết
Mặt khác, đối với các cơ sở du lịch, các khu nghỉ mát môi trường bản đồ sẽ là một nơi quản bá lý tưởng để du khách biết đến họ Lúc này, bản đồ giấy đã bộc lộ những hạn chế của nó: cồng kềnh, lượng thông tin cung cấp hạn chế và các chức năng
hỗ trợ cho du khách là hầu như không thể
Các nhược điểm của bản đồ giấy đều được bản đồ số khắc phục Lợi thế hơn, bản
đồ số có thể tích hợp trong các thiết bị di động nhỏ gọn và mang theo bất cứ đâu
7.2 Phân tích và thiết kế:
Ứng dụng sẽ được mô hình hóa bằng phương pháp UML
7.2.1 Mô hình Use case(UC):
Trang 33Hình 5 1 Mô hình UC
Mô hình UC mô tả các chức năng của ứng dụng:
- View map: đây là chức năng quan trọng nhất Cho phép người dùng xem bản đồ, di chuyển, phóng to, thu nhỏ và điều chỉnh các lớp hiển thị
- Search streets: Tìm kiếm và di chuyển nhanh đến một con đường
- Search places: Tìm một địa điểm trên bản đồ
- Shortest way: Xác định đường đi ngắn nhất giữa 2 điểm
- Locate yourself: Xác định vị trí hiện tại của người dùng
7.2.2 Mô hình lớp:
Dưới đây là mô hình lớp của ứng dụng và mối quan hệ giữa chúng
Trang 34Hình 5 2 Mô hình lớp
Chi tiết về các thuộc tính và phương thức của các lớp:
Trang 35Hình 5 3 Mô hình lớp 2
Trang 36Hình 5 4 Mô hình lớp 3
Trang 377.2.3 Mô hình tuần tự:
7.2.3.1 UC viewMap:
Hình 5 5 Sơ đồ tuần tự UC viewMap
Khi người sử dụng kích hoạt chức năng xem bản đồ, chương trình sẽ tính toán các khối dữ liệu cần thiết sau đó tiến hành vẽ ra màn hình
7.2.3.2 Sơ đồ DrawMap như sau:
Trang 38Hình 5 6 Sơ đồ tuần tự DrawMap
7.2.3.3 UC search Street/search Place:
Chức năng tìm đường và địa điểm được thực hiện như sau: