21
TRƯNG ĐI HC BCH KHOA H NI VIỆN CÔNG NGHỆ THÔNG TIN V TRUYỀN THÔNG BO CO BI TẬP LỚN LẬP TRÌNH ANDROID ĐỀ TÀI 1: Chỉ dẫn người dùng theo vị trí Giáo viên hướng dẫn: Nguyễn Hồng Quang Sinh viên thực hiện: Nguyễn Khánh Hưng 20081279 TTM-K53 Bùi Văn Hải 20080842 HTĐ1-K53 Trần Văn Toàn 20082715 TTM-K53 Đỗ Ngọc Tân 20082312 TTM-K53 H Ni 11/2012

Bao Cao Lap Trinh Android

Embed Size (px)

Citation preview

Page 1: Bao Cao Lap Trinh Android

TRƯƠNG ĐAI HOC BACH KHOA HA NÔI

VIỆN CÔNG NGHỆ THÔNG TIN VA TRUYỀN THÔNG

BAO CAO BAI TẬP LỚN

LẬP TRÌNH ANDROID

ĐỀ TÀI 1:

Chỉ dẫn người dùng theo vị trí

Giáo viên hướng dẫn: Nguyễn Hồng Quang

Sinh viên thực hiện:

Nguyễn Khánh Hưng 20081279 TTM-K53

Bùi Văn Hải 20080842 HTĐ1-K53

Trần Văn Toàn 20082715 TTM-K53

Đỗ Ngọc Tân 20082312 TTM-K53

Ha Nôi 11/2012

Page 2: Bao Cao Lap Trinh Android

2

MỤC LỤC

I. Cơ sở lý thuyết .................................................................................................. 3

1. Giới thiệu chung ............................................................................................. 3

2. Các tham số truy cập Google Maps ................................................................ 3

II. Mô tả các chức năng chính của chương trình ................................................ 4

1. Nội dung công việc ......................................................................................... 4

2. Các chức năng ................................................................................................ 5

3. Cấu trúc chương trình ..................................................................................... 6

III. Cài đặt chương trình .................................................................................... 6

1. Hiển thị MapView .......................................................................................... 6

2. Hiển thị người dùng trên bản đồ số ................................................................ 7

3. Cảnh bảo người dùng trước một địa điểm xác định ....................................... 7

4. Dẫn đường người dùng ................................................................................... 8

5. Hiển thị thông tin thời tiết ............................................................................ 13

IV. Minh họa kết quả ............................................................................................ 17

V. KẾT LUẬN ..................................................................................................... 20

TÀI LIỆU THAM KHẢO ...................................................................................... 21

Page 3: Bao Cao Lap Trinh Android

3

I. Cơ sở lý thuyết

1. Giới thiệu chung

Trong thế giới web ngày nay, các giải pháp bản đồ là một thành phần không

thể thiếu. Chúng ta sử dụng chúng để thấy vị trí của mọi vật, để tìm vị trí của một

địa chỉ, để lấy về thông tin dẫn đường, và làm nhiều thứ khác. Hầu hết thông tin có

một vị trí, và nếu vật nào đó có một vị trí thì nó có thể hiển thị trên một bản đồ.

Có một số công ty cung cấp các giải pháp về bản đồ như Yahoo! Maps và

Bing Maps, nhưng phổ biến nhất vẫn là Google maps. Thực tế theo trang

programmableweb.com, google maps là API phổ biến nhất trên internet. Theo thống

kê của trang này tháng 5/2010, 43% là sử dụng Google Maps API.

Để sử dụng được các dịch vụ và API của google maps bạn cần phải đăng ký với

dịch vụ Google Maps và đồng ý với các điều khoản dịch vụ áp dụng trước khi bạn

lấy dữ liệu từ Google Maps.

2. Các tham số truy cập Google Maps

2.1. Geocoding

Geocoding là quá trình chuyển đổi địa chỉ giống như “Bach Khoa Ha Noi” )

