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. Openstack nova(二)——架构(一)

    架构源自需求 需求分析 软件架构大部分都来自于需求.能够说.有什么样的需求,就会有什么样的架构, 尽管不同一时候期,不同的人来实现,可能不全然一样.可是整体来说, 架构不会相差太远. 如今假设假设须要 ...

  2. 从零开始使用git第二篇:git的日常操作

    从零开始使用git 第二篇:git的日常操作 第一篇:从零开始使用git第一篇:下载安装配置 第二篇:从零开始使用git第二篇:git实践操作 第三篇:从零开始使用git第三篇:git撤销操作.分支操 ...

  3. Can't bind to 'formGroup' since it isn't a known property of 'form'

    在APP.module.ts中引入FormsModule, ReactiveFormsModule. import { BrowserModule } from '@angular/platform- ...

  4. 10.11 android输入系统_补充知识_activity_window_decor_view关系

    android里:1个application, 有1个或多个activity(比如支付宝有:首页.财富.口碑.朋友.我的,这些就是activity)1个activity, 有1个window(每个ac ...

  5. P2P系统哪家强,功能其实都一样

    现在的P2P平台有好几千家了,了解了其中的几十家,发现用户端的P2P界面功能都差不多.下面来做个简要的总结: 1.通用功能  注册.登录  2.投资理财  针对理财人的投标.债权转让  3.借款申请  ...

  6. AM335x(TQ335x)学习笔记——Nand&&网卡驱动移植

    移植完毕声卡驱动之后本想再接再励,移植网卡驱动,但没想到的是TI维护的内核太健壮,移植网卡驱动跟之前移植按键驱动一样简单,Nand驱动也是如此,于是,本人将Nand和网卡放在同一篇文章中介绍.介绍之前 ...

  7. 修改SVN中文件的可执行属性

    博文来自下面路径,转载请注明原出处: http://bigwhite.blogbus.com/logs/74568031.html 修改SVN中文件的可执行属性 - [开源世界] Tag:开源世界 S ...

  8. win32程序如何改变字体大小颜色

    //设定文字大小和颜色 LOGFONT logfont; //改变输出字体 ZeroMemory(&logfont, sizeof(LOGFONT)); logfont.lfCharSet = ...

  9. oracle数据库的备份与恢复

    一.备份 方法1: PLSQL中进行导出    对于方式1: 对于导出可执行文件的选择,可通过下面的几个参考位置去查找: 导入imp:F:\app\Administrator\product\11.1 ...

  10. stm32的pwm波