package com.jiuqi.njt.util; import android.content.Context; import android.location.Location; import android.os.Bundle; import com.amap.api.location.AMapLocation; import com.amap.api.location.AMapLocationListener; import com.amap.api.location.LocationManagerProxy; import com.amap.api.location.LocationProviderProxy; public class GaoDeLocation implements AMapLocationListener { private LocationManagerProxy mAMapLocManager; private StringBuffer sbuffer; public StringBuffer getSbuffer() { return sbuffer; } public void enableMyLocation(Context context ,OnAmapLocationReceiver onLocationReceiver) { if (mAMapLocManager == null) { mAMapLocManager = LocationManagerProxy.getInstance(context); } // 判断是否有网络,没有不请求,不上报 // Location API定位采用GPS和网络混合定位方式,时间最短是5000毫秒 mAMapLocManager.requestLocationUpdates( LocationProviderProxy.AMapNetwork, 5000, 1, GaoDeLocation.this); } public interface OnAmapLocationReceiver{ public void getLocation(AMapLocation location); } public void disableMyLocation() { if (mAMapLocManager != null) { mAMapLocManager.removeUpdates(this); mAMapLocManager.destory(); } mAMapLocManager = null; } @Override public void onLocationChanged(Location location) { // TODO Auto-generated method stub } @Override public void onStatusChanged(String provider, int status, Bundle extras) { // TODO Auto-generated method stub } @Override public void onProviderEnabled(String provider) { // TODO Auto-generated method stub } @Override public void onProviderDisabled(String provider) { // TODO Auto-generated method stub } @Override public void onLocationChanged(final AMapLocation location) { if (location != null) { Double geoLat = location.getLatitude(); Double geoLng = location.getLongitude(); String cityCode = ""; String desc = ""; // StringBuffer sb = new StringBuffer(); sbuffer = new StringBuffer(512); Bundle locBundle = location.getExtras(); if (locBundle != null) { cityCode = locBundle.getString("citycode"); desc = locBundle.getString("desc"); // sb.append("定位方式:").append(location.getProvider()); // // sb.append("\n定位成功:(").append(geoLng).append(",").append(geoLat).append(")"); // sb.append("\n精 度 :").append(location.getAccuracy()) // .append("米"); // sb.append("\n定位时间:").append( // AMapUtil.convertToTime(location.getTime())); // sb.append("\n城市编码:").append(cityCode); // sb.append("\n位置描述:").append(desc); // sb.append("\n省:").append(location.getProvince()); // sb.append("\n市:").append(location.getCity()); // sb.append("\n区(县):").append(location.getDistrict()); // sb.append("\n城市编码:").append(location.getCityCode()); // sb.append("\n区域编码:").append(location.getAdCode()); sbuffer.append(geoLat); sbuffer.append("#"); sbuffer.append(geoLng); sbuffer.append("#"); sbuffer.append(desc); sbuffer.append("#"); sbuffer.append(location.getCity()); sbuffer.append("#"); sbuffer.append(location.getDistrict()); sbuffer.append("#"); sbuffer.append(location.getProvince()); sbuffer.append("#"); sbuffer.append(location.getProvider()); // msg.getData().putDouble("latitude", geoLat); // msg.getData().putDouble("longitude", geoLng); // msg.getData().putString("desc", desc); // msg.getData().putLong("time", location.getTime()); // msg.getData().putDouble("radius", location.getAccuracy()); // msg.getData().putString("city", location.getCity()); // msg.getData().putString("country", location.getDistrict()); // msg.getData().putString("province", location.getProvince()); // msg.getData().putString("provider", location.getProvider()); stopLocation(); } else { } } else { System.out.println("位置是空的"); } } protected void stopLocation() { disableMyLocation(); } }