29_移植gps获取到手机

来源:互联网 发布:网络维护经验 编辑:程序博客网 时间:2024/05/18 03:34

一、GPS工具类


public class GPSInfoProvider {

// 保证位置提供者只会注册一次监听器 只会初始化一次.(单例设计模式)

private GPSInfoProvider() {
} // 私有化构造方法


private static GPSInfoProvider mGpsInfoProvider;
private static LocationManager lm;
private static SharedPreferences sp;
private static MyListener listener;
public static GPSInfoProvider getInstance(Context context) {
if (mGpsInfoProvider == null) {
mGpsInfoProvider = new GPSInfoProvider();   //实例化唯一实例
lm = (LocationManager) context.getSystemService(Context.LOCATION_SERVICE);


Criteria criteria = new Criteria();
sp = context.getSharedPreferences("config", Context.MODE_PRIVATE);
criteria.setAccuracy(Criteria.ACCURACY_FINE);
criteria.setCostAllowed(true);
criteria.setPowerRequirement(Criteria.POWER_HIGH);
criteria.setSpeedRequired(true);
String provider = lm.getBestProvider(criteria, true);
// 第一个参数 位置提供者 第二个参数 最短更新时间 第三参数 最短的更新的距离
listener = mGpsInfoProvider.new MyListener();
lm.requestLocationUpdates(provider, 0, 0, listener);   
}
return mGpsInfoProvider;
}


private class MyListener implements LocationListener {

/**
* 当位置改变的时候调用
*/
public void onLocationChanged(Location location) {
float accuracy = location.getAccuracy();  //精确度
double wlong = location.getLatitude(); // 纬度
double jlong = location.getLongitude(); // 经度
//经度和纬度信息存起来.
Editor editor = sp.edit();
editor.putString("lastlocation", wlong+"-"+jlong+"-"+accuracy);
editor.commit();
}


/**
* 某一个位置提供者的状态发生改变的时候调用的方法
*/
public void onStatusChanged(String provider, int status, Bundle extras) {

}

public void onProviderEnabled(String provider) {

}

public void onProviderDisabled(String provider) {

}
}

/**
* 返回最后一次手机的位置.
* @return
*/
public String getPhoneLocation() {
return sp.getString("lastlocation", "");
}
}


二、Activity中

    String lastloaction = GPSInfoProvider.getInstance(context).getPhoneLocation();


0 0
原创粉丝点击