59
Lời nói đầu : Ngày 5/11/2007, hệ điều hành trên điện thoại di động : Android chính thức ra mắt. Khởi đầu dự án trực thuộc một công ty nhỏ ở California – Mỹ, từ năm 2005 đã được Google mua lại và tập trung đầu tư với rất nhiều hi vọng. Tại đây,nhóm phát triển đã tập trung nghiên cứu dựa trên nền tảng hạt nhân Linux. Từ khi ra mắt, hệ điều hành Android đã mở ra một trang mới cho chặng đường phát triển các thiết bị cầm tay. Các Smart-phone chạy hệ điều hành Android đang khẳng định vị thế của mình trên thị trường tiêu dung và giới công nghệ. Không những thế, Android cũng đã lấn sân sang các thiết bị đầu phát HD,các HD player,ti vi…Nó nhanh chóng vượt mặt Iphone OS kì cựu để khẳng định vị trí số 1 trong các hệ điều hành di động. Với sức hút mạnh mẽ đó, các ứng dụng cho hệ điều hành Android đã phát triển theo không ngừng. Với hầu hết các ứng dụng được xây dựng dựa trên ngôn ngữ Java. Việc phát triển ứng dụng Android không quá mới mẻ trên thế giới, nhưng ở Việt Nam đang bắt đầu nở rộ. Các thiết bị Android đang ngày càng phổ biến ở Việt Nam và cũng có thể nói đây là lĩnh vực khá mới mẻ ở nước mình. Với những lý do đó, nhóm quyết định chọn đề tài liên quan đến ứng dụng Android. Tuy nhiên,để

Object Android GoogleAPI

Embed Size (px)

Citation preview

Page 1: Object Android GoogleAPI

Lời nói đầu :

Ngày 5/11/2007, hệ điều hành trên điện thoại di động : Android chính thức ra mắt.

Khởi đầu dự án trực thuộc một công ty nhỏ ở California – Mỹ, từ năm 2005 đã được

Google mua lại và tập trung đầu tư với rất nhiều hi vọng. Tại đây,nhóm phát triển đã

tập trung nghiên cứu dựa trên nền tảng hạt nhân Linux. Từ khi ra mắt, hệ điều hành

Android đã mở ra một trang mới cho chặng đường phát triển các thiết bị cầm tay. Các

Smart-phone chạy hệ điều hành Android đang khẳng định vị thế của mình trên thị

trường tiêu dung và giới công nghệ. Không những thế, Android cũng đã lấn sân sang

các thiết bị đầu phát HD,các HD player,ti vi…Nó nhanh chóng vượt mặt Iphone OS kì

cựu để khẳng định vị trí số 1 trong các hệ điều hành di động. Với sức hút mạnh mẽ đó,

các ứng dụng cho hệ điều hành Android đã phát triển theo không ngừng. Với hầu hết

các ứng dụng được xây dựng dựa trên ngôn ngữ Java. Việc phát triển ứng dụng

Android không quá mới mẻ trên thế giới, nhưng ở Việt Nam đang bắt đầu nở rộ. Các

thiết bị Android đang ngày càng phổ biến ở Việt Nam và cũng có thể nói đây là lĩnh

vực khá mới mẻ ở nước mình. Với những lý do đó, nhóm quyết định chọn đề tài liên

quan đến ứng dụng Android. Tuy nhiên,để tìm hiểu hết các lý thuyết và ứng dụng cho

Android gần như không thể khi nó ngày càng phát triển và tiến hóa. Do đó, nhóm đã

chọn một mảng nhỏ để phát triển ứng dụng cho Android. Đó là tìm hiểu thư viện Map

API của Google để viết ứng dụng bản đồ cho điện thoại di động chạy hệ điều hành

Android. Về lĩnh vực này, bản đồ miễn phí do Google xây dựng cho Android có thể

nói là ứng dụng tốt nhất hiện nay. Thế nên mục đích chính của đồ án là : ngoài việc tìm

hiểu thư viện Google Map API, đồ án nhằm tăng kỹ năng thực hành ứng dụng – khai

thác thư viện với ngôn ngữ Java để nhóm hiểu hơn về quá trình xây dựng ứng dụng cho

điện thoại Android.

Page 2: Object Android GoogleAPI

Chương 1 Tổng quan

1.1 Android là gì ?

Android là một nền tảng phần mềm mở. Rất nhiều người hiểu đơn giản

Android chỉ là một hệ điều hành dành cho các điện thoại di động thông minh

(SmartPhone). Tuy nhiên nhắc đến Android là nói đến một nền tảng bao gồm cả

phần mềm lẫn phần cứng. Đó là một nền tảng gồm : phần cứng , hệ điều hành và

nền tảng phát triển phần mềm ( Android SDK và Java ). Một nền tảng được

Google phát triển dựa trên nhân Linux.

1.2 Lập trình ứng dụng trên Android :

Các nhà phát triển viết ứng dụng Android dựa trên Java.Vậy nên để lập trình

Android tốt, lập trình viên cần có kiến thức cơ bản về Java (Java Core). Thông

thường ngôn ngữ lập trình trên di động hay được sử dụng là Java 2 Micro

Edition (J2ME). Nhưng với những thiết bị chạy hệ điều hành Android, với cấu

hình mạnh nên lập trình Android cũng rất khác so với J2ME. Không yêu cầu

khắt khe về việc tối ưu code để cải thiện tốc độ xử lý, nền tảng Android cũng có

những gói hỗ trợ lập trình khác so với J2ME. Một số gói hỗ trợ phổ biến cho lập

trình Android như : java.util, java.io, java.net… Một ứng dụng Android hoàn

thiện bao gồm 6 thành phần :

- Activity : là nền của một ứng dụng, khi khởi động một ứng dụng Android

nào đó thì bao giờ cũng có một main Activity được gọi, hiện thị màn hình

giao diện của ứng dụng cho phép người dùng tướng tác.

- Service : thành phần chạy ẩn trong Android,service sử dụng để cập nhật dữ

liệu,đưa ra các cảnh báo (Notification) và không bao giờ hiển thị cho người

dùng thấy.

- Content Provider : kho dữ liệu chia sẻ,được sử dụng để chia sẻ dữ liệu giữa

các ứng dụng.

Page 3: Object Android GoogleAPI

- Intent : nền tảng để truyền tải các thông báo,được sử dụng để gửi các thông

báo đi nhằm khởi tạo một Activity hay một Service để thực hiện công việc

bạn mong muốn.

- Broadcast Receiver : thành phần thu nhận các Intent bên ngoài gửi tới.

- Notification : đưa ra các cảnh báo mà không làm cho các Activity ngừng

hoạt động.

Trong đó lưu ý các thành phần : Activity,Service,Content Provider,

Broadcast Receiver là những thành phần chính cấu thành nên ứng dụng Android

và buộc phải khai báo trong Android manifest. Các tiến trình xử lý (process)

trong Android được quản lý theo cơ chế ưu tiên,các tiến trình xử lý có mức ưu

tiên (priority) thấp sẽ bị giải phóng mà không bị cảnh báo nhằm đảm bảo tài

nguyên.

- Foreground process : là process của ứng dụng hiện thời đang được người

dùng tương tác.

- Visible process : là process của ứng dụng mà Activity đang hiện thị đối với

người dùng.

- Service process : là dịch vụ đang chạy

- Background process : là process của ứng dụng mà Activity của nó không

hiện thị với người dùng.

- Empty process : process không có bất cứ một thành phần nào Activity.

Theo chế độ ưu tiên thì khi cần tài nguyên, Android sẽ tự động ngừng quá

trình xử lý mà đầu tiên là Empty process. Activity là thành phần đóng vai trò

chính và quan trọng nhất để cấu thành một ứng dụng Android. Hệ điều hành

Android quản lý Activity theo dạng stack : khi một Activity mới được khởi

tạo,nó sẽ xếp đầu stack và trở thành Running Activity,các Activity trước đó sẽ

Page 4: Object Android GoogleAPI

