期末專題報告 MyPosition - 我在何處報你知 組員:曾哲浩 蔡承翰 指導老師:陳朝鈞.

Slides:



Advertisements
Similar presentations
单元二:面向对象程序设计 任务二:借书卡程序设计.
Advertisements

3.2 Java的类 Java 类库的概念 语言规则——程序的书写规范 Java语言 类库——已有的有特定功能的Java程序模块
第一單元 建立java 程式.
MVC Servlet与MVC设计模式.
實驗五:多媒體播放器選單介面.
Part 2 開發Android應用程式的流程
位置與地圖應用 此投影片為講解Android如何取得定位經緯度和使用Google Map地圖.
设计模式可以帮助我们改善系统的设计,增强 系统的健壮性、可扩展性,为以后铺平道路。
第二章 JAVA语言基础.
類別與物件 Class & Object.
AOP实践 演讲人:陈思荣.
Android + Web Service 建國科技大學 資管系 饒瑞佶 2017/3 V1.
ArrayAdapter & Spinner
建立Android新專案 建國科技大學 資管系 饒瑞佶 2010/10.
厦门大学数据库实验室 报告人:谢荣东 导师:林子雨 2014年8月30日
Lab4.BMI計算.
Chapter 13 Android 實戰演練.
Android + JUnit 單元測試 建國科技大學資管系 饒瑞佶 2012/8/19V4.
實驗十三:顯示目前經緯度位置.
Signutil.
Ch06 再談選單元件 物件導向系統實務.
第四章 在 C# 中实现 OOP 概念.
Android資料庫處理 Android智慧型手機程式設計 程式設計與應用班 建國科技大學 資管系 饒瑞佶 2012/4 V1
第11章 Android GPS位置服务与地图编程
第9章 位置服务与地图应用.
Chapter 6 Advanced UI Design.
Android智慧型手機程式設計實務應用班
Chapter 7 Android應用元件 Android應用元件可以幫助我們獲得系統資源訊息(ActivityManager)、提供系統服務(Service)、搜尋系統服務(SearchManager)、監聽Intent訊息(Broadcast Receiver)以及資料共享(ContentProvider和ContentResolver)。
Android介面設計 Android智慧型手機程式設計 建國科技大學 資管系 饒瑞佶 2012/4 V1 2012/8 V2
本單元介紹何謂變數,及說明變數的宣告方式。
Chapter 6 進階UI設計.
第9章 使用意圖啟動活動與內建應用程式 9-1 意圖的基礎 9-2 使用意圖啟動活動
程式設計實作.
授课老师:龚涛 信息科学与技术学院 2018年3月 教材: 《Visual C++程序员成长攻略》 《C++ Builder程序员成长攻略》
Android + Service 建國科技大學 資管系 饒瑞佶.
Android 基礎.
實驗十四:顯示與控制地圖.
Java程序设计 第9章 继承和多态.
RecyclerView and CardView
建立Android新專案 Android智慧型手機程式設計 程式設計與應用班 建國科技大學 資管系 饒瑞佶 2012/4 V1
Ch02-基礎語法.
第10章 GPS位置服务与地图编程.
第一單元 建立java 程式.
* 單元:電腦與問題解決 主題:Java物件導向程式設計-類別與物件 台南縣國立善化高中 蕭嘉民 老師
實驗十一:待辦事項程式 (儲存在手機上).
主编:钟元生 赵圣鲁.
软件测试 (四)静态测试与动态测试.
Chapter 5 Basic UI Design.
Android視窗介面 建國科技大學 資管系 饒瑞佶 2010/10.
實驗九:延續實驗八, 製作一個完整音樂播放器
Location Based Services - LBS
補間動畫 (Tween Animation) 靜宜大學資管系 楊子青
選單.
第二章 Java语法基础.
Android視窗介面 建國科技大學 資管系 饒瑞佶 2010/10.
Review 1~3.
#include <iostream.h>
第二章 Java基本语法 讲师:复凡.
進階UI元件:ListView元件以及複選 靜宜大學資管系 楊子青
RecyclerView and CardView
硬幣遊戲解題詳解 王豐緒 銘傳大學資訊工程學系.
第6單元 6-1 類別的繼承 (Class Inheritance) 6-2 抽象類別 (Abstract Class)
Android Speech To Text(STT)
Activity的生命週期: 播放音樂與影片 靜宜大學資管系 楊子青
JAVA 程式設計與資料結構 第三章 物件的設計.
第2章 Java语言基础.
東吳大學『樂齡大學』 外雙溪環境與生態 產業 黃顯宗 東吳大學 微生物學系 101.
加速感測器 靜宜大學資管系 楊子青.
第二章 Java基础语法 北京传智播客教育
Part 8 Broadcast Receiver、Service和App Widget
Presentation transcript:

期末專題報告 MyPosition - 我在何處報你知 組員:曾哲浩 蔡承翰 指導老師:陳朝鈞

GPS GOOGLE地圖

protected void onCreate(Bundle icicle) { // TODO Auto-generated method stub super.onCreate(icicle); setContentView(R.layout.main); mTextView01 = (TextView)findViewById(R.id.myTextView1); /* 建立MapView物件 */ mMapView01 = (MapView)findViewById(R.id.myMapView1); /* 建立LocationManager物件取得系統LOCATION服務 */ mLocationManager01 = (LocationManager)getSystemService(Context.LOCATION_SERVICE); /* 第一次執行向Location Provider取得Location */ mLocation01 = getLocationPrivider(mLocationManager01); if(mLocation01!=null) processLocationUpdated(mLocation01); } else mTextView01.setText ( getResources().getText(R.string.str_err_location).toString() );

/* 建立LocationManager物件,監聽Location變更時事件,更新MapView */ mLocationManager01.requestLocationUpdates(strLocationPrivider, 2000, 10, mLocationListener01); } public final LocationListener mLocationListener01 = new LocationListener() { @Override public void onLocationChanged(Location location) // TODO Auto-generated method stub /* 當手機收到位置變更時,將location傳入取得地理座標 */ processLocationUpdated(location); public void onProviderDisabled(String provider) /* 當Provider已離開服務範圍時 */

@Override public void onProviderEnabled(String provider) { // TODO Auto-generated method stub } public void onStatusChanged(String provider, int status, Bundle extras) {} }; public String getAddressbyGeoPoint(GeoPoint gp) String strReturn = ""; try /* 當GeoPoint不等於null */ if (gp != null) /* 建立Geocoder物件 */ Geocoder gc = new Geocoder(EX09_05.this, Locale.getDefault()); /* 取出地理座標經緯度 */ double geoLatitude = (int)gp.getLatitudeE6()/1E6; double geoLongitude = (int)gp.getLongitudeE6()/1E6;

/* 自經緯度取得地址(可能有多行地址) */ List<Address> lstAddress = gc.getFromLocation(geoLatitude, geoLongitude, 1); StringBuilder sb = new StringBuilder(); /* 判斷地址是否為多行 */ if (lstAddress.size() > 0) { Address adsLocation = lstAddress.get(0); for (int i = 0; i < adsLocation.getMaxAddressLineIndex(); i++) sb.append(adsLocation.getAddressLine(i)).append("\n"); } sb.append(adsLocation.getLocality()).append("\n"); sb.append(adsLocation.getPostalCode()).append("\n"); sb.append(adsLocation.getCountryName()); /* 將擷取到的地址,組合後放在StringBuilder物件中輸出用 */ strReturn = sb.toString();

catch(Exception e) { e.printStackTrace(); } return strReturn; public Location getLocationPrivider(LocationManager lm) Location retLocation = null; try Criteria mCriteria01 = new Criteria(); mCriteria01.setAccuracy(Criteria.ACCURACY_FINE); mCriteria01.setAltitudeRequired(false); mCriteria01.setBearingRequired(false); mCriteria01.setCostAllowed(true); mCriteria01.setPowerRequirement(Criteria.POWER_LOW); strLocationPrivider = lm.getBestProvider(mCriteria01, true); retLocation = lm.getLastKnownLocation(strLocationPrivider);

catch(Exception e) { mTextView01.setText(e.toString()); e.printStackTrace(); } return retLocation; private GeoPoint getGeoByLocation(Location location) GeoPoint gp = null; try { /* 當Location存在 */ if (location != null) double geoLatitude = location.getLatitude()*1E6; double geoLongitude = location.getLongitude()*1E6; gp = new GeoPoint((int) geoLatitude, (int) geoLongitude); }return gp;}

public static void refreshMapViewByGeoPoint(GeoPoint gp, MapView mv, int zoomLevel, boolean bIfSatellite) { try { mv.displayZoomControls(true); /* 取得MapView的MapController */ MapController mc = mv.getController(); /* 移至該地理座標位址 */ mc.animateTo(gp); /* 放大地圖層級 */ mc.setZoom(zoomLevel); /* 延伸學習:取得MapView的最大放大層級 */ //mv.getMaxZoomLevel() /* 設定MapView的顯示選項(衛星、街道)*/ if(bIfSatellite) {mv.setSatellite(true); mv.setStreetView(true); } else {mv.setSatellite(false); } } catch(Exception e) {e.printStackTrace();

/* 當手機收到位置變更時,將location傳入更新當下GeoPoint及MapView */ private void processLocationUpdated(Location location) { /* 傳入Location物件,取得GeoPoint地理座標 */ currentGeoPoint = getGeoByLocation(location); /* 更新MapView顯示Google Map */ refreshMapViewByGeoPoint(currentGeoPoint, mMapView01, intZoomLevel, true); mTextView01.setText (getResources().getText(R.string.str_my_location).toString()+"\n"+ /* 延伸學習:取出GPS地理座標: */ getResources().getText(R.string.str_longitude).toString()+ String.valueOf((int)currentGeoPoint.getLongitudeE6()/1E6)+"\n"+ getResources().getText(R.string.str_latitude).toString()+ String.valueOf((int)currentGeoPoint.getLatitudeE6()/1E6)+"\n"+ getAddressbyGeoPoint(currentGeoPoint) ); } @Override protected boolean isRouteDisplayed() { // TODO Auto-generated method stub return false;

LAYOUT_main.xml <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:background="@drawable/white" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent"> <TextView android:id="@+id/myTextView1" android:layout_height="wrap_content" android:textColor="@drawable/blue" android:text="@string/hello"/> <com.google.android.maps.MapView android:id="@+id/myMapView1" android:layout_height="fill_parent" android:enabled="true" android:clickable="true" android:apiKey="086L9PGjlb6XQprGQVXCe1NvaXl6NJC5g0fh4Aw" /> </LinearLayout>

Color.xml Strings.xml <?xml version="1.0" encoding="utf-8"?> <resources> <drawable name="darkgray">#808080</drawable> <drawable name="white">#FFFFFF</drawable> <drawable name="blue">#0000FF</drawable> </resources> <?xml version="1.0" encoding="utf-8"?> <resources> <string name="hello">Hello World, EX09_05</string> <string name="app_name">EX09_05</string> <string name="str_longitude">經度(Longitude):</string> <string name="str_latitude">緯度(Latitude):</string> <string name="str_err_address">地址不存在</string> <string name="str_err_location">無法取得Location</string> <string name="str_my_location">目前所在地址:</string> </resources>

曾經遇到跟別人在電話裡怎麼說,都說不清楚自己的確切位置嗎?

是一款結合Google Maps來定位出目前手機的位置,並且轉換成各種資訊分享出去的小程式。

除了利用GPS、Wi-Fi或是基地台定位出目前位置,還能直接在地圖上畫出路徑,方便告知對方怎麼到達。可以擷圖存檔,並且用簡訊或是其他方式分享。

如果是透過簡訊,可以選擇發送Google Maps或者圖檔的連結。

若是上傳圖檔,會告知將要上傳一些隱私資料到伺服器,不過24小時內就會刪除,而且資料也不會移作他途。

這是用簡訊分享Google Maps連結的畫面。

Q&A