thành tọa độ địa lý (như latitude "21.004409", longitude "105.845896"), mà chúng

ta có thể sử dụng để dánh dấu hay định vị

Page 4: Bao Cao Lap Trinh Android

4

Geocoding Request

http://maps.googleapis.com/maps/api/geocode/output?parameters

Trong đó output có thể là các giá trị sau:

json file chỉ dẫn output trong JavaScript Object Notation (JSON)

xml: file xml

Các thông số yêu cầu

o address: địa chỉ muốn thành geocode

hoặc latlng: giá trị latitude/longitude

hoặc components: thành phần lọc mà chúng ta muốn có

geocode

o sensor: có hoặc không yêu cầu mã hóa vị trí địa lý từ một thiết

bị với cảm biến vị trí. Giá trị true hoặc false

o ...

Geocode responses

Xml trả về thông tin địa chỉ đã nhập

http://maps.googleapis.com/maps/api/geocode/xml?address=Bach+Khoa+Ha+Noi&sensor=false

Trong đó: address = địa điểm cần biết thông tin

II. Mô tả các chức năng chính của chương trình

1. Nội dung công việc

Chỉ dẫn người dùng theo vị trí

Phát triển một ứng dụng chạy trên thiết bị đầu cuối di động thực hiện các

chức năng sau:

o Hiển thị vị trí người dùng trên bản đồ số (chẳng hạn Google Map)

được mở ra trên màn hình thiết bị di động

o Cảnh báo người dùng khi họ đứng gần (phạm vi bán kính 200m) một

địa điểm xác định trước;

o Dẫn đường người dùng với các bản tin chỉ dẫn bằng văn bản;

Page 5: Bao Cao Lap Trinh Android

5

o Dẫn đường người dùng bằng các lời nhắc âm thanh;

o Hiển thị thông tin thời tiết tại địa điểm muốn đến

2. Các chức năng

Hiển thị Google Maps

Hiển thị vị trí người dùng trên Google Maps

Mô tả: Khi thiết bị nhận được tín hiệu GPS, chương trình sẽ tự

động hiển thị vị trí của thiết bị trên bản đồ.

Cảnh báo người dùng khi họ đứng gần (phạm vi bán kính 200m) một địa

điểm xác định

Mô tả: Ban đầu người dùng click vào một vị trí bất kỳ trên bản đồ

(vị trí đích cần đến). Sau đó nhấn vào menu “Địa điểm” để lưu lại

vị trí đích. Khi thiết bị nằm trong bán kính vị trí đích 200m,

chương trình sẽ hiển thị thông tin nhắc nhở người dùng.

Dẫn đường người dùng với các bản tin chỉ dẫn bằng văn bản

Mô tả: Người dùng click vào menu “Tìm đường”, nhập địa chỉ

nguồn và địa chỉ đích. Sau đó click button “OK”, chương trình sẽ

hiển thị đường đi giữa 2 vị trí và văn bản chỉ dẫn người dùng.

Dẫn đường người dùng bằng các lời nhắc âm thanh.

Mô tả: Ban đầu người dùng click vào một vị trí bất kỳ trên bản đồ

(vị trí đích cần đến). Sau đó nhấn vào menu “Địa điểm” để lưu lại

vị trí đích. Sau đó khi click vào menu “Voice Routing” thiết bị sẽ

hiển thị lời nhắc bằng văn bản và bằng âm thanh cho người dùng.

Hiển thị thông tin thời tiết tại địa điểm muốn đến

Mô tả: Khi người dùng click vào một vị trí bất kỳ trên bản đồ, sau

đó nhấn menu “Thời tiết” chương trình sẽ hiển thị thông tin thời

tiết tại nơi muốn đến. Thông tin gồm hình ảnh, địa điểm, thời gian

hiện tại, nhiệt độ và thời tiết cụ thể. Ngoài ra còn có thêm chức

năng xem thông tin thời tiết cụ thể khi người dùng truy cập vào

địa chỉ cung cấp thông qua button “More”.

