package com.herotculb.tencentmap; import android.content.Context; import com.tencent.map.geolocation.TencentLocation; import com.tencent.map.geolocation.TencentLocationListener; import com.tencent.map.geolocation.TencentLocationManager; import com.tencent.map.geolocation.TencentLocationRequest; public class LocationHelper implements TencentLocationListener { private Context mContext; private TencentLocation mLastLocation; private int mLastError; private boolean mStarted; private Runnable mTmp; public LocationHelper(Context context) { super(); this.mContext = context; } @Override public void onLocationChanged(TencentLocation location, int error, String reason) { mLastError = error; mLastLocation = location; if (mTmp != null) { mTmp.run(); } // 自动停止 stop(); } @Override public void onStatusUpdate(String arg0, int arg1, String arg2) { // ignore } public void start(Runnable r) { if (!mStarted) { mStarted = true; mTmp = r; TencentLocationRequest request = TencentLocationRequest.create() .setInterval(5000) .setRequestLevel(TencentLocationRequest.REQUEST_LEVEL_GEO); TencentLocationManager.getInstance(mContext) .requestLocationUpdates(request, this); } } public void stop() { if (mStarted) { TencentLocationManager.getInstance(mContext).removeUpdates(this); mStarted = false; mTmp = null; } } public boolean isStarted() { return mStarted; } public TencentLocation getLastLocation() { if (mLastError == 0) { return mLastLocation; } return null; } }