Android LocationManager獲取經度與緯度等地理信息
利用LocationManager實現定位功能
1 實時更新經度,緯度
2 根據經度和緯度獲取地理信息(比如:國家,街道等)(略過)
MainActivity如下:
packagecc.bb;importjava.util.Iterator;importjava.util.List;importandroid.location.Location;importandroid.location.LocationListener;importandroid.location.LocationManager;importandroid.os.Bundle;importandroid.widget.TextView;importandroid.app.Activity;importandroid.content.Context;/***Demo描述:*利用LocationManager實現定位功能*1實時更新經度,緯度*2根據經度和緯度獲取地理信息(比如:國家,街道等)(略過)***注意事項:*0在測試GPS定位時最好在較為寬廣的空間,否則影響定位*1利用mLocationManager.getLastKnownLocation(GPSProvider)獲取Location時常為null.*因為設備定位是需要一定時間的,所以把定位邏輯放在LocationManager的requestLocationUpdates()方法**2LocationManager.requestLocationUpdates*(Stringprovider,longminTime,floatminDistance,LocationListenerlistener)*第一個參數:位置信息的provider,比如GPS*第二個參數:更新位置信息的時間間隔,單位毫秒*第三個參數:更新位置信息的距離間隔,單位米*第四個參數:位置信息變化時的回調**3LocationListener中最重要的回調方法onLocationChanged()*當minTime和minDistance同時滿足時會調用該方法.文檔說明:*TheminDistanceparametercanalsobeusedtocontrolthe*frequencyoflocationupdates.Ifitisgreaterthan0thenthe*locationproviderwillonlysendyourapplicationanupdatewhen*thelocationhaschangedbyatleastminDistancemeters,AND*atleastminTimemillisecondshavepassed.*比如間隔時間(minTime)到了3秒并且移動的距離(minDistance)大于了5米*那么就會調用該方法.**4在Activity的onDestroy()時取消地理位置的更新.***權限配置:*<uses-permissionandroid:name="android.permission.ACCESS_FINE_LOCATION"/>*<uses-permissionandroid:name="android.permission.ACCESS_COARSE_LOCATION"/>*<uses-permissionandroid:name="android.permission.ACCESS_MOCK_LOCATION"/>*<uses-permissionandroid:name="android.permission.INTERNET"/>*/publicclassMainActivityextendsActivity{privateContextmContext;privateTextViewmTextView;privateLocationManagermLocationManager;privateLocationListenerImplmLocationListenerImpl;@OverrideprotectedvoidonCreate(BundlesavedInstanceState){super.onCreate(savedInstanceState);setContentView(R.layout.main);init();initLocationManager(mContext);}privatevoidinit(){mContext=this;mTextView=(TextView)findViewById(R.id.textView);}privatevoidinitLocationManager(Contextcontext){mLocationManager=(LocationManager)context.getSystemService(Context.LOCATION_SERVICE);//獲取可用的位置信息Provider.即passive,network,gps中的一個或幾個List<String>providerList=mLocationManager.getProviders(true);for(Iterator<String>iterator=providerList.iterator();iterator.hasNext();){Stringprovider=(String)iterator.next();System.out.println("provider="+provider);}//在此采用GPS的方式獲取位置信息StringGPSProvider=LocationManager.GPS_PROVIDER;Locationlocation=mLocationManager.getLastKnownLocation(GPSProvider);if(location!=null){doublelongitude=location.getLongitude();doublealtitude=location.getAltitude();System.out.println("longitude="+longitude+",altitude="+altitude);}else{System.out.println("location==null");}//注冊位置監聽mLocationListenerImpl=newLocationListenerImpl();mLocationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER,3000,5,mLocationListenerImpl);}privateclassLocationListenerImplimplementsLocationListener{//當設備位置發生變化時調用該方法@OverridepublicvoidonLocationChanged(Locationlocation){if(location!=null){showLocation(location);}}//當provider的狀態發生變化時調用該方法.比如GPS從可用變為不可用.@OverridepublicvoidonStatusChanged(Stringprovider,intstatus,Bundleextras){}//當provider被打開的瞬間調用該方法.比如用戶打開GPS@OverridepublicvoidonProviderEnabled(Stringprovider){}//當provider被關閉的瞬間調用該方法.比如關閉打開GPS@OverridepublicvoidonProviderDisabled(Stringprovider){}}privatevoidshowLocation(Locationlocation){//獲取經度doublelongitude=location.getLongitude();//獲取緯度doublealtitude=location.getAltitude();Stringmessage="經度為:"+longitude+"\n"+"緯度為:"+altitude;mTextView.setText(message);}@OverrideprotectedvoidonDestroy(){super.onDestroy();if(mLocationManager!=null){mLocationManager.removeUpdates(mLocationListenerImpl);}}}
main.xml如下:
<RelativeLayoutxmlns:android="http://schemas.android.com/apk/res/android"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:layout_height="match_parent"android:paddingBottom="@dimen/activity_vertical_margin"android:paddingLeft="@dimen/activity_horizontal_margin"android:paddingRight="@dimen/activity_horizontal_margin"android:paddingTop="@dimen/activity_vertical_margin"tools:context=".MainActivity"><TextViewandroid:id="@+id/textView"android:layout_width="fill_parent"android:layout_height="fill_parent"android:layout_centerInParent="true"android:gravity="center"/></RelativeLayout>
關于怎么在Android中使用LocationManager獲取經度與緯度等地理信息問題的解答就分享到這里了,希望以上內容可以對大家有一定的幫助,如果你還有很多疑惑沒有解開,可以關注本站行業資訊頻道了解更多相關知識。
本文由 貴州做網站公司 整理發布,部分圖文來源于互聯網,如有侵權,請聯系我們刪除,謝謝!
c語言中正確的字符常量是用一對單引號將一個字符括起表示合法的字符常量。例如‘a’。數值包括整型、浮點型。整型可用十進制,八進制,十六進制。八進制前面要加0,后面...
2022年天津專場考試原定于3月19日舉行,受疫情影響確定延期,但目前延期后的考試時間推遲。 符合報名條件的考生,須在規定時間登錄招考資訊網(www.zha...
:喜歡聽,樂意看。指很受歡迎?!巴卣官Y料”喜聞樂見:[ xǐ wén lè jiàn ]詳細解釋1. 【解釋】:喜歡聽,樂意看。指很受歡迎。2. 【示例】:這是...
(資料圖)國際金價續創9月28日以來新低至1617.12美元/盎司,因強勁的勞動力市場數據和美聯儲官員鷹派言論削弱了黃金的吸引力,10年期美債收益率創下2008年6月以來的新高。北京時間今天15:21,現貨黃金下跌0.49%至1619.63美元/盎司;COMEX期金主力合約下跌0.81%至1623.5美元/盎司;美元指數上浮0.14%至112.986。SPI Asset Management管理合...
十一假期股市不開盤。以2020年十一假期股市的相關規定為例,根據上交所和深交所公布的股市休市時間,2020年國慶休市時間為10月1日(星期四)至10月8日 (星期四) ,10月9日(星期五) 起照常開市。另外,9月27日(星期日)、10月10日(星期六)為周末,屬于正常休市時間。股票市場是股票發行和交易的場所,包括發行市場和流通市場兩部分。股份公司通過面向社會發行股票,迅速集中大資金,實現生產的規...
中國移動鐵通寬帶資費是多少?你好,中國移動鐵通寬帶資費2M一般是一年600元左右,提供你參考,準確需要咨詢當地營業廳。鐵通寬帶多少錢一年的?鐵通寬帶多少錢一個月據了解,鐵通寬帶基本都是包年的,沒有一個月的。從全年來看,一個月大概也就幾十塊。不過地方不同價格也會有所差異。各地市還有各自的附加優惠。鐵通和移動合并了,鐵通寬帶也就是移動寬帶。各地的資費政策是不一樣的,一般都是600元/年,可以上14個月...