Page 6: Bao Cao Lap Trinh Android

6

3. Cấu trúc chương trình

Chương trình chạy trên hệ điều hành Android phiên bản Android Google

API 4.1.2

Class MapsActivity: Class chính với các chức năng thực hiện các nhiệm

vụ: tạo các chức năng cho chương trình, cập nhật vị trí, tạo cơ sở dữ liệu

nếu chưa tồn tại, ..

Class InfoRouting: lấy thông tin định tuyến từ file xml: danh danh vị trí,

và chỉ dẫn

Class WeatherForecast: lấy thông tin thời tiết từ file xml

Class WeatherHelper: tạo, truy vấn cơ sở dữ liệu về thời tiết.

III. Cài đặt chương trình

1. Hiển thị MapView

Để hiển thị được Google Maps trong ứng dụng trước hết cần phải đăng kí 1

key miễn phí từ Google Maps API , rồi sử dụng mapview để hiển thị .

Tạo file xml có chứa MapView

<com.google.android.maps.MapView android:id="@+id/mvMain" android:layout_width="fill_parent" android:layout_height="fill_parent" android:apiKey="02qRkLmrjmMkRpapZNpr0E_FzOesmyBtaBhdu8A" android:enabled="true" android:clickable="true" />

Tạo Activity

Activity muốn hiển thị được Google Maps cần phải extends MapActivity và

override phương thức isRouteDisplayed().

Page 7: Bao Cao Lap Trinh Android

7

2. Hiển thị người dùng trên bản đồ số

Để hiển thị vị trí người sử dụng trên bản đồ , class Activity chính phải

implements interface LocationListener và cài đặt một số phương thức khác :

onLocationChanged(Location l) : Phương thức này được gọi mỗi khi vị

trí của người sử dụng thay đổi (tọa độ mà GPS nhận được thay đổi). Ở

phương thức này sẽ xác định kinh độ , vĩ độ của vị trí hiện tại và vẽ lại

hình ảnh (OverlayItem)

onProviderDisabled(String provider)

onProviderEnabled(String provider)

onStatusChanged(String provider, int status, Bundle extras)

Để xác định kinh độ , vĩ độ hiện tại sử dụng :

public void onLocationChanged(Location location)

{

pointGPS = new GeoPoint((int)(location.getLatitude() *

1E6), (int)(location.getLongitude() * 1E6));

}

Để hiển thị vị trí ta thêm hình ảnh vị trí trên Google Maps chúng ta sẽ thêm

item vào overlay của Maps. Trước tạo một lớp mới MyOverlay kế thừa Overlay

Trong phương thức draw ta thêm dòng lệnh sau:

Point screenPts = new Point();

mapView.getProjection().toPixels(pointGPS, screenPts);

//---add the marker---

Bitmap bmpOri = BitmapFactory.decodeResource(

getResources(), R.drawable.notify_icon);

canvas.drawBitmap(bmpOri, screenPts.x-16, screenPts.y-32,

null);

3. Cảnh bảo người dùng trước một địa điểm xác định

Để cảnh báo cho người dùng thì trước tiên phải cập nhật vị trí người dùng

public void onLocationChanged(Location location) {

int lat = (int) (location.getLatitude() * 1E6);

int lng = (int) (location.getLongitude() * 1E6);

GeoPoint point = new GeoPoint(lat, lng);

createMarker();

mapController.animateTo(point);

mapController.setCenter(point);

Page 8: Bao Cao Lap Trinh Android

8

}

Lấy địa chỉ điểm cần đến và tính khoảng cách với vị trí hiện tại và tính. Khoảng

cách 2 điểm cho tới khi cách vị trí cần tới 200m thì đưa ra thông báo

