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();
}
}