bị tạm dừng và chỉ hoạt động trở lại khi Activity mới được giải phóng. Activity

gồm 4 state :

- Activity (Running) : Activity đang hiện thị trên màn hình (foreground).

- Paused : Activity vẫn hiện thị (visible) nhưng không thể tương tác (lost

focus).

- Stop : Activity bị thay thế hoàn toàn bởi một Activity mới sẽ tiến đến trạng

thái stop.

- Killed : khi hệ thống bị thiếu bộ nhớ,nó sẽ tự động giải phóng bộ nhớ bằng

cách đóng các tiến trình theo thứ tự ưu tiên. Các Activity ở trạng thái Paused

hoặc Stop cũng có thể bị đóng và khi nó hiện thị lại thì phải khởi động lại

hoàn toàn và phục hồi lại trạng thái trước đó.

Hình 1 Biểu đồ mô tả Activity state.

Page 5: Object Android GoogleAPI

1.3 Bản đồ :

Bản đồ là bản vẽ đơn giản miêu tả một không gian, địa điểm và hiện thị

những thông số liên quan trực tiếp đến vị trí đó có liên quan đến khu vực xung

quanh. Thêm một định nghĩa nữa về bản đồ địa lý là sự biểu thị thu nhỏ qui ước

của bề mặt trái đất lên mặt phẳng, xây dựng trên cơ sở toán học với sự trợ giúp và

sử dụng các ký hiệu qui ước để phản ánh sự phân bố, trạng thái và mối quan hệ

tương quan của các hiện tượng thiên nhiên và xã hội được lựa chọn và khái quát

hoá để phù hợp với mục đích sử dụng của bản đồ và đặc trưng cho khu vực

nghiên cứu.

Chức năng chính của bản đồ : tìm vị trí,một số thông số địa lý hành chính

quan trọng liên quan đến địa điểm.

1.4 Bản đồ số :

Một số khái niệm về bản đồ số : “ Bản đồ số là tập hợp có tổ chức các dữ

liệu bản đồ trên các thiết bị có khả năng đọc bằng máy tính điện tử và được thể

hiện dưới dạng hình ảnh bản đồ” . Hay “Bản đồ số là mô hình số của bản đồ địa

hình,bản đồ chuyên đề được thể hiện dưới dạng tọa độ mặt phẳng x,y,độ cao và

các số liệu thuộc tính đã mã hóa. Bản đồ số được thành lập trong phép chiếu,hệ

thống ký hiệu quy định đối với các bản đồ cùng kiểu đã biết,có tính đến tổng quát

hóa và các yêu cầu về độ chính xác”.

Bản đồ số có tính tương tác cao,hoạt động trên nhiều thiết bị,mang tính trực

quan, chủ động và tiện dụng hơn nhiều so với bản đồ thường. Nhất là khi công

nghệ di động phát triển mạnh mẽ như ngày nay, trong một số lĩnh vực thì bản đồ

số đang là sự lựa chọn số một cho người dung.

1.5 Định vị GPS :

Page 6: Object Android GoogleAPI

Chỉ cách đây vài năm GPS còn là một khái niệm khá mới với người dùng

Việt Nam, thiết bị GPS khi đó thường được thấy ở các thiết bị dẫn đường đắt tiền

cho xe hơi, hoặc trong các mục đích quân sự. Tuy nhiên đến bây giờ GPS đã trở

thành một khái niệm thông dụng với người dùng Việt Nam, và được ứng dụng

rộng rãi vào rất nhiều mặt trong đời sống. Một trong những nguyên nhân quan

trọng để GPS trở nên phổ cập đến người dùng chính là việc các nhà sản xuất di

động tích hợp GPS vào các dòng máy điện thoại của mình cùng với việc các ứng

dụng định vị và bản đồ ngày càng phát triển. Tuy GPS đã trở thành một khái niệm

sâu rộng đối với người dùng Việt Nam, nhưng GPS thực chất là gì và tại sao GPS

giúp ta có thể xác định được vị trí của mình không phải người sử dụng nào cũng

biết. GPS là chữ viết tắt của từ  Global Positioning System : hệ thống định vị toàn

cầu. GPS được thiết kế và bảo quản bởi Bộ Quốc Phòng Hoa Ky, và được chính

phủ Hoa Ky cho phép mọi người sử dụng nó miễn phí. Hệ thống GPS bao gồm 24

vệ tinh (thực tế chỉ có 21 vệ tinh hoạt động), vệ tinh ban đầu được phóng vào năm

1978 và toàn bộ 24 vệ tinh đưuọc phóng lên quỹ đạo vào năm 1994, Các vệ tinh

hoạt động dựa vào năng lượng mặt trời, mỗi vệ tinh nặng 1,5 tấn và dài 5m. GPS

ban đầu chỉ dành cho các mục đích quân sự, nhưng từ năm 1980 chính phủ Mỹ

cho phép sử dụng dân sự. GPS hoạt động trong mọi điều kiện thời tiết, mọi nơi

trên Trái Đất, 24 giờ một ngày. Không mất phí thuê bao hoặc mất tiền trả cho

việc thiết lập sử dụng GPS. Các thiết bị GPS xác định vị trí với độ chính xác rất

cao. Nếu như một số ứng dụng bản đồ xác định bằng các dịch vụ qua mạng

Internet thì độ chênh lệch có thể vượt vài trăm mét, nhưng nếu thiết bị có hệ

thống định vị GPS như khá nhiều dòng điện thoại thông minh ngày nay thì độ

chính xác gần như tuyệt đối, nó chỉ chênh lệch khoảng tối đa vài chục mét. Và

với sự phổ biến của thiết bị GPS đính kèm trên điện thoại như ngày nay ( và ở

Việt Nam ), các ứng dụng bản đồ ứng dụng công nghệ định vị GPS ngày càng

được sự dụng rộng rãi.

Page 7: Object Android GoogleAPI

1.6 Sơ lược Google Map :

Google map là một phần mềm chạy trên các thiết bị hỗ trợ Java. Đó là bản

đồ số một trên thế giới hiện nay. Google map có đầy đủ các tính năng như một

bản đồ địa lý thông dụng : hiện thị địa điểm, vị trí, đường đi và những thông số

liên quan đến địa danh. Điều đặc biệt, Google map có thể định vị với thiết bị GPS

hoặc thiết bị chỉ hỗ trợ Java 2.0 đơn thuần. Nhờ đó nó ngày càng được phổ biến

và là một ứng dụng không thể thiếu đối với những người sử dụng thiết bị di động.

Ngoài những tính năng thông thường, Google map cho phép người dùng tương

tác một cách rất trực quan, dễ dàng. Bạn có thể phóng to thu nhỏ bản đồ trên điện

thoại, bạn chỉ cần gõ tên địa chỉ cần tìm lập tức phần mềm sẽ đánh dấu và chỉ rõ

vị trí trên bản đồ, bạn đánh dấu điểm đầu và điểm cuối và Google map sẽ làm

nhiệm vụ tìm đường đi và vẽ lên bản đồ để bạn theo dõi và nó còn cung cấp cho

bạn chiều dài của đoạn đường, bạn muốn tìm những địa điểm quan trọng và phổ

cập như cột rút tiền ATM, cây xăng, ngân hàng, bệnh viện… chỉ cần bạn gõ tên

vào và Google map sẽ liệt kê cho bạn những địa điểm gần khu vực bạn đứng,

ngoài ra Google map còn cho bạn lựa chọn những kiểu bản đồ để bạn dễ sử dụng

( kiểu ảnh vệ tinh, kiểu đơn giản…). Và với đội ngũ phát triển, Google map ngày

càng hoàn thiện, bổ sung thêm nhiều chức năng để phù hợp với từng vùng miền

địa lý. Có thể nói đây là bản đồ số chuẩn mực nhất, và điều đặc biệt để nó luôn

luôn được tín nhiệm là : chất lượng nhưng sử dụng miễn phí.

Page 8: Object Android GoogleAPI

Hình 2 Kiểu hiện thị Satellite view

Hình 3 Kiểu hiện thị Traffic view