if(pointGoal != null) {

float[] distance = new float[2];

double startLat = pointGPS.getLatitudeE6() / 1.0E6;

double startLon = pointGPS.getLongitudeE6()/ 1.0E6;

double endLat = pointGoal.getLatitudeE6() / 1.0E6;

double endLon = pointGoal.getLongitudeE6() / 1.0E6;

Location.distanceBetween(startLat, startLon, endLat,

endLon, distance);

if(distance[0] <= 200.0)

{

Toast.makeText(MapsActivity.this, "Bạn cách đích " +

(int)distance[0] + " mét.", Toast.LENGTH_LONG).show();

}

}

Để thực hiện việc cảnh báo người dùng, trước tên cần lựa chọn 1 vị trí sẽ đến, vị trí

đó được lưu vào biến pointGoal

4. Dẫn đường người dùng

Từ vị trí của điểm nguồn có kinh độ , vĩ độ là x1,y1 , cần xác định chỉ dẫn tới

điểm đích có kinh độ , vĩ độ là x2, y2 .

Để xác định ta phân tích file xml tải về từ url :

http://maps.googleapis.com/maps/api/directions/xml?origin=x1,y1&de

stination=x2,y2&sensor=false&units=metric"

Trong đó:

origin = địa chỉ nguồn. . Sử dụng tham số này khi yêu cầu dẫn đường lái

xe. Khi phát triển trên nền tảng di động, để sử dụng MyLocatiion (tọa độ

GPS) ta thiết lập saddr trống “” đối với Android, đối với iPhone, thiết lập

saddr là “Current%20Location”.

destination = địa chỉ đích. Sử dụng khi yêu cầu thông tin dẫn đường.

language = ngôn ngữ hiển thị trong file xml

Page 9: Bao Cao Lap Trinh Android

9

Cấu trúc của file như sau :

<DirectionsResponse> <status></status> <route> <summary></summary> <leg> <step> <travel_mode></travel_mode> <start_location></start_location> <end_location></end_location> <polyline><points></points></polyline> <duration><value></value><text></text></duration> <html_instructions></html_instructions> <distance><value></value><text></text></distance> </step> <step></step> … <duration></duration> <distance></distance> <start_location></start_location> <end_location></endlocation> <start_address></start_address> <end_address></endress> .. </route> </DirectionsResponse>

File xml trên chứa các thông tin dẫn đường từ 2 điểm cho trước .

Trong các node <step> chứa các chỉ dẫn cụ thể về địa điểm tiếp theo cần tới.

Node <duration> chứa thời gian cần đi , tính theo vận tốc trung bình của các

phương tiện.

Node <distance> chứa khoảng cách tình theo đường bộ cần phải di chuyển

Node <start_location> và <end_location> chứa kinh độ , vĩ độ của địa điểm

bắt đầu và địa điểm kết thúc .

Node <start_address> và <end_address> là địa chỉ của 2 địa điểm .

Trong chương trình có 2 loại chỉ dẫn cho người dùng :

a. Chỉ đường bằng các chỉ dẫn văn bản :

Mục tiêu

Lấy tọa độ điềm bắt đầu và đích đến của người dùng. Sau đó vẽ một

LinePath giữa 2 điểm.Hướng dẫn chi tiết cách đi bằng văn bản cho người

dùng.

Page 10: Bao Cao Lap Trinh Android

10

Vẽ đường

Xây dựng lớp InfoRouting đọc file xml để lấy được các thông tin về các

Node của lộ trình.

class InfoRouting{

//chứa các node của lộ trình

private ArrayList<String> listInstructions = new ArrayList<String>();

private void getDirections(){

nl3 = doc.getElementsByTagName("html_instructions");

for (int i = 0; i < nl3.getLength(); i++) { Node node3 = nl3.item(i); String strInstru = Html.fromHtml(node3.getTextContent()).toString(); listInstructions.add(strInstru); }

}

}

Sau khi có các Node lộ trình gọi lớp MyOverlays để vẽ.

public class MyOverlay extends Overlay {

@Override public boolean draw(Canvas canvas, MapView mv, boolean shadow, long when) { super.draw(canvas, mv, shadow); . . . . . . . . . . . . . . . . . . . . . . }

Page 11: Bao Cao Lap Trinh Android

11

public void drawPath(MapView mv, Canvas canvas) {

. . . . . . . . . . . . . }

}

