import com.amap.api.location.AMapLocation;
import com.xr.gdlocation.interfaces.XrGDLocationinterace;
import com.xr.gdlocation.services.XrGDLocation;
import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
/**
* @ClassName: MainActivity
* @Description: TODO(手动更改字符串后手动调用stopLocation停止定位)
* @author A18ccms a18ccms_gmail_com
* @date 2015年4月14日 下午9:41:16
*
*/
public class MainActivity extends Activity {
private XrGDLocation gdLocation;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
gdLocation = new XrGDLocation(this);
}
public void onLocation(View view) {
gdLocation.startLocation(new XrGDLocationinterace() {
@Override
public void onSucceed(AMapLocation amapLocation) {
System.out.println(amapLocation.getCity());
}
@Override
public void onFailure(String error) {
Log.e("FAILURE", error);
}
});
}
public void stopLocation(View view) {
gdLocation.stopLocation();
}
}
import com.amap.api.location.AMapLocation;
public interface XrGDLocationinterace {
/* 定位成功 */
public void onSucceed(AMapLocation amapLocation);
/* 定位失败 */
public void onFailure(String error);
}
/*
<!--高德KEY-->
<meta-data
android:name="com.amap.api.v2.apikey"
android:value="官网申请的KEY" />
<!--高德定位权限-->
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.CHANGE_CONFIGURATION" />
<uses-permission android:name="android.permission.WAKE_LOCK" />
<uses-permission android:name="android.permission.WRITE_SETTINGS" />
*/
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;
import com.xr.gdlocation.interfaces.XrGDLocationinterace;
/*网络定位*/
public class XrGDLocation implements AMapLocationListener {
private LocationManagerProxy mLocationManagerProxy;
/* 上下文 */
private Context mContext;
/* 经度 */
private double mLongitude = 0.00;
/* 纬度 */
private double mLatitude = 0.00;
/* 返回定位信息的接口 */
private XrGDLocationinterace mXrGDLocationinterace;
public XrGDLocation(Context context) {
this.mContext = context;
startLocation(mXrGDLocationinterace);
}
@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(AMapLocation amapLocation) {
// TODO Auto-generated method stub
if (amapLocation != null
&& amapLocation.getAMapException().getErrorCode() == 0) {
/* 对比两次经纬度 (相同的话就停止定位减少耗电) */
if (amapLocation.getLatitude() != mLatitude
|| amapLocation.getLongitude() != mLongitude) {
mLatitude = amapLocation.getLatitude();
mLongitude = amapLocation.getLongitude();
mXrGDLocationinterace.onSucceed(amapLocation);
} else {
stopLocation();
}
} else {
mXrGDLocationinterace.onFailure("AmapErr : Location ERR:"
+ amapLocation.getAMapException().getErrorCode());
}
}
/**
* 开始定位
*/
public void startLocation(XrGDLocationinterace xrGDLocationinterace) {
this.mXrGDLocationinterace = xrGDLocationinterace;
// 初始化定位,只采用网络定位
mLocationManagerProxy = LocationManagerProxy.getInstance(mContext);
mLocationManagerProxy.setGpsEnable(false);
mLocationManagerProxy.requestLocationData(
LocationProviderProxy.AMapNetwork, 60 * 1000, 15, this);
}
/**
* 停止定位
*/
public void stopLocation() {
// 移除定位请求
mLocationManagerProxy.removeUpdates(this);
// 销毁定位
mLocationManagerProxy.destroy();
}
}
//小白做记录,还在抄代码阶段,吐槽就免了