Page 9: Object Android GoogleAPI

Hình 4 Kiểu hiện thị Street view

1.7 Xây dựng bài toán :

Lựa chọn đề tài tìm hiểu thư viện hỗ trợ xây dựng bản đồ trên Android của

Google hay còn gọi là Google Map API và thiết kế ứng dụng minh họa, mục tiêu

của đồ án là tìm hiểu về một thư viện hỗ trợ của Google làm ví dụ để mọi người

có thể hiểu được sự hỗ trợ của các API để giúp cho quá trình lập trình ứng dụng

trên Android. Ngoài ra, trong quá trình nghiên cứu đồ án, yêu cầu thêm các kiến

thức chung về lập trình Android, các kỹ năng tìm và dịch tài liệu từ nhiều nguồn

trong và ngoài nước. Về ứng dụng minh họa, dựa trên chuẩn Google map, nhóm

xây dựng một bản đồ chạy trên thiết bị Android 2.2, có bổ sung thêm một số chức

năng phụ và cố gắng thiết kế giao diện trực quan, dễ tương tác nhất. Hoàn thành

toàn bộ đồ án, yêu cầu lớn nhất là giúp người lập trình hiểu được các bước cơ bản

Page 10: Object Android GoogleAPI

và có thể tự phát triển lên nâng cao để xây dựng ứng dụng cho Android, giúp lập

trình viên nắm bắt được toàn bộ các bước thực tế và phối hợp nhóm tốt để hoàn

thành một ứng dụng Android.

Page 11: Object Android GoogleAPI

Chương 2 : Google Map API

2.1 Sử dụng :

Để bắt đầu với công việc xây dựng bản đồ trên Android từ thư viện của

Google, ta cần đăng ký dịch vụ này với nhà cung cấp. Công đoạn này hoàn toàn

miễn phí. Đầu tiên chúng ta cần phải lấy mã MD5 trên máy tính cá nhân của mình

bằng cách sau :

- Chúng ta cần xác định vị trí file Debug.keystore :

Đối với hệ điều hành Win7 ta tìm theo đường dẫn C:\Users\

<user>\.android\debug.keystore

Đối với WinXP đường dẫn là C:\Documents and Settings\

<user>\.android\debug.keystore

Đối với OS X và Linux đường dẫn là ~/.android/debug.keystore

Nếu sử dụng Eclipse để lập trình, chúng ta có thể nhờ chương

trình này hỗ trợ để tìm đường dẫn, ta chọn thẻ Tab theo thứ tự :

Windows > Prefs > Android > Build và kết quả sẽ được như hình

minh họa ở dưới.

Page 12: Object Android GoogleAPI

Hình 4 Tìm đường dẫn đến Debug.keystore bằng Eclipse

- Sau khi lấy được đường dẫn đến Dubug.keystore, ta mở cmd và chạy

dòng lệnh : keytool –list –alias androiddebugkey –keystore <đường

dẫn file Debug.keystore> –storepass android –keypass android

Hình 5 Kết quả tìm mã MD5

Page 13: Object Android GoogleAPI

Sau khi lấy được mã MD5 trên máy tính cá nhân, chúng ta vào trang đăng

ký của Google để đăng ký sử dụng dịch vụ. Truy cập theo đường dẫn :

http://code.google.com/intl/vi-VN/android/maps-api-signup.html

Hình 6 Giao diện trang đăng kí API key

Sau khi nhập mã MD5 và nhấn button Generate API Key,Google sẽ cung

cấp cho chúng ta key sử dụng và một đoạn mã để chúng ta sử dụng nó trong

Android để load dữ liệu bản đồ từ Google về. Lưu ý, với key do bạn đăng ký chỉ

có giá trị trên máy tính bạn đang sử dụng. Nếu di chuyển Object của bạn sang

máy khác,chúng ta cần đăng ký lại theo máy mới và thay key cũ.

Page 14: Object Android GoogleAPI

Hình 7 Đăng ký Key API thành công

2.2 Một số Class quan trọng trong thư viện Map API :

2.2.1 Class MapActivity :

Tóm tắt cấu trúc : MapActivity()

Khai báo thư viện (Import) : com.google.android.maps.MapActivity

Đây là Class cơ sở với những câu lệnh để quản lý những yêu cầu cần

thiết của bất cứ một hoạt động nào liên quan đến việc hiển thị MapView.

Chức năng của Class này là : quản lý vòng đời hoạt động, cài đặt và ngắt

kết nối những dịch vụ đằng sau một MapView. Một phân lớp nên tạo

riêng MapView của mình trong onCreate(android.os.Bundle), hay với cấu

trúc MapView (sau đó thêm nó vào một Layout View với

ViewGroup.addView(View) ), hoặc để cấu trúc (và Layout) vào trong

inflation từ Layout XML. MapActivity không phải là một gói chuẩn

trong thư viện Android, thế nên để sử dụng nó ta cần thêm phần tử XML

vào file AndroidManifest.xml :

<uses-library android:name="com.google.android.maps" />

Page 15: Object Android GoogleAPI

Chỉ một MapActivity được hỗ trợ cho mỗi quá trình. Nếu nhiều

MapActivitty chạy đồng thời cùng lúc, nó sẽ gây nên tình trạng xung đột

và có những can thiệp không mong muốn ảnh hưởng tới quá trình xử lý

ứng dụng.

Tóm tắt các phương thức (Method) :

Protected Boolean isLocationDisplayed() : với mục đích đếm kiểm

tra, máy chủ cần phải biết hoặc không rằng bạn đang hiển thị ở đâu

trên màn hình cảm ứng dựa theo tính toán vị trí hiện tại của thiết bị.

Trả về True nếu thông tin vị trí người dùng được hiển thị, nếu

không sẽ trả về False.

Protected Boolean isRouteDisplayed() : với mục đích đếm kiểm tra,

máy chủ cần phải biết hoặc không rằng bạn đang hiển thị loại thông

tin tuyến đường gì, chẳng hạn như các hướng dẫn lái xe. Trả về

True nếu thông tin tuyến đường được hiển thị, nếu không sẽ trả về

False.

Protected void onCreate(android.os.Bundle icicle) : ở đây chúng ta

khởi tạo các bộ phận tĩnh, tạo ra các đối tượng bản đồ và dịch vụ

trao đổi, nhưng không bắt đầu bất ky một tiểu trình nào. Các lớp

con nên tạo ra đối tượng MapView của nó sau khi được gọi thông

qua phương thức super.onCreate() .

Protected void onDestroy() : ngừng tất cả các tiểu trình và giải

phóng tất cả tài nguyên.

Protected void onNewIntent(android.content.Intent newIntent) :

được gọi cho các hoạt động thiết lập launchMode thành “singleTop”

trong gói phần mềm, hoặc nếu một khách hàng đã sử dụng cờ

FLAG_ACTIVITY_SINGLE_TOP khi gọi startActivity(Intent) .

FLAG_ACTIVITY_SINGLE_TOP có ý nghĩa : nếu nó được thiết

Page 16: Object Android GoogleAPI

lập, hoạt động sẽ không được đưa ra nếu nó đã được chạy ở vị trí

trên cùng của ngăn xếp (stack) trong quá trình hoạt động của stack.

Protected void onPause() : tạm ngưng các tiểu trình chẳng hạn như

dịch vụ trao đổi, bởi vì ta không muốn nó được chạy mãi mãi trên

giao diện ứng dụng.

Protected void onResume() : ở đây chúng ta nói bản đồ với

“predraw” rằng cái phía trước quá trình tải đang bắt và giải mã, để

vẽ ra đầu tiên sẽ xuất hiện thêm “atomic”. Bắt đầu các tiểu trình của

chúng ta : dịch vụ trao đổi và bắt đầu trở lại MapView, cái sẽ đăng

kí cho những cập nhập.

2.2.2 MapView :

Tóm tắt cấu trúc :

MapView(android.content.Context context,

android.util.AttributeSet attrs)

MapView(android.content.Context context,

android.util.AttributeSet attrs, int defStyle)