Để hiển thị chỉ dẫn lộ trình cho người dùng

Xây dụng lớp showInstructionsDialog():lớp này đọc các thông tin tại các

Node trong lớp Inforouting để hiện thị lên màn hình.

public void showInstructionsDialog() { final View view = getLayoutInflater().inflate(R.layout.instructions, null); TextView textView = (TextView)view.findViewById(R.id.viewInstru); -------- --------- }

b. Chỉ đường bằng lời nhắc âm thanh

Giá trị cần lấy nằm trong node <html_instructions>. Giá trị này có định dạng

html chỉ rõ hướng đi tới địa điểm kế tiếp . Ví dụ :

Đi về hướng <b>Tây</b> lên <b>Tạ Quang Bửu</b> về phía <b>Nôi bô Bách Khoa</b>

Để lấy được dữ liệu này trước hết khởi tạo kết nối Http đến url phía trên và

lấy dữ liệu về InputStream :

HttpClient httpClient = new DefaultHttpClient();

HttpContext localContext = new BasicHttpContext();

HttpPost httpPost = new HttpPost(url);

response = httpClient.execute(httpPost, localContext);

InputStream in = response.getEntity().getContent();

Sau đó dùng DocumentBuilder để phân tích :

DocumentBuilder builder = DocumentBuilderFactory.newInstance().newDocumentBuilder();

Document doc = builder.parse(in);

Lấy về nội dung node <html_instructions> đầu tiên .

NodeList nl;

nl = doc.getElementsByTagName("html_instructions");

Node node = nl.item(0);

nextDirection = node.getTextContent();

Page 12: Bao Cao Lap Trinh Android

12

Loại bỏ các tag html trong chuỗi đã lấy được :

nextDirection = Html.fromHtml(nextDirection).toString();

Chuỗi kí tự vừa lấy sẽ được sử dụng để phát ra âm thanh chỉ dẫn đường .

Phát âm kí tự chỉ dẫn

Sử dụng package : android.speech.tts.TextToSpeech.

Để sử dụng gói này trước hết class phải implements giao diện OnInitListener và cài

đặt phương thức onInit(int status)

Khai báo biến :

private TextToSpeech tts; và khởi tạo trong hàm onCreate

tts = new TextToSpeech(this, this);

Phương thức onInit kiểm tra trạng thái TextToSpeech và thiết lập ngôn ngữ (US) ,

nếu có lỗi thì ghi vào file log.

public void onInit(int status) {

if(status == TextToSpeech.SUCCESS) {

int result = tts.setLanguage(Locale.US);

if(result == TextToSpeech.LANG_MISSING_DATA || result == TextToSpeech.LANG_NOT_SUPPORTED) {

Log.e("TTS","This Languge is not supported");

}

}

}

Khi người dùng chọn phát chỉ dẫn bằng âm thanh (từ menu) chuỗi kí tự chỉ dẫn sẽ

được lấy về và phát thành tiếng :

nextMove = getNextDirection(src_lat, src_long, dest_lat, dest_long);

tts.speak(nextMove, TextToSpeech.QUEUE_FLUSH, null);

Để đảm bảo đối tượng TextToSpeech được tắt ở phương thức onDestroy() :

protected void onDestroy() {

if(tts != null) {

tts.stop();

tts.shutdown();

Page 13: Bao Cao Lap Trinh Android

13

}

super.onDestroy();

}

5. Hiển thị thông tin thời tiết

Sử dụng thông tin thời tiết do wunderground.com cung cấp. Từ vị trí địa

điểm cần biết thông tin thời tiết có kinh độ, vĩ độ x, y. Để xác định ta phân tích file

xml tải vệ từ URL:

http://api.wunderground.com/auto/wui/geo/WXCurrentObXML/index.xml?query=x,y

Trong đó:

query = x, y: kinh độ, vĩ độ địa chỉ cần biết thông tin thời tiết

Cấu trúc chính của file như sau:

<current_observation>

<display_location> <full> </full>

</display_location> .... <local_time> </local_time> <weather> </weather> <temp_c></temp_c> .... <forecast_url> </forecast_url> .... </current_observation>

Cấu trúc trên mô tả các thông tin cần thiết để hiển thị

Trong đó

node <full> </full> chứa thông tin về thành phố có vị trí đã cho

<local_time> chứa thông tin về thời gian hiện tại

<weather> chứa thông tin thời tiết cần hiển thị

<temp_c> nhiệt độ theo độ C

<forecast_url> đường dẫn chứa thông tin thời tiết chi tiết

Page 14: Bao Cao Lap Trinh Android

14

Class WeatherForecast nhận thông số khởi tạo là cơ sở dữ liệu về thời tiết và vị

trí kinh độ vĩ độ địa điểm cần hiển thị.

Để lấy được dữ liệu trước tiên ta phải kết nối với url đã cho:

HttpGet getMethod = new HttpGet(url);

ResponseHandler<String> responseHandle = new

BasicResponseHandler();

String responseBody = client.execute(getMethod,

responseHandle);

buildForecast(responseBody);

Phương thức buildForcast(String raw) nhận đầu vào là String responseBody

sẽ đọc thông tin thời tiết từ file xml đã tải về.

DocumentBuilder builder =

DocumentBuilderFactory.newInstance().newDocumentBuilder();

Document doc = builder.parse(new InputSource(new

StringReader(raw)));

Thông tin về thành phố được lưu trữ trong thuộc tính city

Element disLocation = (Element)

doc.getElementsByTagName("display_location").item(0);

Element city = (Element)

disLocation.getElementsByTagName("full").item(0);

this.setCity(city.getFirstChild().getNodeValue());

Thông tin về thời gian được lưu trữ trong thuộc tính time

Element localTime = (Element)

doc.getElementsByTagName("local_time").item(0);

String strTime = localTime.getFirstChild().getNodeValue();

strTime = strTime.substring(0, strTime.indexOf(","));

this.setTime(strTime);

Thông tin về thời tiết được lưu trữ trong thuộc tính weather

Element weather = (Element)

doc.getElementsByTagName("weather").item(0);

String strWeather = weather.getFirstChild().getNodeValue();

Cursor c = helper.getType(strWeather);

if(c.getCount() > 0)

{

c.moveToFirst();

this.setWeather("Thời tiết: " + helper.getTypeVN(c));

this.setIconUrl(helper.getIcon(c));

Page 15: Bao Cao Lap Trinh Android

15

}

else

{

this.setWeather("Thời tiết: " + strWeather);

this.setIconUrl("unknown");

}

Ở đây thông tin thời tiết là tiếng anh nên sẽ được hiển thị tiếng việt thông

qua tham chiếu từ cơ sở dữ liệu có sẵn. Icon thời tiết cũng được truy vấn từ CSDL

thông qua biến thời tiết.

Thông tin về nhiệt độ

Element temperature = (Element)

doc.getElementsByTagName("temp_c").item(0);

this.setTemperature("Nhiệt độ: " +

temperature.getFirstChild().getNodeValue() + " độ C");

Page 16: Bao Cao Lap Trinh Android

16

Class WeatherHelper có chức năng tạo cơ sở dữ liệu và các phương thức truy

vấn tới CSDL

Tạo bảng types chứa các thông tin: xâu thời tiết bằng tiếng anh, tiếng việt và

icon tương ứng

db.execSQL("CREATE TABLE if not exists types" +

"(_id INTEGER PRIMARY KEY AUTOINCREMENT, english TEXT,

vietnam TEXT, icon TEXT);");

Truy vấn chuỗi tiếng việt, icon tương ứng với chuỗi tiếng anh

public Cursor getType(String strEnglish)

