GPSInfoProvider.java:

package cn.itcast.mobilesafe.engine;import android.content.Context;import android.content.SharedPreferences;import android.content.SharedPreferences.Editor;import android.location.Criteria;import android.location.Location;import android.location.LocationListener;import android.location.LocationManager;import android.os.Bundle;import android.text.TextUtils;/** * 保证这个类只存在一个实例 *  * @author *  */public class GPSInfoProvider {LocationManager manager;private static GPSInfoProvider mGPSInfoProvider;private static Context context;private static MyLoactionListener listener;// 1.私有化构造方法private GPSInfoProvider() {};// 2. 提供一个静态的方法 可以返回他的一个实例public static synchronized GPSInfoProvider getInstance(Context context) {if (mGPSInfoProvider == null) {mGPSInfoProvider = new GPSInfoProvider();GPSInfoProvider.context = context;}return mGPSInfoProvider;}// 获取gps 信息public String getLocation() {manager = (LocationManager) context.getSystemService(Context.LOCATION_SERVICE);// manager.getAllProviders(); // gps //wifi //String provider = getProvider(manager);// 注册位置的监听器manager.requestLocationUpdates(provider, 60000, 50, getListener());SharedPreferences sp = context.getSharedPreferences("config",Context.MODE_PRIVATE);String location = sp.getString("location", "");return location;}// 停止gps监听public void stopGPSListener() {manager.removeUpdates(getListener());}private synchronized MyLoactionListener getListener() {if (listener == null) {listener = new MyLoactionListener();}return listener;}private class MyLoactionListener implements LocationListener {/** * 当手机位置发生改变的时候 调用的方法 */public void onLocationChanged(Location location) {String latitude = "latitude " + location.getLatitude(); // 纬度String longtitude = "longtitude " + location.getLongitude(); // 经度SharedPreferences sp = context.getSharedPreferences("config",Context.MODE_PRIVATE);Editor editor = sp.edit();editor.putString("location", latitude + " - " + longtitude);editor.commit(); // 最后一次获取到的位置信息 存放到sharedpreference里面}/** * 某一个设备的状态发生改变的时候 调用 可用->不可用 不可用->可用 */public void onStatusChanged(String provider, int status, Bundle extras) {}/** * 某个设备被打开 */public void onProviderEnabled(String provider) {}/** * 某个设备被禁用 */public void onProviderDisabled(String provider) {}}/** * \ *  * @param manager *            位置管理服务 * @return 最好的位置提供者 */private String getProvider(LocationManager manager) {Criteria criteria = new Criteria();// 定义查询条件criteria.setAccuracy(Criteria.ACCURACY_FINE);// 精准criteria.setAltitudeRequired(false);// 海拔criteria.setPowerRequirement(Criteria.POWER_MEDIUM);// 耗电量criteria.setSpeedRequired(true);// 对速度变化是否明显criteria.setCostAllowed(true);// 设置为true,只返回打开的设备return manager.getBestProvider(criteria, true);}}
调用代码:

GPSInfoProvider provider = GPSInfoProvider.getInstance(context);String location = provider.getLocation();

更多相关文章

  1. Android生命周期的学习
  2. Android的NDK开发(1)————Android(安卓)JNI简介与调用流程
  3. Android实现各种对话框的变体
  4. android 公用的ViewHolder
  5. Android(安卓)获取设备唯一标识
  6. Android中getChildAt()方法介绍
  7. android访问网络图片
  8. Android(安卓)安卓使用MediaPlayer播放列表视频
  9. android 获取原生gps坐标

随机推荐

  1. 【Android】输入设备配置文件(.idc文件)
  2. [Android]Using Text-to-Speech
  3. Android设置无标题
  4. Android(安卓)Developers:处理音频输出的
  5. 问题的解决: android sdk 2.1 update中Fa
  6. android 定时拍照并发送微博
  7. android下的junit test
  8. android getLastKnownLocation null
  9. 图片显示上下有空白的解决办法
  10. 调用android系统图标