MapView(android.content.Context context, java.lang.String

apiKey)

Khai báo thư viện (Import) : com.google.android.maps.MapView

Một View là cái hiển thị một bản đồ (với dữ liệu thu được từ dịch vụ

Google Maps). Khi tập trung, nó sẽ chụp các phím bấm và thao tác cảm

ứng để xoay và phóng to thu nhỏ bản đồ. Nó cũng có thể được điều khiển

lập trình (getController() ) và có thể vẽ một số lượng của Overlays ở vị

trí trên cùng của bản đồ (getOverlays() ). Bản đồ có thể được hiển thị

theo một số cách : setSatellite(boolean), setTraffic(boolean),

setStreetView(Boolean). Nó có thể tùy chọn hiển thị kiểu một bảng kẻ ô

Page 17: Object Android GoogleAPI

khi không có chế độ cảm ứng, để hỗ trợ trong việc chọn xem bản đồ ở

chế độ thu-phóng hoặc kéo vị trí : setReticleDrawMode

(com.google.android.maps.MapView.ReticleDrawMode) . Nó sẽ vẽ một

biểu tượng Google ở phía dưới góc trái màn hình. Cơ chế thu-phóng yêu

thích là phóng to : setBuiltlnZoomControl(Boolean), như khi người dùng

kéo thả hay thu phóng bản đồ thì phần điều khiển thu phóng sẽ tự động

hiển thị bên dưới của MapView. MapView cũng là một ViewGroup, với

LayoutParameters cho phép bạn đính kèm các điểm hay một điểm cụ thể,

hoặc một cặp kinh độ - vĩ độ cụ thể. Một MapView có thể chỉ được xây

dựng bởi một MapActivity. Đó là vì nó phụ thuộc vào các tiểu trình truy

cập vào mạng và file hệ thống trên giao diện, những tiểu trình phải được

hướng dẫn bởi sự quản lý vòng đời trên MapActivity. Những kiểu sắp

xếp cạnh nhau được lưu trữ trên tập tin hệ thống trong thư mục ứng dụng.

Vùng nhớ đệm (cache) được quản lý tự động nên chúng ta không cần làm

bất ky điều gì với nó, có thể xóa nó bất cứ lúc nào. Để hiển thị dữ liệu

Google Maps trong một MapView, ta cần đến Key mà ta nhắc đến ở mục

2.1 . Ta cần tham chiếu nó từ một thuộc tính đặc biệt : android:apiKey,

nó nằm trong thành phần MapView trong XML layout, nếu ta đang tạo

một đối tượng MapView trực tiếp từ Code thì nên thông qua Maps API

Key trong cấu trúc MapView.

Tóm tắt các phương thức :

Boolean canCoverCenter() : kiểm tra xem chúng ta đã có một bảng

kẻ ô bản đồ để phủ trung tâm của bản đồ. Trả về True nếu có một

bảng kẻ ô, trả về False nếu không có.

Protected Boolean

checkLayoutParams(android.view.ViewGroup.LayoutParams p) :

Page 18: Object Android GoogleAPI

tham số p xác minh đối tượng LayoutParams, chỉ kiểm tra nếu p

đúng là tham số của MapView.LayoutParams. Trả về True nếu p

đúng là tham số, trả về False nếu không phải.

Void computeScroll() : chụp sự thay đổi của các sự kiện đối với bàn

phím hoặc màn hình cảm ứng để thay đổi bản đồ.

Void displayZoomControls(Boolean takeFocus) : làm cho thanh

điều khiển thu phóng hiển thị và tùy chọn các yêu cầu tập trung trên

đó để chúng có thể được truy cập thông qua các phím. Nếu tham số

takeFocus True,hiển thị thanh điều khiển và ngược lại.

Protected MapView.LayoutPrams generateDefaultLayoutParams() :

trả về một sự thiết lập các thông số bố trí với chiều rộng của

ViewGroup.LayoutParams.WRAP_CONTENT, chiều cao của

ViewGroup.LayoutParams.WRAP_CONTENT và với cặp tọa độ

(0,0) .

Public android.view.ViewGroup.LayoutPrams

generateLayoutParams(android.util.AttributeSet attrs)

Protected android.view.ViewGroup.LayoutParams

generateLayoutParams(android.view.ViewGroup.LayoutParams p)

MapController getController() : trả về MapController cho bản đồ

này, cái mà bạn có thể sử dụng để điều khiển bản đồ.

Int getLatitudeSpan() : khoảng vĩ độ hiện tại từ mép trên đến mép

dưới cùng của bản đồ tính bằng giá trị thập phân nhân với E*6 .

Int getLongitudeSpan() : khoảng kinh độ hiện tại từ mép trái đến

mép phải của bản đồ tính bằng giá trị thập phân nhân với E*6 .

GeoPoint getMapCenter() : trả về vị trí trung tâm của bản đồ, như là

một GeoPoint(vĩ độ và kinh độ) .

Int getMaxZoomLevel() : trả về mức độ phóng to tối đa của bản đồ.

Page 19: Object Android GoogleAPI

Java.util.List<Overlay> getOverlays() : truy cập danh sách Overlay.

Bất ky Overlay nào trong danh sách sẽ được rút ra (theo thứ tự tăng

dần) và sẽ nhận được các sự kiện (trong thứ tự giảm dần cho đến khi

nó trả về True). Nếu ta chỉnh sửa danh sách, có thể ta sẽ muốn gọi

phương thức View.postlnvalidate() để sự thay đổi sẽ được hiển thị

cho người dùng.

Public Projection getProjection() : nhận được một hình chiếu của

quá trình chuyển đổi giữa các tọa độ điểm ảnh trên màn hình và tọa

độ vĩ độ/ kinh độ. Trả về hình chiếu của bản đồ trong trạng thái hiện

tại. Ta không nên giữ đối tượng này nhiều hơn một lần vẽ bởi kể từ

khi chiếu đến sau một khoảng thời gian nó có thể thay đổi theo vị trí

của thiết bị.

Int getZoomLevel() : trả về mức độ phóng hiện tại của bản đồ. Ở

mức 1, đường xích đạo của Trái Đất là 256 pixels, mỗi mức độ

phóng kế tiếp được phóng đại theo hệ số 2.

Public Boolean isSatellite() : kiểm tra có phải là bản đồ đang hiện

thị ở chế độ Satellite.

Public Boolean isTraffic() : kiểm tra có phải là bản đồ đang hiện thị

ở chế độ Traffic.

Public Boolean isStreetView() : kiểm tra có phải là bản đồ đang

hiện thị ở chế độ StreetView.

Protected void onDatechedFromWindow() : được gọi khi đang được

tách ra, làm sạch các điều khiển thu phóng.

Protectes void onDraw(android.graphics.Canvas canvas) : phương

pháp vẽ chính, để vẽ nền bản đồ, tất cả các lớp phủ Overlays, mặt

kẻ ô (nếu muốn) và biểu tượng Google.

Page 20: Object Android GoogleAPI

Void onFocusChanged(Boolean hasFocus, int direction,

android.graphics.Rect unused) : được gọi bởi hệ thống khung nhìn

khi tiêu điểm tập trung của khung nhìn này thay đổi. Bắt sự kiện

thay đổi tiêu điểm để ngăn chặn sự ghép nhẵn.

Boolean onKeyDown(int keyCode, amdroid.view.KeyEvent event) :

chuyển tác các khóa đến những lớp phủ đầu tiên, và nếu chúng

không xử lý,hãy cố sử dụng chúng để xoay. Tương tự với Bolean

onKeyUp

Protected void onLayout(Boolean changed,int left,int top,int

ringt,int bottom)

Protected void onMeasure(int widthMeasureSpec, int

heightMesureSpec)

Void onRestoreInstanceState(android.os.Bundle state) : khôi phục

trạng thái của MapView thành một gói (Bundle). Hiện tại,nó khôi

phục lại trung tâm,mức độ thu phóng, và trạng thái của sự tương tác

thu phóng.

