Android LocationManager获取经度与纬度等地理信息

利用LocationManager实现定位功能
1 实时更新经度,纬度
2 根据经度和纬度获取地理信息(比如:国家,街道等)(略过)
MainActivity如下:
package cc.bb;
import java.util.Iterator;
import java.util.List;
import android.location.Location;
import android.location.LocationListener;
import android.location.LocationManager;
import android.os.Bundle;
import android.widget.TextView;
import android.app.Activity;
import android.content.Context;
/**
* Demo描述:
* 利用LocationManager实现定位功能
* 1 实时更新经度,纬度
* 2 根据经度和纬度获取地理信息(比如:国家,街道等)(略过)
*
*
* 注意事项:
* 0 在测试GPS定位时最好在较为宽广的空间,否则影响定位
* 1 利用mLocationManager.getLastKnownLocation(GPSProvider)获取Location时常为null.
* 因为设备定位是需要一定时间的,所以把定位逻辑放在LocationManager的requestLocationUpdates()方法
*
* 2 LocationManager.requestLocationUpdates
* (String provider, long minTime, float minDistance, LocationListener listener)
* 第一个参数:位置信息的provider,比如GPS
* 第二个参数:更新位置信息的时间间隔,单位毫秒
* 第三个参数:更新位置信息的距离间隔,单位米
* 第四个参数:位置信息变化时的回调
*
* 3 LocationListener中最重要的回调方法onLocationChanged()
* 当minTime和minDistance同时满足时会调用该方法.文档说明:
* The minDistance parameter can also be used to control the
* frequency of location updates. If it is greater than 0 then the
* location provider will only send your application an update when
* the location has changed by at least minDistance meters, AND
* at least minTime milliseconds have passed.
* 比如间隔时间(minTime)到了3秒并且移动的距离(minDistance)大于了5米
* 那么就会调用该方法.
*
* 4 在Activity的onDestroy()时取消地理位置的更新.
*
*
* 权限配置:
* <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
* <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
* <uses-permission android:name="android.permission.ACCESS_MOCK_LOCATION"/>
* <uses-permission android:name="android.permission.INTERNET"/>
*/
public class MainActivity extends Activity {
private Context mContext;
private TextView mTextView;
private LocationManager mLocationManager;
private LocationListenerImpl mLocationListenerImpl;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
init();
initLocationManager(mContext);
}
private void init(){
mContext=this;
mTextView=(TextView) findViewById(R.id.textView);
}
private void initLocationManager(Context context){
mLocationManager=(LocationManager)context.getSystemService(Context.LOCATION_SERVICE);
//获取可用的位置信息Provider.即passive,network,gps中的一个或几个
List<String> providerList=mLocationManager.getProviders(true);
for (Iterator<String> iterator = providerList.iterator(); iterator.hasNext();) {
String provider = (String) iterator.next();
System.out.println("provider="+provider);
}
//在此采用GPS的方式获取位置信息
String GPSProvider=LocationManager.GPS_PROVIDER;
Location location=mLocationManager.getLastKnownLocation(GPSProvider);
if (location!=null) {
double longitude=location.getLongitude();
double altitude=location.getAltitude();
System.out.println("longitude="+longitude+",altitude="+altitude);
} else {
System.out.println("location==null");
}
//注册位置监听
mLocationListenerImpl=new LocationListenerImpl();
mLocationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 3000, 5, mLocationListenerImpl);
}
private class LocationListenerImpl implements LocationListener{
//当设备位置发生变化时调用该方法
@Override
public void onLocationChanged(Location location) {
if (location!=null) {
showLocation(location);
}
}
//当provider的状态发生变化时调用该方法.比如GPS从可用变为不可用.
@Override
public void onStatusChanged(String provider, int status, Bundle extras) {
}
//当provider被打开的瞬间调用该方法.比如用户打开GPS
@Override
public void onProviderEnabled(String provider) {
}
//当provider被关闭的瞬间调用该方法.比如关闭打开GPS
@Override
public void onProviderDisabled(String provider) {
}
}
private void showLocation(Location location) {
// 获取经度
double longitude = location.getLongitude();
// 获取纬度
double altitude = location.getAltitude();
String message="经度为:"+longitude+"\n"+"纬度为:"+altitude;
mTextView.setText(message);
}
@Override
protected void onDestroy() {
super.onDestroy();
if (mLocationManager!=null) {
mLocationManager.removeUpdates(mLocationListenerImpl);
}
}
}
main.xml如下:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context=".MainActivity" >
<TextView
android:id="@+id/textView"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_centerInParent="true"
android:gravity="center" />
</RelativeLayout>
如有疑问请留言或者到本站社区交流讨论,本站关于Android开发的文章还有很多,希望大家多多搜索查阅,感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!
# Android
# LocationManager
# LocationManager使用方法
# LocationManager如何使用
# Android Location服务之LocationManager案例详解
# Android 模拟地图定位功能的实现
# 一分钟快速定位Android启动耗时问题
# Android如何实现模拟定位
# Android Studio使用Profiler来完成内存泄漏的定位
# 解决Android原生定位的坑
# Android原生定位服务LocationManager
# 回调
# 瞬间
# 几个
# 就会
# 放在
# 第一个
# 在此
# 如有
# 最重要
# 希望能
# 第二个
# 第三个
# 谢谢大家
# 还有很多
# 不可用
# 大家多多
# 疑问请
# 文档
# onLocationChanged
# parameter
相关文章:
活动邀请函制作网站有哪些,活动邀请函文案?
已有域名建站全流程解析:网站搭建步骤与建站工具选择
ppt在线制作免费网站推荐,有什么下载免费的ppt模板网站?
建站之星后台密码遗忘或太弱?如何重置与强化?
如何选择靠谱的建站公司加盟品牌?
建站之星免费版是否永久可用?
桂林网站制作公司有哪些,桂林马拉松怎么报名?
建站之星如何配置系统实现高效建站?
PHP 500报错的快速解决方法
seo网站制作优化,网站SEO优化步骤有哪些?
成都网站制作价格表,现在成都广电的单独网络宽带有多少的,资费是什么情况呢?
北京网站制作的公司有哪些,北京白云观官方网站?
宝塔新建站点报错如何解决?
单页制作网站有哪些,朋友给我发了一个单页网站,我应该怎么修改才能把他变成自己的呢,请求高手指点迷津?
广东专业制作网站有哪些,广东省能源集团有限公司官网?
高性价比服务器租赁——企业级配置与24小时运维服务
常州企业建站如何选择最佳模板?
宝塔建站无法访问?如何排查配置与端口问题?
如何用腾讯建站主机快速创建免费网站?
电商网站制作公司有哪些,1688网是什么意思?
建站主机系统SEO优化与智能配置核心关键词操作指南
装修招标网站设计制作流程,装修招标流程?
如何挑选优质建站一级代理提升网站排名?
公司网站制作价格怎么算,公司办个官网需要多少钱?
开心动漫网站制作软件下载,十分开心动画为何停播?
,怎么在广州志愿者网站注册?
三星网站视频制作教程下载,三星w23网页如何全屏?
c++怎么编写动态链接库dll_c++ __declspec(dllexport)导出与调用【方法】
个人摄影网站制作流程,摄影爱好者都去什么网站?
整人网站在线制作软件,整蛊网站退不出去必须要打我是白痴才能出去?
网站企业制作流程,用什么语言做企业网站比较好?
如何选择PHP开源工具快速搭建网站?
惠州网站建设制作推广,惠州市华视达文化传媒有限公司怎么样?
建站主机与服务器功能差异如何区分?
实例解析angularjs的filter过滤器
沈阳制作网站公司排名,沈阳装饰协会官方网站?
如何通过VPS建站实现广告与增值服务盈利?
如何在Windows服务器上快速搭建网站?
如何快速查询域名建站关键信息?
代刷网站制作软件,别人代刷火车票靠谱吗?
用v-html解决Vue.js渲染中html标签不被解析的问题
标准网站视频模板制作软件,现在有哪个网站的视频编辑素材最齐全的,背景音乐、音效等?
贸易公司网站制作流程,出口贸易网站设计怎么做?
视频网站app制作软件,有什么好的视频聊天网站或者软件?
一键制作网站软件下载安装,一键自动采集网页文档制作步骤?
Android滚轮选择时间控件使用详解
网站制作话术技巧,网站推广做的好怎么话术?
手机钓鱼网站怎么制作视频,怎样拦截钓鱼网站。怎么办?
如何快速辨别茅台真假?关键步骤解析
建站主机选购指南:核心配置优化与品牌推荐方案
*请认真填写需求信息,我们会在24小时内与您取得联系。