android源生获取经纬度,Android获取GPS经纬度
项目需要,整了个小demo,不说废话,直接代码:
public class GPSActivity extends Activity{
private EditText editText;
private TextView tv_gps;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.gps);
editText=(EditText)findViewById(R.id.editText);
tv_gps=(TextView)findViewById(R.id.textView1);
registerGPS();
}
public LocationManager lm;
private static final String TAG="GPS Services";
private void registerGPS(){
lm=(LocationManager)getSystemService(Context.LOCATION_SERVICE);
//判断GPS是否正常启动
if(!lm.isProviderEnabled(LocationManager.GPS_PROVIDER)){
Toast.makeText(this, "请开启GPS导航...", Toast.LENGTH_SHORT).show();
//返回开启GPS导航设置界面
Intent intent = new Intent(Settings.ACTION_LOCATION_SOURCE_SETTINGS);
startActivityForResult(intent,0);
return;
}
//为获取地理位置信息时设置查询条件
String bestProvider = lm.getBestProvider(getCriteria(), true);
//获取位置信息
//如果不设置查询要求,getLastKnownLocation方法传人的参数为LocationManager.GPS_PROVIDER
Location location= lm.getLastKnownLocation(bestProvider);
// Location location= lm.getLastKnownLocation(LocationManager.NETWORK_PROVIDER);
updateView(location);
//监听状态
lm.addGpsStatusListener(listener);
//绑定监听,有4个参数
//参数1,设备:有GPS_PROVIDER和NETWORK_PROVIDER两种
//参数2,位置信息更新周期,单位毫秒
//参数3,位置变化最小距离:当位置距离变化超过此值时,将更新位置信息
//参数4,监听
//备注:参数2和3,如果参数3不为0,则以参数3为准;参数3为0,则通过时间来定时更新;两者为0,则随时刷新
// 1秒更新一次,或最小位移变化超过1米更新一次;
//注意:此处更新准确度非常低,推荐在service里面启动一个Thread,在run中sleep(10000);然后执行handler.sendMessage(),更新位置
lm.requestLocationUpdates(LocationManager.GPS_PROVIDER, 1000, 1, locationListener);
// lm.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 1000, 1, locationListener);
}
//位置监听
private LocationListener locationListener=new LocationListener() {
/**
* 位置信息变化时触发
*/
public void onLocationChanged(Location location) {
updateView(location);
Log.i(TAG, "时间:"+location.getTime());
Log.i(TAG, "经度:"+location.getLongitude());
Log.i(TAG, "纬度:"+location.getLatitude());
Log.i(TAG, "海拔:"+location.getAltitude());
}
/**
* GPS状态变化时触发
*/
public void onStatusChanged(String provider, int status, Bundle extras) {
switch (status) {
//GPS状态为可见时
case LocationProvider.AVAILABLE:
Log.i(TAG, "当前GPS状态为可见状态");
break;
//GPS状态为服务区外时
case LocationProvider.OUT_OF_SERVICE:
Log.i(TAG, "当前GPS状态为服务区外状态");
break;
//GPS状态为暂停服务时
case LocationProvider.TEMPORARILY_UNAVAILABLE:
Log.i(TAG, "当前GPS状态为暂停服务状态");
break;
}
}
/**
* GPS开启时触发
*/
public void onProviderEnabled(String provider) {
Location location=lm.getLastKnownLocation(provider);
updateView(location);
}
/**
* GPS禁用时触发
*/
public void onProviderDisabled(String provider) {
updateView(null);
}
};
//状态监听
GpsStatus.Listener listener = new GpsStatus.Listener() {
public void onGpsStatusChanged(int event) {
switch (event) {
//第一次定位
case GpsStatus.GPS_EVENT_FIRST_FIX:
Log.i(TAG, "第一次定位");
break;
//卫星状态改变
case GpsStatus.GPS_EVENT_SATELLITE_STATUS:
Log.i(TAG, "卫星状态改变");
//获取当前状态
GpsStatus gpsStatus=lm.getGpsStatus(null);
//获取卫星颗数的默认最大值
int maxSatellites = gpsStatus.getMaxSatellites();
//创建一个迭代器保存所有卫星
Iterator iters = gpsStatus.getSatellites().iterator();
int count = 0;
while (iters.hasNext() && count <= maxSatellites) {
GpsSatellite s = iters.next();
count++;
}
System.out.println("搜索到:"+count+"颗卫星");
tv_gps.setText("搜索到:"+count+"颗卫星");
break;
//定位启动
case GpsStatus.GPS_EVENT_STARTED:
Log.i(TAG, "定位启动");
break;
//定位结束
case GpsStatus.GPS_EVENT_STOPPED:
Log.i(TAG, "定位结束");
break;
}
};
};
/**
* 实时更新文本内容
*
* @param location
*/
private void updateView(Location location){
if(location!=null){
editText.setText("设备位置信息\n\n经度:");
editText.append(String.valueOf(location.getLongitude()));
editText.append("\n纬度:");
editText.append(String.valueOf(location.getLatitude()));
}else{
//清空EditText对象
editText.getEditableText().clear();
}
}
/**
* 返回查询条件
* @return
*/
private Criteria getCriteria(){
Criteria criteria=new Criteria();
//设置定位精确度 Criteria.ACCURACY_COARSE比较粗略,Criteria.ACCURACY_FINE则比较精细
criteria.setAccuracy(Criteria.ACCURACY_FINE);
//设置是否要求速度
criteria.setSpeedRequired(false);
// 设置是否允许运营商收费
criteria.setCostAllowed(false);
//设置是否需要方位信息
criteria.setBearingRequired(false);
//设置是否需要海拔信息
criteria.setAltitudeRequired(false);
// 设置对电源的需求
criteria.setPowerRequirement(Criteria.POWER_LOW);
return criteria;
}
@Override
protected void onDestroy() {
// TODO Auto-generated method stub
super.onDestroy();
lm.removeUpdates(locationListener);
}
}
还要注意在AndroidMainifest.xml文件中权限的添加:
android源生获取经纬度,Android获取GPS经纬度相关推荐
- android地图位置应用-----中国城市GPS经纬度汇总
之前找了好久,找到快吐血了,楼主自己一条条查的,,,血与泪啊...乜办法,公司菜鸟级别人物,不做这个难道让大佬们做... 安徽省,合肥,31.821447998021522,117.227271012 ...
- android源生setting华为,Android 设置默认桌面,默认应用,辅助功能,电池优化,设备管理器,悬浮窗等...
Android 部分系统设置桌面,默认应用,辅助功能,电池优化,设备管理器,悬浮窗,有权限查看使用情况,开机自启动,锁屏不清理等 部分功能适配了华为手机与小米手机. 设置默认桌面: //华为手机上 I ...
- java gps经纬度坐标转高德坐标_高德经纬度转普通GPS经纬度
# 官方API: http://lbs.amap.com/api/webservice/guide/api/convert # 坐标体系说明:http://lbs.amap.com/faq/top/c ...
- android获取当前位置经纬度,Android中通过GPS或NetWork获取当前位置的经纬度
今天在Android项目中要实现一个通过GPS或NetWork来获取当前移动终端设备的经纬度功能.要实现该功能要用到Android Framework 中的 LocationManager 类.下面我 ...
- 可运行的GPS获取经纬度和获取基站例子(环境Android Studio 3.5.2扒拉能运行的例子找到太辛苦了要么版本太老。)
可运行的GPS获取经纬度和获取基站例子(环境Android Studio 3.5.2扒拉能运行的例子找到太辛苦了要么版本太老.) 为了检测GPS和基站修改结果,结合网络例子.单独抠出来可运行实例,GP ...
- android百度地图轨迹实现,android 获取GPS经纬度在百度地图上绘制轨迹
实现将一组GPS模块获取的经纬度数据在百度地图上绘制轨迹 1.将经纬度转换成百度地图坐标 /** * 标准的GPS经纬度坐标直接在地图上绘制会有偏移,这是测绘局和地图商设置的加密,要转换成百度地图坐标 ...
- android 获取GPS经纬度在百度地图上绘制轨迹
实现将一组GPS模块获取的经纬度数据在百度地图上绘制轨迹 1.将经纬度转换成百度地图坐标 /*** 标准的GPS经纬度坐标直接在地图上绘制会有偏移,这是测绘局和地图商设置的加密,要转换成百度地图坐标* ...
- Android获取GPS经纬度
项目需要,整了个小demo,不说废话,直接代码: public class GPSActivity extends Activity{ private EditText editText; priva ...
- android 基站经纬度,android手机获取gps和基站的经纬度地址实现代码
代码如下: 代码如下: package com.talkweb.mobileapp; import java.text.DecimalFormat; import android.app.Activi ...
- android studio百度地图SDK获取当前位置和经纬度和海拔
网上很多获取位置的博文,但是感觉都不是很全面. 最近刚好有一个项目要求获取当地的经纬度和地理位置 几经折腾,终于还是写出来了.文分享一下. 代码如下 先在AndroidManifest中添加如下权限 ...
最新文章
- 清空SQL Server数据库日志的SQL语句
- 《CCNP安全防火墙642-618认证考试指南》——1.4节防火墙技术
- linux系统负载状态检查脚本
- 韩国IT业是怎么走向国际我们须要学习什么
- 充实的日子里忙忙碌碌
- linux编辑java文本,linux下的文本编辑器VI的使用命令
- 京瓷1020怎么打印自检页_喷墨打印机如何打印自检页
- 月入5000,你有什么资格谈生活
- SCHNOKA施努卡:扁线电机定子生产过程中线圈插入
- 【SQL】SQL的基础语法
- 1.1 数组——二分查找(Leetcode 0704)
- 常见互联网域名及含义
- GEE开发之Modis_LST地表温度数据分析
- 孙溟㠭篆刻《天地宽》
- 2019多校第一场 HDU6578 - Blank(DP,思维,滚动数组优化空间)
- 无线发射芯片A7105在RF短距离通信的应用
- 拖动图形验证码(极验验证)
- Written English-书面-人称代词
- mysql 列转行union all_SQL查询案例:列行转换[列转行, 使用 UNION ALL 处理]
- adobe pr插件开发,开启nodejs
热门文章
- 用计算机弹九八k谱子,拼音输出法(计算机).ppt
- 计算机读不出来u盘装系统,细说电脑重装系统u盘读不出怎么办
- 计算机读不到u盘如何修复u盘,U盘读不出来怎么办?U盘无法读取修复方法
- V831——AprilTag标签识别
- 命令与征服:红色警戒3 解决游戏启动时界面黑屏,但右上角有五角星电脑卡死的问题——hosts
- 电赛 电容触摸串口屏
- vue PC端菜单优化(第一个菜单隐藏的时候,整个菜单都不显示)
- BBR: Congestion-based congestion control
- undefined reference to 的报错原因记录
- Tell Me Where to Look: Guided Attention Inference Network论文翻译