package com.example.gpstest;

import org.apache.http.util.LangUtils;

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 zehua
*
*/
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){
synchronized (GPSInfoProvider.class) {
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);
// 注册位置的监听器
//60000每隔一分钟获取当前位置(最大频率)
//位置每改变50米重新获取位置信息
//getListener()位置发生改变时的回调方法
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());
} //获取gps监听实例
private synchronized MyLoactionListener getListener(){
if(listener==null){
synchronized (GPSInfoProvider.class) {
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(); //获取精度
//最后一次获取到的位置信息 存放到sharedpreference里面
SharedPreferences sp = context.getSharedPreferences("config", Context.MODE_PRIVATE);
Editor editor = sp.edit();
editor.putString("location", latitude+" - "+ longtitude);
editor.commit();
} /**
* 某一个设备的状态发生改变的时候 调用
* 可用->不可用
* 不可用->可用
* status 当前状态
* extras 额外消息
*/
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);
//如果置为ture只会返回当前打开的gps设备
//如果置为false如果设备关闭也会返回
return manager.getBestProvider(criteria, true);
}
}

Android GPS获取当前位置信息的更多相关文章

  1. Android中获取当前位置的使用步骤

    在Android中得到当前位置的步骤 1.在AndroidManifest.xml中声明权限 android.permission.ACCESS_FINE_LOCATION(或者android.per ...

  2. android EditText获取光标位置并安插字符删除字符

    android EditText获取光标位置并插入字符删除字符1.获取光标位置int index = editText.getSelectionStart(); 2.在光标处插入字符int index ...

  3. 关于微信小程序获取当前位置信息

    小程序开发---获取当前位置信息 一.获取用户地理位置信息 1.配置app.json文件 { "pages": ["pages/index/index"], & ...

  4. Android初级教程获取手机位置信息GPS与动态获取最佳方式

    简单介绍一下gps定位的操作. 主要是靠locationmanger这个api完成的一些操作:通过获取这个实例,然后调用它的requestLocationUpdates方法进行注册.传入的参数分别有以 ...

  5. 在Android Studio中使用BaiduMap SDK实时获取当地位置信息

    配置BaiduMap 环境 1.在百度API中新建自己的一个APP包名和APP名需要注意和自己Android Studio 中的包名和APP名保持一致: 2.百度地图中还需要填写一个SHA1 数字签名 ...

  6. android中获取屏幕的信息

    获取屏幕信息比较简单,可以通过android的sdk自带的工具类DisplayMetrics.话不多说,上代码: // 获取屏幕的信息 DisplayMetrics dm = new DisplayM ...

  7. C# 图像处理:获取鼠标位置信息(全局)

    Point ms = Control.MousePosition; //获取鼠标位置 this.label2.Text = string.Format("{0}:{1}", ms. ...

  8. iOS项目开发实战——使用CoreLocation获取当前位置信息

    随着基于位置服务LBS和移动互联网的兴起,你的位置是越来越重要的一个信息.位置服务已经是当前的热门应用如微信.陌陌等社交应用的杀手锏.而在iOS开发中,苹果已经给我们提供了一个位置接口.CoreLoc ...

  9. 获取元素位置信息和所占空间大小(via:js&jquery)

    工作中有一个很常见的需求,hover或者click某元素后,在该元素旁边出现弹框,主要就是获取该元素的位置坐标以及元素所占区块的大小.最近工作中就遇到了,发现js和jquery的实现方法有很大的区别, ...

随机推荐

  1. ex.Message "ORA-01691: Lob 段 USER_MURPHY.SYS_LOB0000093717C00006$$ 无法通过 1024 (在表空间 ZJHH 中) 扩展"

    Oracle,往数据库里导入dmp的时候报错:ORA-01691:Lob 段 无法通过8192(在表空间TS_SI中)扩展 解决方案1: 原因:所创建的表空间不足. 创建一个可拓展的表空间 creat ...

  2. 发布一个stl标准库容器类(vector/list)的安全删除方法

    话不多说,看代码. #include <functional> #ifndef ASSERT #include <cassert> #define ASSERT assert ...

  3. 《你不知道的JavaScript(上)》笔记——let和const

    笔记摘自:<你不知道的JavaScript(上)>第3章 函数作用域和块作用域 let 1.let 关键字可以将变量绑定到所在的任意作用域中 2.let 为其声明的变量隐式地劫持了所在的块 ...

  4. 全面详细介绍一个P2P网贷领域的ERP系统的主要功能

        一般的P2P系统,至少包括PC网站的前端和后端.前端系统的功能,可以参考"P2P系统哪家强,功能其实都一样" http://blog.csdn.net/fansunion/ ...

  5. 【JS学习】-利用谷歌浏览器调试JS代码(转)

    谷歌浏览器是常用来调试JS代码的工具,本文主要介绍如何利用谷歌浏览器来调试JS代码,协助我们进行开发工作. 首先,打开谷歌浏览器,按快捷键F12或者ctrl+shift+j,就可以打开谷歌浏览器的开发 ...

  6. Java与IOS日期格式

    //JAVA日期格式 Date date = new Date(); SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM- ...

  7. andriod first app-computer

    andriod first app-computer 个人信息:就读于燕大本科软件project专业 眼下大三; 本人博客:google搜索"cqs_2012"就可以; 个人爱好: ...

  8. 算法 Tricks(六)— if 条件分支的简化

    考虑下面的三分支的定义式: f=⎧⎩⎨⎪⎪a,b,a+b,x>yx<yx=y int f = 0; if (x >= y) f += a; if (x <= y) f += b ...

  9. DSO Framer _ WinForm 使用

    根据自己对dsoframer控件的学习,想把dsoframer控件进行简单的包装为C#的usercontrol,大体需要作如下:(创建windows的usercontrol的步骤就不再说了...)我们 ...

  10. js进阶课程ajax简介(ajax是浏览器来实现的)

    js进阶课程ajax简介(ajax是浏览器来实现的) 一.总结 1.ajax使用需要服务器支持,比如phpstudy 2.ajax是浏览器支持的功能:ajax有个核心对象XMLHttpRequest, ...