Void onSaveInstanceState(android.os.Bundle state) : lưu trạng thái

của MapView thành một gói. Hiện tại, điều này vẫn còn là trung

tâm,mức độ thu phóng và trạng thái của sự tương tác thu phóng vẫn

giữ nguyên.

Protected void onSizeChanged(int w,int h,int oldw,int oldh) : điều

này thay đổi các kích thước của đối tượng bản đồ và đặt lại vị trí

bảng kẻ ô. Nếu ghi đè lên phương thức này, đảm bảo rằng gọi thông

qua phương thức super.onSizeChanged().

Boolean onTouchEvent(android.view.MotionEvent ev) : thông qua

các sự kiện trên màn hình cảm ứng, cung cấp chúng cho một máy

dò cử chỉ và gửi các cử chỉ được phát hiện.

Page 21: Object Android GoogleAPI

Boolean onTrackballEvent(android.view.MotionEvent event) :

thông qua các sự kiện cảm ứng các lớp phủ đầu tiên, và nếu chứng

không hoạt động, hãy cố sử dụng chúng để xoay và nhấp.

Void onWindowFocusChanged(Boolean hasFocus) : gọi khi cửa sổ

chứa khung nhìn này mất tiêu điểm. Bộ nhớ đệm các tiêu điểm đã

thay đổi các sự kiện để ngăn chặn ghép nhẵn.

Void preload() : tải trước những phần xếp cạnh nhau tại trung tâm

bản đồ. Điều này sẽ bắt đầu tìm nạp các phần cạnh nhau.

Void setBuiltInZoomControls(Boolean on) : đặt xem có đúng hay

không để cho phép các trình điều khiển thu phóng. Nếu được phép,

MapView sẽ hiển thị điều khiển thu phóng tự động.

Void setReticleDrawMode(MapView.ReticleDrawMode mode) :

nêu cụ thể việc bảng kẻ ô nên được rút ra khi thiết bị không hỗ trợ

chế độ cảm ứng.

Void setSatellite(Boolean on) : thiết lập chế độ bản đồ Satellite.

Void setTraffic(Boolean on) và Void setStreetView(Boolean on)

tương tự là để thiết lập các chế độ bản đồ.

2.2.3 MapController :

Khai báo thư viện (Import) : com.google.android.maps.MapController

Đây là một lớp tiện ích quản lý việc điều khiển bản đồ chẳng hạn như :

phóng to thu nhỏ, kéo vị trí bản đồ.

Tóm tắt các phương thức :

Void animateTo(GeoPoint point) : bắt đầu hoạt cảnh bản đồ đối với

những điểm được xác định.

Page 22: Object Android GoogleAPI

Void animateTo(GeoPoint point, android.os.Message message) : bắt

đầu hoạt cảnh bản đồ đối với những điểm được xác định. Nếu và chỉ

khi hình ảnh động đưa đến sự kết thúc tự nhiên của nó, gửi thông

điệp xác định (nếu không Null). Thông điệp sẽ không được gửi đi

nếu hình ảnh động bị hủy bỏ.

Void animateTo(GeoPoint point, java.lang.Runnable runnable) : bắt

đầu hoạt cảnh bản đồ đối với những điểm được xác định. Tham số

point : là nơi hoạt cảnh bản đồ hướng đến, tham số runnable : nếu

và chỉ khi hình ảnh động đưa ra sự kết thúc tự nhiên của nó, tham số

này sẽ được gọi để chạy trên giao diện tiểu trình, nó sẽ không được

gọi nếu hình ảnh động bị hủy bỏ.

Boolean onKey(android.view.View v, int keyCode,

android.view.KeyEvent event) : xử lý các khóa sự kiện và chuyển

đổi chúng thành những thành phần đồ họa thích hợp của bản đồ.

Được xác định trong View.OnKeyListener .

Void scrollBy(int x, int y) : di chuyển một lượng nhất định các điểm

ảnh, sẽ không có hình ảnh động. Trong đó x là số đo các điểm ảnh

dịch chuyển chiều ngang, y là số đo các điểm ảnh dịch chuyển chiều

dọc.

Void setCenter(GeoPoint point) : thiết lập bản đồ ở phần trung tâm

được xác định,không có hình ảnh động.

Void setZoom(int zoomLevel) : thiết lập mức độ thu phóng của bản

đồ,các mức độ từ 1 đến 21,chức năng chính các của nó là chỉ thiết

lập mức độ thu phóng trực tiếp cho một nấc thu-phóng ( sử dụng

zoomIn() hoặc zoomOut() ).

Void stopAnimation(Boolean jumpToFinish) : ngừng bất ky một

hoạt cảnh nào có thể trong quá trình xử lý, và cập nhật điều kiện

Page 23: Object Android GoogleAPI

trung tâm bản đồ để bất cứ khoảng trống nào của các phần hoạt

cảnh được hoàn thành. Nếu True chúng sẽ rút gọn hoạt cảnh thành

điểm cuối, nếu False thì sẽ cắt bỏ vị trí đang đứng.

Void stopPainning() : thiết lập lại trạng thái di chuyển để làm cho

bản đồ cố định. Điều này có thể cần thiết nếu nhận được sự kiện

Key-Down, nhưng sẽ không nhận được sự kiện Key-Up tương ứng.

Boolean zoomIn() : phóng to theo một mức phóng đã thiết lập

trước.

Boolean zoomOut() : thu nhỏ theo một mức phóng đã thiết lập

trước.

Boolean zoomInFixing(int xPixel, int yPixel) : tương tự như

zoomIn(), nhưng với các tham số xPixel và yPixel là tọa độ của

điểm được giữ cố định trên màn hình mặc cho thao tác phóng vẫn

được tiến hành.

Boolean zoomOutFixing(int xPixel, int yPixel) : tương tự như

zoomOut(), nhưng với các tham số xPixel và yPixel là tọa độ của

điểm được giữ cố định trên màn hình mặc cho thao tác phóng vẫn

được tiến hành.

Void zoomToSpan(int latSpanE6, int lonSpanE6) : hiểu đơn giản thì

chức năng của nó cũng là thu phóng bản đồ nhưng nó chỉ thu phóng

một vùng được chọn trên bản đồ, chúng ta chọn vùng thu phóng

theo 2 tham số vĩ độ và kinh độ.

2.2.4 GeoPoint :

Tóm tắt cấu trúc : GeoPoint(int latitudeE6, int longitudeE6)

Khai báo thư viện (Import) : com.google.android.maps.GeoPoint

Page 24: Object Android GoogleAPI

Là một lớp bất biến đại diện cho một cặp vĩ độ - kinh độ, được lưu trữ

như những phần nguyên của một phần triệu đơn vị độ.

Tóm tắt các phương thức :

Boolean equals(java.lang.Object object)

Int getLatitudeE6() : trả về vĩ độ của GeoPoint.

Int getLongitudeE6() : trả về kinh độ của GeoPoint.

Int hashCode()

Java.lang.String toString()

2.2.5 Overlay :

Tóm tắt cấu trúc : Overlay()

Khai báo thư viện : com.google.android.maps.Overlay

Overlay hiểu đơn giản là lớp phủ, là lớp cơ sở đại diện cho lớp phủ để có

thể được hiển thị trên cùng của một bản đồ. Trên cùng ta hiểu cơ bản là

lớp ta nhìn thấy trên màn hình thiết bị. Để thêm một lớp phủ, phân lớp

con của lớp này, ta tạo một phiên bản, và thêm nó vào danh sách thu

được từ MapView.getOverlays() . Để cho phép thiết bị cảm ứng chụp

một điểm, phân lớp con nên thực thi giao diện Overlay.Snappable .

Tóm tắt các phương thức :

Static interface Overlay.Snappable : định nghĩa giao diện cho các

lớp phủ, cái chứa những mục tin được chụp lại (ví dụ như khi người

dùng gọi thực thi hành động thu-phóng, điều này có thể được gọi là

đang cho phép người dùng chụp phóng to hay thu nhỏ một điểm).

Page 25: Object Android GoogleAPI

