package com.lx.util;
 
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;
/*
 * 要求是单态的 ,只允许存在一个实例.
 * 获取手机的gps信息
 */
public class GPSInfoService {
    private Context context;
    private LocationManager manager;
    SharedPreferences sp ;
    //1. 私有化构造方法
    private  GPSInfoService(Context context){  
        this.context= context;
        manager = (LocationManager) context.getSystemService(Context.LOCATION_SERVICE);
        sp = context.getSharedPreferences("config", Context.MODE_PRIVATE);
    }
    private static GPSInfoService mGPSService;
     
    public synchronized static GPSInfoService getInstance(Context context){
        if(mGPSService==null)
            mGPSService = new GPSInfoService(context);
        return mGPSService;
    }
     
    public void registerLocationUpdates(){
        //当前你的手机 所支持的定位方式获取出来
        //有多种定位方式 gps network ,基站, passive
        //可以根据定位的条件 ,获取 一个最好的定位方式
        Criteria criteria = new Criteria();
        // 设置定位的精度
        criteria.setAccuracy(Criteria.ACCURACY_COARSE); //获取大体的位置
        criteria.setAltitudeRequired(false); // 海拔信息
        criteria.setCostAllowed(true); //允许产生费用
        criteria.setPowerRequirement(Criteria.POWER_LOW); //低功耗
         
        //获取一个最符合查询条件的位置提供者
        String provider  =manager.getBestProvider(criteria, true);
         
        // 注册 位置改变的监听器
        manager.requestLocationUpdates(provider, 60000, 0, getLinster());
         
    }
     
     
    public void cancleLocationUpdates(){
        manager.removeUpdates(getLinster());
         
    }
    private static MyGPSLinster myGPSLinser;
     
    private MyGPSLinster getLinster(){
        if(myGPSLinser==null)
            myGPSLinser = new MyGPSLinster();
        return myGPSLinser;
    }
     
    /**
     * 获取手机的最后一次位置
     * @return
     */
    public String getLastPosition(){
        return sp.getString("lastlocation", "");
    }
    private class MyGPSLinster implements LocationListener{
 
        // 用户位置改变的时候 的回调方法
        public void onLocationChanged(Location location) {
            // TODO Auto-generated method stub
            //location
            //获取到用户的纬度
            double latitude= location.getLatitude();
            double longitude = location.getLongitude();
            String locationstr = "jing du "+ longitude + " weidu  :"+latitude;
            Editor  editor =  sp.edit();
            editor.putString("lastlocation", locationstr);
            editor.commit();
        }
        // 状态改变
        public void onStatusChanged(String provider, int status, Bundle extras) {
            // TODO Auto-generated method stub
        }
        //gps ,打开
        public void onProviderEnabled(String provider) {
            // TODO Auto-generated method stub
             
        }
        //关闭
        public void onProviderDisabled(String provider) {
            // TODO Auto-generated method stub
             
        }
    }
}

android定位GPS定位 代码实现的更多相关文章

  1. [置顶] xamarin android使用gps定位获取经纬度

    看了文章你会得出以下几个结论 1.android定位主要有四种方式GPS,Network(wifi定位.基站定位),AGPS定位 2.绝大部分android国产手机使用network进行定位是没有作用 ...

  2. Android中GPS定位的简单应用

    在Android中通过GPS获得当前位置,首先要获得一个LocationManager实例,通过该实例的getLastKnownLocation()方法获得第一个的位置,该方法的说明如下: void ...

  3. android 获取GPS定位

    AndroidManifest.xml <?xml version="1.0" encoding="utf-8"?> <manifest xm ...

  4. 【Android】GPS定位基本原理浅析

    位置服务已经成为越来越热的一门技术,也将成为以后所有移动设备(智能手机.掌上电脑等)的标配.而定位导航技术中,目前精度最高.应用最广泛的,自然非GPS莫属了.网络上介绍GPS原理的专业资料很多,而本文 ...

  5. Android开发——GPS定位

    1.LocationManager LocationManager系统服务是位置服务的核心组件,它提供了一系列方法来处理与位置相关的问题. 与LocationManager相关的两个知识点: 1.1 ...

  6. Android之GPS定位详解

    一.LocationManager LocationMangager,位置管理器.要想操作定位相关设备,必须先定义个LocationManager.我们可以通过如下代码创建LocationManger ...

  7. Arcgis API for Android之GPS定位

    欢迎大家增加Arcgis API for Android的QQ交流群:337469080 先说说写这篇文章的原因吧,在群内讨论的过程中,有人提到了定位的问题,刚好,自己曾经在做相关工作的时候做过相关的 ...

  8. Arcgis For Android之GPS定位实现

    翻开曾经做的东西,看了看,非常多从逻辑上比較乱,对之做了改动,完毕后实现的效果为: MapActivity源码例如以下: package com.lzugis.map; import java.io. ...

  9. Gps定位和wifi定位和基站定位的比较

    现在手机定位的方式是:Gps定位,wifi定位,基站定位 Gps定位的前提,手机开启Gps定位模块,在室外,定位的精度一般是几米的范围 wifi定位的前提,手机要开启wifi,连不连上wifi热点都可 ...

随机推荐

  1. 使用 IntraWeb (42) - 测试读取 SqLite (一)

    为通过 FireDAC(XE5开始支持的) 使用 SqLite, 现在已换成 XE6 + IntraWeb v14.0.32 Ultimate. 首先把官方提供的 C:\Users\Public\Do ...

  2. idhttp的用法

    1)POST function PostMethod(http: TIDhttp; URL: string; Params: TStringList): string;var RespData: TS ...

  3. XE3随笔6:SuperObject 的 JSON 对象中还可以包含 "方法"

    SuperObject 的 JSON 对象中还可以包含 "方法", 这太有意思了; 其方法的格式是: procedure Method(const This, Params: IS ...

  4. oracle删除数据恢复

    分为两种方法:scn和时间戳两种方法恢复. 一.通过scn恢复删除且已提交的数据 1.获得当前数据库的scn号 select current_scn from v$database; (切换到sys用 ...

  5. sqlite中的replace、insert、update之前的区别

    本文转自http://www.ithao123.cn/content-933827.html,在此感谢作者 android数据库操作,有两种方式,一种用android提供给我们的数据库操作函数inse ...

  6. HtDP读后感

    我小时候很喜欢电脑. 不是听音乐,也不是玩游戏.纯粹是好奇:为什么一部冷冰冰的机器插上电源之后居然能如此强大.我每个月都期盼着订阅的电脑杂志快点到,到手以后总先上手试试里面的"奇淫巧技&qu ...

  7. struts2 表单验证

    http://www.blogjava.net/javagrass/archive/2011/11/21/364400.html

  8. aceAdmin fuelux tree 从后台获取数据,并设置节点ID等属性

    如题,从后台封装数据,有两种方式渲染节点的数据: 1.全部节点加载 2.根据父节点加载子节点 首先,先介绍下第一种渲染方式: 后台返回数据格式(所有的附加属性,都可放在additionalParame ...

  9. android压力测试命令monkey详解

    一.Monkey 是什么?Monkey 就是SDK中附带的一个工具. 二.Monkey 测试的目的?:该工具用于进行压力测试. 然后开发人员结合monkey 打印的日志 和系统打印的日志,结局测试中出 ...

  10. Mispelling 1510

    #include<iostream>#include<string>#include<cstdio>using namespace std;int main(){  ...