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 Nôi 11/2012
MỤC LỤC
I.
........................................ ........................... ........................... ........................... .......................... .................. ..... 3 Cơ sở lý thuyết .......................... 1.
Giớ i thiệu chung .......................... ....................................... .......................... ........................... ........................... .......................... ............... 3
2.
Các tham s ố truy cập Google Maps ......................... ....................................... ........................... ......................... ............ 3
....................................... ....................... ......... 4 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 .......................... ....................................... ........................... ........................... ........................... ....................... ......... 4
2.
Các chức năng .......................... ........................................ ........................... ........................... ........................... .......................... ................ ... 5
3.
Cấu trúc chương trình .......................... ........................................ ........................... ........................... ........................... .................. ..... 6
III.
....................................... ........................... ........................... ........................... .................. ..... 6 Cài đặt chương trình .........................
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
........................................ .......................... ........................... ........................... ......................... ............ 17 IV. Minh họa kết quả ........................... ........................................ .......................... ........................... ........................... ........................... ..................... ....... 20 V. KẾT LUẬN ........................... ...................................... ........................... ........................... ........................... ..................... ....... 21 TÀI LIỆU THAM KHẢO.........................
2
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 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 Ma ps,
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ị
3
Geocoding Request
http://maps.googleapis.com/maps/api/geocode/output parameters ? 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; 4
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 trí bất kỳ trên bản đồ (vị trí đích cần đến). Sau đó nhấn vào menu “ Địa “ Địa điểm” đ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 “ 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 “ Địa điểm” đ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 “ 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”.
5
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
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().
6
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 onLocationChanged( (Location location) { pointGPS = new GeoPoint GeoPoint(( ((int int)(location. )(location.getLatitude getLatitude() () * 1E6), (int int)(location. )(location.getLongitude 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 Point(); (); mapView. mapView .getProjection getProjection().toPixels( ().toPixels(pointGPS pointGPS, , screenPts screenPts); ); //---add the marker--Bitmap bmpOri = BitmapFactory BitmapFactory. .decodeResource( getResources(), getResources (), R.drawable drawable. .notify_icon notify_icon); ); canvas.drawBitmap canvas.drawBitmap( (bmpOri bmpOri, , screenPts. screenPts .x-16, screenPts. screenPts .y-32, null); 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); 7
}
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 if( null) ) { float[] float [] distance = new float float[2]; [2]; double startLat = pointGPS pointGPS. .getLatitudeE6 getLatitudeE6() () / 1.0E6; double startLon = pointGPS pointGPS. .getLongitudeE6 getLongitudeE6()/ ()/ 1.0E6; double endLat = pointGoal pointGoal. .getLatitudeE6 getLatitudeE6() () / 1.0E6; double endLon = pointGoal pointGoal. .getLongitudeE6 getLongitudeE6() () / 1.0E6; Location. Location .distanceBetween(startLat startLat, , startLon startLon, , endLat endLat, , endLon, endLon , distance distance); ); if(distance if( distance[0] [0] <= 200.0) { Toast. Toast .makeText(MapsActivity MapsActivity. .this this, , "Bạn cách đích " + (int int) )distance distance[0] [0] + " mét.", mét.", Toast Toast. .LENGTH_LONG LENGTH_LONG). ).show 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" 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 8
Cấu trúc của file như sau :
… ..
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
chứa các chỉ dẫn cụ thể về địa điểm tiếp theo cần tới. Node chứa thời gian gi an cần đi , tính theo vận tốc trung bình bì nh của các phương tiện. Node
chứa khoảng cách tình theo đường bộ cần phải di chuyển
Node và chứa kinh ki nh độ , vĩ độ của địa đ ịa điểm điể m bắt đầu và địa điểm kết thúc . Node và 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.
9
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 ArrayList listInstructions listInstructions = new ArrayList(); ArrayList(); private void getDirections(){ getDirections(){ nl3 = doc.getElementsByTagName("htm doc.getElementsByTagName("html_instruction l_instructions"); s"); for (int i = 0; i < nl3.getLength(); i++) { Node node3 = nl3.item(i); String strInstru = Html.fromHtml(node Html.fromHtml(node3.getTextContent 3.getTextContent()).toString( ()).toString(); ); listInstructions.add(strInstru); listInstructions .add(strInstru); }
} }
Sau khi có các Node lộ trình gọi lớp MyOverlays để vẽ. public class MyOverlay MyOverlay extends Overlay Overlay { @Override public boolean draw(Canvas canvas, MapView mv, boolean shadow, long when) { super.draw(canvas, mv, shadow); . . . . . . . . . . . . . . . . . . . . . . }
10
public void drawPath(MapView drawPath(MapView mv, Canvas 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()
{ getLayoutInflater().inflate(R.layout. R.layout. instructions, final View view = getLayoutInflater().inflate( null);
TextView textView = (TextView)view.findViewById (TextView)view.findViewById(R.id. (R.id. viewInstru ); ----------------
}
b. Chỉ đường bằng lời nhắc âm thanh Giá trị cần lấy nằm trong node . 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 Tây Tây lên Tạ Quang Quang Bửu về phía Nôi Nôi bô Bách Khoa Khoa
Để 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, httpClient.execute(httpPost, localContext); InputStream in = response.getEntity().getContent( response.getEntity().getContent(); );
Sau đó dùng DocumentBuilder để phân tích : DocumentBuilder builder = DocumentBuilderFactory. newInstance().newDocumentBuilder(); Document doc = builder.parse(in); builder.parse(in);
Lấy về nội dung node đầu tiên . NodeList nl; nl = doc.getElementsByTagName( doc.getElementsByTagName( "html_instructions" "html_instructions"); ); Node node = nl.item(0); nextDirection = node.getTextContent(); node.getTextContent();
11
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 : tts; ; và khởi tạo trong hàm onCreate private TextToSpeech tts 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 tts.setLanguage(Locale. .setLanguage(Locale. US); if(result == TextToSpeech. LANG_MISSING_DATA || result == TextToSpeech. LANG_NOT_SUPPORTED) {
Log.e("TTS" "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( getNextDirection( src_lat src_lat, , src_long src_long, , dest_lat dest_lat, , dest_long dest_long); ); tts ts.speak( .speak(nextMove 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 .stop(); tts.shutdown(); tts .shutdown(); 12
} 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= http://api.wunderground.com/auto/wui/geo/WXCurren tObXML/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: .... .... ....
Cấu trúc trên mô tả các thông tin cần thiết để hiển thị Trong đó
node chứa thông tin về thành phố có vị trí đã cho
chứa thông tin về thời gian hiện tại
chứa thông tin thời tiết cần hiển thị
nhiệt độ theo độ C
đường dẫn chứa thông tin thời tiết chi tiết
13
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 HttpGet( (url url); ); ResponseHandler< ResponseHandler > responseHandle = new BasicResponseHandler(); BasicResponseHandler (); String responseBody = client client.execute( .execute(getMethod getMethod, , responseHandle); responseHandle ); buildForecast( buildForecast (responseBody 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. DocumentBuilderFactory .newInstance().newDocumentBuilder(); Document doc = builder builder.parse( .parse(new new InputSource InputSource( (new StringReader(raw))); StringReader (raw)));
Thông tin v ề thành phố được lưu trữ trong thuộc tính city
Element disLocation = (Element Element) ) doc.getElementsByTagName( doc .getElementsByTagName("display_location" "display_location").item(0); ).item(0); Element city = (Element Element) ) disLocation.getElementsByTagName( disLocation .getElementsByTagName("full" "full").item(0); ).item(0); this. this .setCity setCity( (city city.getFirstChild().getNodeValue()); .getFirstChild().getNodeValue());
Thông tin về thời gian được lưu trữ trong thuộc tính time
Element localTime = (Element Element) ) doc.getElementsByTagName( doc .getElementsByTagName("local_time" "local_time").item(0); ).item(0); String strTime = localTime localTime.getFirstChild().getNodeValue(); .getFirstChild().getNodeValue(); strTime = strTime strTime. .substring substring(0, (0, strTime strTime. .indexOf indexOf( ("," ",")); )); this. this .setTime setTime( (strTime strTime); );
Thông tin về thời tiết được lưu trữ trong thuộc tính weather
Element weather = (Element Element) ) doc.getElementsByTagName( doc .getElementsByTagName("weather" "weather").item(0); ).item(0); String strWeather = weather weather.getFirstChild().getNodeValue(); .getFirstChild().getNodeValue(); Cursor c = helper helper. .getType getType( (strWeather strWeather); ); if( if (c.getCount() > 0) { c.moveToFirst(); this. this .setWeather setWeather( ("Thời tiết: " + helper helper. .getTypeVN getTypeVN( (c)); this. this .setIconUrl setIconUrl( (helper helper. .getIcon getIcon( (c)); 14
} else { this.setWeather this. setWeather( ("Thời tiết: " + strWeather strWeather); ); this. this .setIconUrl setIconUrl( ("unknown" "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 Element) ) doc.getElementsByTagName( doc .getElementsByTagName("temp_c" "temp_c").item(0); ).item(0); this. this .setTemperature setTemperature( ("Nhiệt độ: " + temperature.getFirstChild().getNodeValue() temperature .getFirstChild().getNodeValue() + " độ C" C"); );
15
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 db.execSQL( ("CREATE TABLE if not exists types" + "(_id
INTEGER
PRIMARY
KEY
AUTOINCREMENT,
english
TEXT,
vietnam TEXT, icon TEXT);"); TEXT);" );
Truy vấn chuỗi tiếng việt, icon tương ứng vớ i chuỗi tiếng anh
public Cursor getType getType( (String strEnglish) { return ( db. db .rawQuery rawQuery( ("SELECT vietnam, icon FROM types WHERE english = \"" + strEnglish + "\"" "\"", , null null) ) ); }
Lấy chuỗi tiếng việt từ truy vấn
public String getTypeVN getTypeVN( (Cursor c) { return (c.getString(0)); } Lấy chuỗi icon từ truy vấn
public String getIcon getIcon( (Cursor c) { return (c.getString(1)); }
16
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 “ Đ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 ng Tạ Quang Bửu ĐHBKHN (21.005105,105.843077): trên đườ ng
17
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 đồ: Chương trình sẽ hiển thị thông tin dẫn o Chọn 2 vị trí trên bản đồ: ng giữa 2 địa điểm đã đượ c chọn trên b ản đồ (Chương trình cho đườ ng 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 ng người dùng trướ c tiên ph ải chọn vị trí cần đến trên b ản đồ: Để dẫn đườ ng 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 18
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.
19
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 nhiều kiến thức thực tế,
chúng em đã thu đượ c
đồng thờ i bổ sung thêm những kinh nghiệm quý báu cho
công việc sau này. 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.
20
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]
21