Boolean onSnapToItem(int x, int y, android.graphics.Point

snapPoint, MapView mapView) : kiểm tra xem nếu xác định x và y

gần đủ để các mục tin chụp lại các hành động hiện tại. Các tham số

x và y là tọa độ trên màn hình, snapPoint là vùng được lấp đầy gần

nhất với x và y và có thể bị ảnh hưởng nếu không chụp, mapView là

MapView được yêu cầu để người dùng thao tác.

Protected static float SHADOW_X_SKEW : X_SKEW là giá trị để

tạo một vùng bóng đánh dấu quanh điểm.

Protected static float SHADOW_Y_SKEW : Y_SKEW là giá trị để

tạo một vùng bóng đánh dấu quanh điểm.

Void draw(android.graphics.Canvas canvas, MapView mapView,

Boolean shadow) : vẽ lớp phủ lên bản đồ. Nếu shadow = True, vẽ

những lớp bóng (những lớp mà shadow bật True), nếu shadow =

False thì áp dụng trường hợp mặc định (cũng có thể hiểu là không

vẽ gì).

Boolean draw(android.graphics.Canvas canvas, MapView

mapView, Boolean shadow, long when) : nếu cần vẽ lại ngay lập

tức thì bật giá trị True, và nếu False thì không làm gì.

Protected static void drawAt(android.graphics. Canvas canvas,

android.graphics.drawable.Drawable drawable, int x, int y, Boolean

shadow) : là phương pháp thuận tiện để vẽ bóng của vùng được

chọn, nếu True là được vẽ và ngược lại.

Boolean onKeyDown(int keyCode, android.view.KeyEvent event,

MapView mapView) : xử lý sự kiện khóa xuống.

Boolean onKeyUp(int keyCode, android.view.KeyEvent event,

MapView mapView) : xử lý sự kiện khóa lên.

Page 26: Object Android GoogleAPI

Boolean onTap(GeoPoint p, MapView mapView) : xử lý một sự

kiện nhấp, điều này có thể là mỗi một sự kiện cảm ứng trên màn

hình cảm ứng nhấp ở bất cứ đâu trên bản đồ, hoặc một cái nhấp

chọn với phím Trackball trên trung tâm bản đồ. Với tham số p là

điểm được nhấp.

Boolean onTouchEvent(android.view.MotionEvent e, MapView

mapView) : xử lý một sự kiện chạm vào màn hình cảm ứng.

Boolean onTrackballEvent(android.view.MotionEvent event,

MapView mapView) : xử lý sự kiện sử dụng bi xoay Trackball của

thiết bị.

2.2.6 OverlayItem :

Tóm tắt cấu trúc : OverlayItem(GeoPoint point, java.lang.String title,

java.lang.String snippet)

Khai báo thư viện : com.google.android.maps.OverlayItem

Là thành phần cơ bản của bất ky ItemizedOverlay nào.

Tóm tắt phạm vi liên quan :

Static int ITEM_STATE_FOCUSED_MASK : chỉ trạng thái cơ bản

của tập hợp điểm (Bitset), ở đây là trạng thái tập trung của mục tin

lớp phủ.

Static int ITEM_STATE_PRESSED_MASK : chỉ trạng thái cơ bản

của tập hợp điểm (Bitset), ở đây là trạng thái của thao tác nhấn – đè.

Static int ITEM_STATE_SELECTED_MASK : chỉ trạng thái cơ

bản của tập hợp điểm (Bitset), ở đây là trạng thái được chọn của

mục tin lớp phủ.

Protected android.graphics.drawable.Drawable mMarker : đánh dấu

lớp phủ được dùng để chỉ ra mục tin này.

Protected GeoPoint mPoint : vị trí của mục tin này.

Page 27: Object Android GoogleAPI

Protected java.lang.String mSnippet : trích ra đoạn văn bản của mục

tin này.

Protected java.lang.String mTitle : tiêu đề văn bản của mục tin.

Tóm tắt các phương thức :

android.graphics.drawable.Drawable getMarker(int stateBitset) : trả

về sự đánh dấu,cái sẽ được dùng khi vẽ mục tin này trên bản đồ.

Một giá trị Null nghĩa là các điểm đánh dấu mặc định sẽ được vẽ.

Các điểm đánh dấu khác có thể được trả lại cho với những trạng thái

khác nhau. Những điểm đánh dấu khác có thể có giới hạn khác

nhau. Hành vi mặc định để gọi

setState(android.graphics.drawable.Drawable, int) trên điểm đánh

dấu mục tin của lớp phủ. Tham số stateBitset là trạng thái hiện tại,

trả về sự đánh dấu của trạng thái hiện tại hoặc trả về Null nếu đánh

dấu mặc định cho lớp phủ được sử dụng.

GeoPoint getPoint() : trả về GeoPoint của lớp phủ.

Java.lang.String getSnippet() :trả về đoạn trích văn bản của lớp phủ.

Java.lang.String getTitle() : trả về tiêu đề văn bản của lớp phủ này.

Java.lang.String routableAddress() : trả về vị trí của mục tin trên

một định dạng bản đồ định tuyến. Theo mặc định trả về một chuỗi

dạng String với vĩ độ và kinh độ (phân cách bằng dấu phẩy), đơn vị

độ chưa nhân với E*6.

Void setMarker(android.graphics.drawable.Drawable marker) : thiết

lập điểm đánh dấu được dùng để vẽ mục tin này lên bản đồ, nếu

chỉnh sửa giá trị đánh dấu bằng không thì sẽ vẽ theo đánh dấu mặc

định (có thể hiểu là nếu Null thì bỏ qua). Điểm đánh dấu có thể

được vẽ bằng cách sử dụng bất ky thuộc tính nào sau đây : Null,

R.attr.state_pressed, R.attr.state_selected, R.attr.state_focused.

Page 28: Object Android GoogleAPI

Static void setState(android.graphics.drawable.Drawable drawable,

int stateBitset) : thiết lập trạng thái của một vùng cấp phép vẽ để

phù hợp với tập hợp trạng thái được xác định. Điều này thực hiện

bằng cách chuyển đổi trạng thái của các Bitset thành một trạng thái

của các thuộc tính R.attr.state_pressed, R.attr.state_selected và

R.attr.state_focused, và sau đó gọi phương thức

Drawable.setState(int[]) .

2.2.7 ItemizedOverlay :

Tóm tắt cấu trúc : ItemizedOverlay(android.graphics.drawable.Drawable

defaultMarker) .

Khai báo thư viện : com.google.android.maps.ItemizedOverlay<Item>

Đây là lớp cơ sở cho một lớp Overlay, cái bao gồm một danh sách các

OverlayItem. Lớp này xử lý phân loại bắc-nam để vẽ, để tạo các vùng

giới hạn,vẽ một đánh dấu cho mỗi điểm, và duy trì một mục tin tập trung.

Tóm tắt các phương thức :

Protected static android.graphics.drawable.Drawable boundCenter

(android.graphics.drawable.Drawable ballon) : điều chỉnh một giới

hạn của vùng cấp phép vẽ để (0,0) là trung tâm của vùng cấp phép

vẽ. Trả về cùng một vùng cấp phép vẽ được thông qua.

Protected static android.graphics.drawable.Drawable

boundCenterBottom(android.graphics.drawable.Drawable ballon) :

điều chỉnh giới hạn của vùng cấp phép vẽ để (0,0) là điểm ảnh trung

tâm của dòng dưới cùng của vùng cấp phép vẽ.

Page 29: Object Android GoogleAPI

Protected abstract Item createItem(int i) : phương pháp mà theo đó

lớp con tạo ra các mục tin thực tế. Cái này chỉ được gọi từ phương

thức populate(), chúng là bộ nhớ đệm để sử dụng sau này.

Void draw(android.graphics.Canvas canvas, MapView mapView,

Boolean shadow) : vẽ 1 đánh dấu của mỗi mục tin, populate() phải

được gọi đầu tiên. Đánh dấu sẽ được vẽ 2 lần cho mỗi mục tin trên

