项目需要,整了个小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经纬度相关推荐

  1. android地图位置应用-----中国城市GPS经纬度汇总

    之前找了好久,找到快吐血了,楼主自己一条条查的,,,血与泪啊...乜办法,公司菜鸟级别人物,不做这个难道让大佬们做... 安徽省,合肥,31.821447998021522,117.227271012 ...

  2. android源生setting华为,Android 设置默认桌面,默认应用,辅助功能,电池优化,设备管理器,悬浮窗等...

    Android 部分系统设置桌面,默认应用,辅助功能,电池优化,设备管理器,悬浮窗,有权限查看使用情况,开机自启动,锁屏不清理等 部分功能适配了华为手机与小米手机. 设置默认桌面: //华为手机上 I ...

  3. java gps经纬度坐标转高德坐标_高德经纬度转普通GPS经纬度

    # 官方API: http://lbs.amap.com/api/webservice/guide/api/convert # 坐标体系说明:http://lbs.amap.com/faq/top/c ...

  4. android获取当前位置经纬度,Android中通过GPS或NetWork获取当前位置的经纬度

    今天在Android项目中要实现一个通过GPS或NetWork来获取当前移动终端设备的经纬度功能.要实现该功能要用到Android Framework 中的 LocationManager 类.下面我 ...

  5. 可运行的GPS获取经纬度和获取基站例子(环境Android Studio 3.5.2扒拉能运行的例子找到太辛苦了要么版本太老。)

    可运行的GPS获取经纬度和获取基站例子(环境Android Studio 3.5.2扒拉能运行的例子找到太辛苦了要么版本太老.) 为了检测GPS和基站修改结果,结合网络例子.单独抠出来可运行实例,GP ...

  6. android百度地图轨迹实现,android 获取GPS经纬度在百度地图上绘制轨迹

    实现将一组GPS模块获取的经纬度数据在百度地图上绘制轨迹 1.将经纬度转换成百度地图坐标 /** * 标准的GPS经纬度坐标直接在地图上绘制会有偏移,这是测绘局和地图商设置的加密,要转换成百度地图坐标 ...

  7. android 获取GPS经纬度在百度地图上绘制轨迹

    实现将一组GPS模块获取的经纬度数据在百度地图上绘制轨迹 1.将经纬度转换成百度地图坐标 /*** 标准的GPS经纬度坐标直接在地图上绘制会有偏移,这是测绘局和地图商设置的加密,要转换成百度地图坐标* ...

  8. Android获取GPS经纬度

    项目需要,整了个小demo,不说废话,直接代码: public class GPSActivity extends Activity{ private EditText editText; priva ...

  9. android 基站经纬度,android手机获取gps和基站的经纬度地址实现代码

    代码如下: 代码如下: package com.talkweb.mobileapp; import java.text.DecimalFormat; import android.app.Activi ...

  10. android studio百度地图SDK获取当前位置和经纬度和海拔

    网上很多获取位置的博文,但是感觉都不是很全面. 最近刚好有一个项目要求获取当地的经纬度和地理位置 几经折腾,终于还是写出来了.文分享一下. 代码如下 先在AndroidManifest中添加如下权限 ...

最新文章

  1. 清空SQL Server数据库日志的SQL语句
  2. 《CCNP安全防火墙642-618认证考试指南》——1.4节防火墙技术
  3. linux系统负载状态检查脚本
  4. 韩国IT业是怎么走向国际我们须要学习什么
  5. 充实的日子里忙忙碌碌
  6. linux编辑java文本,linux下的文本编辑器VI的使用命令
  7. 京瓷1020怎么打印自检页_喷墨打印机如何打印自检页
  8. 月入5000,你有什么资格谈生活
  9. SCHNOKA施努卡:扁线电机定子生产过程中线圈插入
  10. 【SQL】SQL的基础语法
  11. 1.1 数组——二分查找(Leetcode 0704)
  12. 常见互联网域名及含义
  13. GEE开发之Modis_LST地表温度数据分析
  14. 孙溟㠭篆刻《天地宽》
  15. 2019多校第一场 HDU6578 - Blank(DP,思维,滚动数组优化空间)
  16. 无线发射芯片A7105在RF短距离通信的应用
  17. 拖动图形验证码(极验验证)
  18. Written English-书面-人称代词
  19. mysql 列转行union all_SQL查询案例:列行转换[列转行, 使用 UNION ALL 处理]
  20. adobe pr插件开发,开启nodejs

热门文章

  1. 用计算机弹九八k谱子,拼音输出法(计算机).ppt
  2. 计算机读不出来u盘装系统,细说电脑重装系统u盘读不出怎么办
  3. 计算机读不到u盘如何修复u盘,U盘读不出来怎么办?U盘无法读取修复方法
  4. V831——AprilTag标签识别
  5. 命令与征服:红色警戒3 解决游戏启动时界面黑屏,但右上角有五角星电脑卡死的问题——hosts
  6. 电赛 电容触摸串口屏
  7. vue PC端菜单优化(第一个菜单隐藏的时候,整个菜单都不显示)
  8. BBR: Congestion-based congestion control
  9. undefined reference to 的报错原因记录
  10. Tell Me Where to Look: Guided Attention Inference Network论文翻译