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. python的sorted() 函数

    摘自:http://www.runoob.com/python/python-func-sorted.html sortedClassCount=sorted(classCount.items(),k ...

  2. 7、基于嵌入式Linux的视频采集系统---UVC驱动模型介绍

    UVC 即 usb video class.USB协议中,除了通用的软硬件电气接口规范等,还包含了各种各样的Class协议,用来为不同的功能定义各自的标准接口和具体的总线上的数据交互格式和内容.这些C ...

  3. [Angular2 Animation] Use Keyframes for Fine-Tuned Angular 2 Animations

    When easing isn’t enough to get the exact animation you want, you can leverage keyframes to define a ...

  4. php实现反转链表(链表题一定记得画图)(指向链表节点的指针本质就是一个记录地址的变量)($p->next表示的是取p节点的next域里面的数值,next只是p的一个属性)

    php实现反转链表(链表题一定记得画图)(指向链表节点的指针本质就是一个记录地址的变量)($p->next表示的是取p节点的next域里面的数值,next只是p的一个属性) 一.总结 链表反转两 ...

  5. IntelliJ IDEA设置鼠标悬浮提示

    测试代码; public interface MyInterface { /** * 我是接口方法的注释 * @param num1 我是接口方法入参的注释 * @return 我是接口方法返回值的注 ...

  6. Java程序猿必知的10个调试技巧

    在本文中,作者将使用大家经常使用的的开发工具Eclipse来调试Java应用程序.但这里介绍的调试方法基本都是通用的,也适用于NetBeans IDE,我们会把重点放在运行时上面. 在開始之前,推荐大 ...

  7. Android面试准备 第二天 第五例 数据存储

    參考:http://blog.csdn.net/lmj623565791/article/details/24015867 5.Activity用SharedPreferences保存数据,大小有木有 ...

  8. JAVA: Socket和ServerSocket网络编程

    面是本次学习的笔记.主要分异常类型.交互原理.Socket.ServerSocket.多线程这几个方面阐述. 异常类型 在了解Socket的内容之前,先要了解一下涉及到的一些异常类型.以下四种类型都是 ...

  9. [内核编程] visual studio 2010配置驱动开发环境

    visual studio 2010 配置驱动开发环境 ** 工具/材料 VS2010.WDK开发包 **  配置过程 以下将讲述VS2010驱动开发环境的配置过程,至于必要软件的安装过程这里不再赘述 ...

  10. 【u223】放牙刷

    [题目链接]: [题解] 错排公式 f[n] = (n-1)*(f[n-1]+f[n-2]); 这样理解: 要从n-1和n-2递推到n; 假设第n个位置上的数要放在前n-1个位置中的k位置;则有n-1 ...