lớp phủ, lần đầu trong giai đoạn bóng (sai lệch và tối), lần sau trong

giai đoạn không bóng. Phía dưới trung tâm của đánh dấu sẽ được

liên kết với tọa độ địa lý của mục tin. Chế độ tự vẽ có thể bị thay

đổi vởi việc ghi đè của phương thức getIndexToDraw(int). Một mục

tin có thể cung cấp một đánh dấu thay thể thông qua phương pháp

OverlayItem.getMarker(int) của nó. Nếu phương thức này trả về

một giá trị rỗng thì đánh dấu mặc định được sử dụng.

GeoPoint getCenter() : theo mặc định trả về mục tin đầu tiên được

xếp trong danh sách, phương thức populate() phải được gọi đầu tiên.

Item getFocus()

Protected int getIndexToDraw(int drawingOrder) : trả về vị trí của

mục tin với chỉ số xác định, theo mặc định các mục tin sẽ được sắp

xếp theo thứ hạng của vĩ độ. Các lớp con có thể ghi đè lên phương

thức này để thay đổi thứ tự vẽ.

Item getItem(int position) : trả về mục tin của chỉ số xác định

(position) .

Int getLastFocusedIndex() : trả về thứ hạng của mục tin có nhiều

điểm gần nhau nhất được tập trung về một điểm, hoặc trả về -1 nếu

chúng không bao giờ có một tiêu điểm.

Page 30: Object Android GoogleAPI

Int getLatSpanE6() : trả về khoảng vĩ độ của lớp phủ, được tính toán

trong khoảng populate() như là sự khác nhau giữa điểm cực bắc và

cực nam.

Int getLonSpanE6() : trả về khoảng kinh độ của lớp phủ, được tính

toán trong khoảng populate() như là sự khác nhau giữa điểm cực tây

và cực đông. Các lớp phủ, cái mở ra điểm kinh độ gián đoạn tại -

180 độ sẽ báo cáo những vùng rất lớn.

Protected Boolean hitTest(Item item,

android.graphics.drawable.Drawable marker, int hitX, int hitY) :

xem xét nếu một điểm nhấn xác định còn trong phạm vi của đánh

dấu một mục tin, ghi đè để sửa đổi cách thức một mục tin đã được

kiểm tra. Điểm nhấn liên quan đến vùng đánh dấu. Việc thực hiện

mặc định chỉ kiểm tra để xem nếu điểm nhấn nằm trong giới hạn

vùng cảm ứng của đánh dấu. Trả về True nếu điểm nhấn nằm trong

giới hạn đánh dấu.

Item nextFocus(Boolean forwards) : trả về mục tin tiếp theo để

được tập trung vào hướng chỉ định, hoặc giá trị rỗng nếu nó lằm

cuối dòng, nếu chúng không bao giờ được tập trung trước đó thì trả

về mục tin đầu tiên.

Boolean onKeyUp(int keyCode, android.view.KeyEvent event,

MapView mapView) : xử lý sự kiện nhả khóa, trả về True nếu sự

kiện nhấp được xử lý.

Boolean onSnapToItem(int x, int y, android.graphics.Point

snapPoint, MapView mapView) : kiểm tra xem nếu giá trị x và y đủ

gần để một mục tin là kết quả của việc chụp lại hành động hiện tại

thành mục tin.

Page 31: Object Android GoogleAPI

Boolean onTap(GeoPoint p, MapView mapView) : xử lý một sự

kiện nhấp. Một sự kiện nhấp chỉ được xử lý nếu nó định hướng trên

một mục tin và bạn ghi đè onTap(int) để trả về True.

Boolean onTap(int index) : ghi đè phương thức này để xử lý một

nhấp trên một mục tin.

Boolean onTouchEvent(android.view.MotionEvent event,

MapView mapView) : xử lý một sự kiện chạm.

Boolean onTrackballEvent(android.view.MotionEvent event,

MapView mapView) : xử lý một sự kiện thao tác bằng Trackball.

Protected void populate() : tiện ích của phương pháp để thực hiện

tất cả các xử lý trên một ItemizedOverlay mới. Lớp con cung cấp

các mục tin thông qua phương thức createItem(int), lớp con nên

được gọi ngay vì nó có dữ liệu, trước khi lớp khác được gọi.

Void setDrawFocusedItem(Boolean drawFocusedItem) : thiết lập có

hay không để vẽ mục tin tiêu điểm.

Void setFocus(Item item) : nếu mục tin xác định được tìm thấy

trong lớp phủ, ép nó thành tiêu điểm hiện tại.

Protected void setLastFocusedIndex(int lastFocusedIndex) : thiết

lập chỉ số của mục tin mà gần đây nhất (hoặc hiện tại) được tập

trung, hoặc chỉ số -1 nếu chưa từng được. Điều này được ghi nhớ để

phương thức nextFocus(Boolean) có thể tiếp tục quá trình duyệt

tuần tự của một lớp phủ ngay cả khi người dùng thao tác bản đồ

trong giây lát. Thông thường các lớp con sẽ không cần phải thiết lập

biến này, vì nó sẽ được tự động cập nhật khi tiêu điểm được thay

đổi.

Page 32: Object Android GoogleAPI

Void

setOnFocusChangeListener(ItemizedOverlay.OnFocusChangeListe

ner l)

Abstract int size() : số lượng các mục tin trong lớp phủ,được gọi

một lần trong quá trình populate(), và lưu lại trong tất cả thời gian.

2.2.8 ItemizedOverlay.OnFocusChangeListener :

Giao diện cho những người nghe quan tâm trong khi mục tin tập trung

thay đổi.

Tóm tắt phương thức :

Void onFocusChanged(ItemizedOverlay overlay, OverlayItem

newFocus) : phương thức này sẽ được gọi trong phương pháp vẽ,

vậy nên không làm bất cứ điều gì ngoại trừ gửi một thông điệp.

Tham số overlay là lớp phủ Overlay đang được gọi, newFocus là

mục tin tiêu điểm mới hoặc là giá trị rỗng nếu không có bất cứ cái

gì.

2.2.9 MapView.LayoutParams :

Tóm tắt cấu trúc :

MapView.LayoutParams(android.content.Context c,

android.util.AttributeSet attrs) : tạo 1 thiết lập mới cho các thông số

bố trí.

MapView.LayoutParams(int width, int height, GeoPoint point, int

alignment) : tạo 1 thiết lập mới cho các thông số bố trí với chiều

rộng,cao và vị trí cụ thể.

Page 33: Object Android GoogleAPI

MapView.LayoutParams(int width, int height, GeoPoint point, int x,

int y, int alignment) : tạo 1 thiết lập mới cho các thông số bố trí với

chiều rộng,cao và vị trí cụ thể.

MapView.LayoutParams(android.view.ViewGroup.LayoutParams

source).

Khai báo thư viện : com.google.android.maps.MapView.LayoutParams

Thông tin bố trí liên quan đến MapView. Khung nhìn con có thể được đặt

ra hoặc được xác định vị trí dựa vào MapView (MODE_VIEW), hoặc

xác định vị trí dựa vào bản đồ, cái được hiển thị bởi MapView

(MODE_MAP) .

Tóm tắt thành phần liên quan :

Int alignment : sự sắp xếp của mối liên hệ con đến vị trí.

Static int BOTTOM : cạnh dưới bề ngang của alignment.

Static int BOTTOM_CENTER : trung điểm cạnh dưới bề ngang của

alignment.

Static int CENTER : đường căn giữa cả 2 chiều của alignment.

Static int CENTER_HOROZONTAL : xét theo bề ngang của

alignment (đường bề ngang trung tâm).

Static int CENTER_VERTICAL : xét theo chiều dọc của alignment

(đường chiều dọc trung tâm).

Static int LEFT : xét theo bề ngang của alignment là đường bên trái.

Int mode : hình thức bố trí.

Static int MODE_MAP : giao diện chế độ bản đồ tương đối.

Static int MODE_VIEW : giao diện chế độ xem bản đồ tương đối.

