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. CommandArgument传多个参数

    CommandArgument='<%#Eval("id")+","+Eval("interName") %>'

  2. 新创建的项目利用git添加远程仓库

    git initgit remote add origin https:// //git账号中的网址 (git remote //可以查询添加的远程仓库) git add . //添加刚刚导入的整个工 ...

  3. (转)对Oracle导出文件错误和DMP文件结构的分析,EXP-00008: 遇到 ORACLE 错误 904 ORA-00904: "MAXSIZE": invalid identifier

    EXP-00008: 遇到 ORACLE 错误 904 ORA-00904: "MAXSIZE": invalid identifier 原因:oracle版本不一样 执行 C:/ ...

  4. Verilog之串口(UART)通信

    0:起始位,低电平:1~8:数据位:9:校验位,高电平:10:停止位,高电平. 波特率 “9600bps”表示每秒可以传输9600位. 波特率定时计数器由时钟频率除以波特率. 采集1~8位,忽略0.9 ...

  5. [Chapter 3 Process]Practice 3.5 When a process creates a new process using the fork() operation

    3.5 When a process creates a new process using the fork() operation, which of the following state is ...

  6. 【转】jquery validate验证框架与kindeditor使用需二次提交的问题

    原文:http://blog.csdn.net/wlsyn/article/details/11536399在使用jquery的验证框架对kindeditor富文本编辑器进行验证的过程中,发现提 交时 ...

  7. Xcode升级更新后,恢复cocoapods以及插件的方法

    今天将手机系统更新到iOS9.3了,在Xcode7.1上做真机调试,提示找不到适合的SDK,才知道必须要升级Xcode才行,于是升级Xcode到7.3. 升级之后遇到很多麻烦,cocoapods没有了 ...

  8. javascript的原型和继承(1)

    原型与继承是javascript中基础,重要而相对比较晦涩难解的内容.在图灵的网上看到一篇翻译过的文章,有参考了一些知名博客.我自己总结了几篇.通过这次的总结,感觉自己对原型和继承的认识又增加了很多, ...

  9. html + css (1)

    a{ text-decoration:none; /* 规定添加到文本的修饰;下划线没有了 */ margin:0px; font-size:15px; display: block; /* 以块级元 ...

  10. C2第四次作业解题报告

    看过题解后如果觉得还算有用,请帮忙加点我所在团队博客访问量 http://www.cnblogs.com/newbe/ http://www.cnblogs.com/newbe/p/4069834.h ...