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. amazeui学习笔记--js插件(UI增强4)--下拉组件Dropdown

    amazeui学习笔记--js插件(UI增强4)--下拉组件Dropdown 一.总结 1.am-dropdown(及其孩子):控制下拉列表的样式 2.data-am-dropdown(及其孩子):控 ...

  2. “-bash: !”: event not found"、echo > sudo permission denied

    1. "-bash: !": event not found" 比如当我们在 linux 命令行输入echo "Reboot your instance!&qu ...

  3. jQuery笔记---选择器(三)

    1.1查找隐藏的tr元素的个数 $(“table tr:hidden”).size() 查找所有可见的tr元素的个数 $(“table tr:not(:hidden)”).size()   一般是不使 ...

  4. 9.8 Binder系统_c++实现_内部机制1

    1. 内部机制_回顾binder框架关键点 binder进程通讯过程情景举例: test_server通过addservice向service_manager注册服务 test_client通过get ...

  5. PHP 分布式集群中session共享问题以及session有效期的设置

    https://blog.csdn.net/m_nanle_xiaobudiu/article/details/81177698

  6. [慕课笔记]Node入口文件分析和目录初始化

    1:我们要在根目录下安装这些模块 2:然后来编写这些入口文件,这几行代码的大概意思是说,我引入一个express的模块,然后生成一个webview 的实例,将这个实例的监听端口设置成3000,然后就可 ...

  7. 【例题5-2 UVA - 101】The Blocks Problem

    [链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] 用vector模拟就好. resize的时候,只是把多余的清理掉. 原先的不会变的. [错的次数] 在这里输入错的次数 [反思] 在 ...

  8. 提高编程能力的7条建议 分类: T_TALENT 2014-04-12 10:41 294人阅读 评论(0) 收藏

    编程是非常酷的一件事情,但是在酷炫的背后它对很多人来说还是挺难的.很多人在学习编程之初就被困难击败了. 当你不熟悉编程的时候,你可能会觉得无从下手,并且不知道如何运用学到的知识.只要你通过了这一困难的 ...

  9. php实现用短路求值原理求1+2+3+...+n(短路求值是什么)(仔细分析题干)

    php实现用短路求值原理求1+2+3+...+n(短路求值是什么)(仔细分析题干) 一.总结 1.仔细分析题干,找出要点:该递归还是得递归啊 2.短路求值原理:&&就是逻辑与,逻辑与有 ...

  10. php求二叉树的深度(1、二叉树就可以递归,因为结构和子结构太相似)(2、谋而后动,算法想清楚,很好过的)

    php求二叉树的深度(1.二叉树就可以递归,因为结构和子结构太相似)(2.谋而后动,算法想清楚,很好过的) 一.总结 1.二叉树就可以递归,因为结构和子结构太相似 2.谋而后动,算法想清楚,很好过的 ...