GeoPoint point : vị trí của mục con trên bản đồ.

Page 34: Object Android GoogleAPI

Static int RIGHT : xét theo bề ngang của alignment là đường bên

phải.

Static int TOP : xét theo chiều dọc của alignment là đường trên

cùng.

Static int TOP_LEFT

Int x : vĩ độ trên màn hình của mục con tương đối để xem.

Int y : kinh độ trên màn hình của mục con tương đối để xem.

Tóm tắt phương thức :

Java.lang.String debug(java.lang.String output)

2.2.10 MapView.ReticleDrawMode :

Khai báo thư viện : com.google.android.maps.ReticleDrawMode

Tóm tắt hằng số enum :

DRAW_RETICLE_NEVER : không bao giờ vẽ bảng kẻ ô.

DRAW_RETICLE_OVER : vẽ bảng kẻ ô đè lên tất cả các lớp phủ.

DRAW_RETICLE_UNDER : vẻ bảng kẻ ô trước các lớp phủ.

Tóm tắt phương thức :

Static MapView.ReticleDrawMode valueOf(java.lang.String name):

trả về hằng số enum của kiểu này với tên quy định. Chuỗi phải phù

hợp chính xác với một định danh được dùng để khai báo một hằng

số enum trong kiểu này. Trả về tên của hằng số enum theo quy định.

Static MapView.ReticleDrawMode[] value () : trả về một mảng

chứa các hằng số kiểu enum này, theo thứ tự công khai. Phương

thức này có thể được dùng để lặp qua các hằng số như sau :

Page 35: Object Android GoogleAPI

For(MapView.ReticleDrawMode c :

MapView.ReticleDrawMode.value() ) {

System.out.println(c) ;

}

2.2.11 MyLocationOverlay :

Tóm tắt cấu trúc :

MyLocationOverlay(android.content.Context context, MapView

mapView) .

Khai báo thư viện : com.google.android.maps.MyLocationOverlay

Một lớp phủ để vẽ vị trí hiện tại của người dùng trên bản đồ. Lớp con có

thể ghi đè lên phương thức dispatchTap() để xử lý những nhấp trên vị trí

hiện tại.

Tóm tắt các phương thức :

Void disableCompass() : tắt thông tin cập nhật từ cảm biến la bàn.

Void disableMyLocatin() : vô hiệu hóa các thông tin cập nhật vị trí.

Protected Boolean dispatchTap() : xử lý một nhấp trên điểm “vị trí

người dùng”

Boolean draw(android.graphics.Canvas canvas, MapView

mapView, Boolean shadow, long when) : phương thức vẽ, trả về

True nếu cần vẽ lại ngay lập tức, hoặc ngược lại. Mặc định trả về

False.

Protected void drawCompass(android.graphics.Canvas canvas, float

bearing) : vẽ diện tích thêm vào.

Protected void drawMyLocation(android.graphics.Canvas canvas,

MapView mapView, android.location.Location lastFix,

GeoPoint myLocation, long when) : vẽ chấm thể hiện vị trí của

Page 36: Object Android GoogleAPI

người dùng. Theo mặc định vẽ một điểm di động màu xanh, có thể

bao quanh bởi một quầng sáng mờ để đại diện cho chính xác. Ngoài

ra nếu vị trí người dùng di chuyển gần các cạnh của màn hình,

chúng gửi đến một MapController để xử lý và cuộn đến vùng mới

gần đấy.

Boolean enableCompass() : cho phép cập nhật thông tin từ la bàn

cảm ứng.

Boolean enableMyLocation() : cho phép cập nhật thông tin vị trí

người dùng. Đăng ký thông tin cập nhật từ

LocationManager.GPS_PROVIDER và

LocationManager.NETWORK_PROVIDER.

Android.location.Location getLastFix() : trả về một vị trí tương ứng

với vị trí người sử dụng được cập nhật gần nhất.

GeoPoint getMyLocation() : trả về một GeoPoint tương ứng với vị

trí người sử dụng được cập nhật gần nhất.

Float getOrientation() : trả về phạm vi đường tròn của lần cập nhật

gần nhất.

Boolean isCompassEnable() : kiểm tra có hay không biểu tượng

phạm vi được hiển thị.

Boolean isMyLocationEnable() : kiểm tra có hay không “sự nhận

thức” được kích hoạt thông qua GPS hay mạng Internet.

Void onAccuracyChanged(int sensor, int accuracy)

Void onLocationChanged (android.location.Location location) :

lắng nghe để thiết lập vị trí cập nhật từ LocationManagerService.

Void onProviderDisable(java.lang.String provider)

Void onProviderEnable(java.lang.String provider)

Page 37: Object Android GoogleAPI

Void onSensorChanged(int sensor, float[] values) : được gọi bởi

SensorManager khi giá trị phạm vi la bàn thay đổi.

Void onSnapToItem(int x,int y, android.graphics.Point snapPoint,

MapView mapView) : kiểm tra xem nếu giá trị x và y gửi về đủ gần

để một mục tin là kết quả việc chụp lại hành động hiện tại thành

mục tin.

Void onStatusChanged(java.lang.String provider, int status,

android.os.Bundle extras)

Boolean onTap(GeoPoint p, MapView map) : kiểm tra đúng hay

không vị trí nhấp đủ gần với vị trí hiện tại.

Boolean runOnFirstFix(java.lang.Runnable runnable) : hàng đợi

một phạm vi chạy được thực hiện ngay sau khi có một vị trí đã sửa

lại.

2.2.12 Projection :

Một dịch vụ phép chiếu bản đồ chuyển đổi giữa hệ thống tọa độ x/y trên

màn hình thiết bị và vĩ độ/kinh độ trên bề mặt trái đất. Nhận được một

phép chiếu bản đồ từ MapView.getProjection().

Tóm tắt các phương thức :

GeoPoint fromPixels(int x, int y) : tạo một GeoPoint mới từ tọa độ

điểm ảnh tương đối so với góc trên cùng bên trái của MapView.

Float metersToEquatorPixels(float meters) : chuyển đổi khoảng

cách tính bằng mét (dọc theo đường xích đạo) thành một trong

những điểm ảnh (chiều ngang màn hình) tại mức phóng hiện tại.

Android.graphics.Point toPixels(GeoPoint in,

android.graphics.Point out) : chuyển đổi GeoPoint nhận được thành

Page 38: Object Android GoogleAPI

tọa độ ảnh trên màn hình đối so với góc trên cùng bên trái của

MapView.

2.2.13 TrackballGestureDetector :

Khai báo thư viện : com.google.android.maps.TrackballGestureDetector.

Phân tích một loạt các sự kiện di động (MotionEvent) và phát hiện những

cử chỉ. Ngay bây giờ chỉ có một cử chỉ được phát hiện : cuộn, nhấp và

nhấp đúp.

Tóm tắt các phương thức :

Void analyze(android.view.MotionEvent ev) : phân tích một sự kiện

di động.

Float getCurrentDownX() : trả về vị trí x của sự kiện nhấp hiện tại.

Float getCurrentDownY() : trả về vị trí y của sự kiện nhấp hiện tại.

Float getFirstDownX() : trả về vị trí x của sự kiện nhấp đúp hiện tại.

Float getFirstDownY() : trả về vị trí y của sự kiện nhấp đúp hiện tại.

Boolean isDoubleTap() : kiểm tra đúng hay không sự kiện di động

hiện tại là một sự kiện nhấp đúp.

Boolean isScroll() : kiểm tra đúng hay không sự kiện di động hiện

tại là một sự kiện cuốn.

Boolean isTap() : kiểm tra đúng hay không sự kiện di động hiện tại

là một sự kiện nhấp.

Void registerLongPressCallback(java.lang.Runnable runnable) :

đăng kí vùng chạy để được gọi khi sự kiện giữ phím (longPress)

được phát hiện.

Float scrollX() : trả về vị trí x của sự kiện cuộn hiện tại.

Float scrollY() : trả về vị trí y của sự kiện cuộn hiện tại.

Page 39: Object Android GoogleAPI