生活随笔
收集整理的這篇文章主要介紹了
Android下实现GPS定位服务
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
1.申請Google API Key,參考前面文章
2.實現GPS的功能需要使用模擬器進行經緯度的模擬設置,請參考前一篇文章進行設置
3.創建一個Build Target為Google APIs的項目
4.修改Androidmanifest文件:
?
view plain <uses-library?android:name="com.google.android.maps"?/>??<uses-permission?android:name="android.permission.INTERNET"/>???????<uses-permission?android:name="android.permission.ACCESS_COARSE_LOCATION"/>???????<uses-permission?android:name="android.permission.ACCESS_FINE_LOCATION"/>?? ?
5.修改main.xml文件
?
view plain <com.google.android.maps.MapView??????android:id="@+id/MapView01"??????android:layout_width="fill_parent"??????android:layout_height="fill_parent"??????android:apiKey="0f8FBFJliR7j_7aNwDxClBv6VW8O12V2Y21W_CQ"/>?? ?
注意:這里的apiKey值請相應修改為自己的key值
6.代碼清單:
?
?
view plain package?com.hoo.android.LocationMap;??import?java.io.IOException;??import?java.util.List;??import?java.util.Locale;??import?android.content.Context;??import?android.graphics.Bitmap;??import?android.graphics.BitmapFactory;??import?android.graphics.Canvas;??import?android.graphics.Paint;??import?android.graphics.Point;??import?android.location.Address;??import?android.location.Criteria;??import?android.location.Geocoder;??import?android.location.Location;??import?android.location.LocationListener;??import?android.location.LocationManager;??import?android.os.Bundle;??import?android.widget.TextView;??import?com.google.android.maps.GeoPoint;??import?com.google.android.maps.MapActivity;??import?com.google.android.maps.MapController;??import?com.google.android.maps.MapView;??import?com.google.android.maps.Overlay;??public?class?ActivityLocationMap?extends?MapActivity???{??????public?MapController?mapController;??????public?MyLocationOverlay?myPosition;??????public?MapView?myMapView;????????????public?void?onCreate(Bundle?savedInstanceState)?{??????????super.onCreate(savedInstanceState);??????????setContentView(R.layout.main);????????????????????LocationManager?locationManager;??????????String?context=Context.LOCATION_SERVICE;??????????locationManager=(LocationManager)getSystemService(context);??????????myMapView=(MapView)findViewById(R.id.MapView01);????????????????????mapController=myMapView.getController();????????????????????myMapView.setStreetView(true);????????????????????????????????????????mapController?=?myMapView.getController();?????????????????????myMapView.setEnabled(true);????????????????????myMapView.setClickable(true);???????????????????????myMapView.displayZoomControls(true);????????????myMapView.setBuiltInZoomControls(true);???????????????????????????????mapController.setZoom(17);????????????????????myPosition=new?MyLocationOverlay();????????????????????List<Overlay>?overlays=myMapView.getOverlays();??????????overlays.add(myPosition);????????????????????Criteria?criteria?=new?Criteria();????????????????????criteria.setAccuracy(Criteria.POWER_HIGH);??????????criteria.setAltitudeRequired(false);???????????criteria.setBearingRequired(false);????????????criteria.setCostAllowed(false);????????????criteria.setPowerRequirement(Criteria.POWER_MEDIUM);??????????????????????????????String?provider=locationManager.getBestProvider(criteria,?true);????????????????????Location?location=locationManager.getLastKnownLocation(provider);????????????????????updateWithNewLocation(location);??????????????????????????????locationManager.requestLocationUpdates(provider,?3000,?0,locationListener);??????}??????????????????private?void?updateWithNewLocation(Location?location)???????{??????????String?latLongString;???????????TextView?myLocationText?=?(TextView)findViewById(R.id.TextView01);????????????????????String?addressString="沒有找到地址/n";??????????if(location!=null)??????????{??????????????????????????????????????????myPosition.setLocation(location);????????????????????????????Double?geoLat=location.getLatitude()*1E6;??????????????Double?geoLng=location.getLongitude()*1E6;????????????????????????????GeoPoint?point=new?GeoPoint(geoLat.intValue(),geoLng.intValue());????????????????????????????mapController.animateTo(point);????????????????????????????double?lat=location.getLatitude();????????????????double?lng=location.getLongitude();??????????????latLongString="經度:"+lat+"/n緯度:"+lng;????????????????????????????????????????????????????????????????????????Geocoder?gc=new?Geocoder(this,Locale.getDefault());??????????????try??????????????{????????????????????????????????????List<Address>?addresses=gc.getFromLocation(lat,?lng,1);??????????????????StringBuilder?sb=new?StringBuilder();??????????????????if(addresses.size()>0)??????????????????{??????????????????????Address?address=addresses.get(0);??????????????????????for(int?i=0;i<address.getMaxAddressLineIndex()-1;i++)??????????????????????????sb.append(address.getAddressLine(i)).append(",");???????????????????????????????????????????????????????????????????????????????????????????????????sb.append(address.getCountryName());??????????????????????????addressString=sb.toString();??????????????????}??????????????}catch(IOException?e){}??????????}??????????else??????????{??????????????latLongString="沒有找到坐標./n";??????????}????????????????????myLocationText.setText("您當前的位置如下:/n"+latLongString+"/n"+addressString);??????}????????????private?final?LocationListener?locationListener=new?LocationListener()??????{????????????????????public?void?onLocationChanged(Location?location)??????????{??????????????updateWithNewLocation(location);??????????}????????????????????public?void?onProviderDisabled(String?provider)??????????{??????????????updateWithNewLocation(null);??????????}????????????????????public?void?onProviderEnabled(String?provider){}????????????????????public?void?onStatusChanged(String?provider,int?status,Bundle?extras){}??????};????????????protected?boolean?isRouteDisplayed()??????{??????????return?false;??????}????????????class?MyLocationOverlay?extends?Overlay??????{??????????Location?mLocation;????????????????????public?void?setLocation(Location?location)??????????{??????????????mLocation?=?location;??????????}??????????@Override??????????public?boolean?draw(Canvas?canvas,?MapView?mapView,?boolean?shadow,?long?when)??????????{??????????????super.draw(canvas,?mapView,?shadow);??????????????????????????Paint?paint?=?new?Paint();??????????????Point?myScreenCoords?=?new?Point();????????????????????????????GeoPoint?tmpGeoPoint?=?new?GeoPoint((int)(mLocation.getLatitude()*1E6),(int)(mLocation.getLongitude()*1E6));??????????????????mapView.getProjection().toPixels(tmpGeoPoint,?myScreenCoords);????????????????????????????paint.setStrokeWidth(0);??????????????paint.setARGB(255,?255,?0,?0);??????????????paint.setStyle(Paint.Style.STROKE);????????????????????????????Bitmap?bmp?=?BitmapFactory.decodeResource(getResources(),?R.drawable.green_dot);??????????????canvas.drawBitmap(bmp,?myScreenCoords.x,?myScreenCoords.y,?paint);??????????????canvas.drawText("您目前的位置",?myScreenCoords.x,?myScreenCoords.y,?paint);??????????????return?true;??????????}??????}??}?? ?
代碼參考網絡,加以修改優化,謝謝
7.程序運行截圖,前提是在命令行下輸入geo fix 121.5 31.24(定位到上海東方明珠),在命令行下可以輸入其他坐標,系統會根據坐標顯示其他位置,如接著輸入geo fix 113.325 23.113(定位到廣州海心沙),不知為什么輸入坐標的時候經常會不識別,有時能夠成功而有時不行,郁悶,求解……
轉載于:https://www.cnblogs.com/Free-Thinker/p/3606475.html
總結
以上是生活随笔為你收集整理的Android下实现GPS定位服务的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。