{

return (

db.rawQuery("SELECT vietnam, icon FROM types WHERE

english = \"" + strEnglish + "\"", null)

);

}

Lấy chuỗi tiếng việt từ truy vấn

public String getTypeVN(Cursor c)

{

return (c.getString(0));

}

Lấy chuỗi icon từ truy vấn

public String getIcon(Cursor c)

{

return (c.getString(1));

}

Page 17: Bao Cao Lap Trinh Android

17

IV. Minh họa kết quả

Hiển thị vị trí người dùng

Cảnh báo người dùng

Để cảnh báo người dùng trước tiên phải chọn vị trí cần đến trên bản đồ:

Chọn 1 vị trí và click vào menu “Điểm đến” để lưu vị trí.

Điểm đến là Hồ Tiền – ĐHBKHN (21.004364,105.843378), vị trí hiện tại

trên đường Tạ Quang Bửu ĐHBKHN (21.005105,105.843077):

Page 18: Bao Cao Lap Trinh Android

18

Dẫn đường người dùng bằng văn bản

Khi click vào menu “Tìm đường” sẽ hiện ra 2 lựa chọn cho người dùng. Khi

click button “OK” chương trình sẽ hiển thị thông tin chỉ dẫn

o Chọn 2 vị trí trên bản đồ: Chương trình sẽ hiển thị thông tin dẫn

đường giữa 2 địa điểm đã được chọn trên bản đồ (Chương trình cho

phép người dùng lựa chọn tối đã 2 vị trí, khi chọn mỗi vị trí người

dùng click vào menu “Điểm đến” để lưu lại.

o Nhập 2 địa điểm: Người dùng nhập điểm đầu vào điểm cuối

Dẫn đường người dùng vào âm thanh

Để dẫn đường người dùng trước tiên phải chọn vị trí cần đến trên bản đồ:

Chọn 1 vị trí và click vào menu “Điểm đến” để lưu vị trí. Sau đó click vào

menu “Voice Routing” để nghe thông tin chỉ dẫn

Hiển thị thông tin thời tiết

Khi click vào menu “Thời tiết” sẽ có 3 lựa chọn cho người dùng. Khi click

vào button “OK” chương trình sẽ hiển thị thông tin thời tiết tại vị trí đã chọn

o Vị trí của bạn: Chương trình sẽ hiển thị thông tin thời tiết tại vị trí

người dùng đang đứng

o Vị trí đã chọn: Chương trình sẽ hiển thị thông tin thời tiết tại vị trí

người dùng chọn trên bản đồ

o Nhập địa điểm: Chương trình sẽ hiển thị thông tin thời tiết tại vị trí

người dùng nhập vào

Page 19: Bao Cao Lap Trinh Android

19

Khi thông tin thời tiết đã hiển thị, có 2 lựa chọn cho người dùng: Button “Close” sẽ

đóng cửa sổ hiển thị; Button “More” cho phép truy nhập tới trang web chứa thông

tin thời tiết chi tiết về địa điểm đã lựa chọn.

Page 20: Bao Cao Lap Trinh Android

20

V. KẾT LUẬN

Thông qua việc nghiên cứu và thực hiện bài tập lớn chúng em đã thu được

nhiều kiến thức thực tế, đồng thời bổ sung thêm những kinh nghiệm quý báu cho

công việc sau này. Do thời gian có hạn nên báo cáo không thể tránh khỏi những sai

sót, rất mong được thầy góp ý bổ sung giúp chúng em hoàn chỉnh đề tài này.

Page 21: Bao Cao Lap Trinh Android

21

TÀI LIỆU THAM KHẢO

1. Slide bài giảng của thầy Nguyễn Hồng Quang

2. http://vietshare.vn/500/71/Android-Google-Maps-Tutorial--Phan-3.aspx

3. http://mobiforge.com/developing/story/using-google-maps-android

4. http://developer.android.com/reference/packages.html

5. https://www.box.net/shared/lc35mai44k73c8grvi1l

©[email protected]