第一行代码-11.1 找到自己的位置
来源:互联网 发布:数据库表格模板 编辑:程序博客网 时间:2024/06/07 01:15
在Android中,要想获取自己的位置,通过LocationManager就可以实现了,下面介绍它的用法,还是先通过代码来了解:
private TextView mTVPosition;private LocationManager locationManager;private String provider;@Overrideprotected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); mTVPosition = (TextView) findViewById(R.id.position_text_view); locationManager = (LocationManager) getSystemService(LOCATION_SERVICE); // 获取所有可用的位置提供器 List<String> providerList = locationManager.getProviders(true); if (providerList.contains(LocationManager.GPS_PROVIDER)) { provider = LocationManager.GPS_PROVIDER; } else if (providerList.contains(LocationManager.NETWORK_PROVIDER)) { provider = LocationManager.NETWORK_PROVIDER; } else { // 当没有可用的位置提供器时,弹出Toast提示用户 Toast.makeText(this, "没有可用的位置提供器!", Toast.LENGTH_SHORT).show(); return ; } Location location = locationManager.getLastKnownLocation(provider); if (location != null) { // 显示当前设备的位置信息 showLocation(location); } locationManager.requestLocationUpdates(provider, 5000, 1, locationListener);}@Overrideprotected void onDestroy() { if (locationManager != null) { locationManager.removeUpdates(locationListener); } super.onDestroy();}LocationListener locationListener = new LocationListener() { @Override public void onStatusChanged(String arg0, int arg1, Bundle arg2) { } @Override public void onProviderEnabled(String arg0) { } @Override public void onProviderDisabled(String arg0) { } @Override public void onLocationChanged(Location location) { // 更新当前设备的位置信息 showLocation(location); }};private void showLocation(Location location) { String currentPosition = "latitude is " + location.getLatitude() + "\n" + "longitude is " + location.getLongitude(); Toast.makeText(MainActivity.this, currentPosition, Toast.LENGTH_SHORT).show(); mTVPosition.setText(currentPosition);}
可以看到,我们首先获取可用的位置提供商,然后就可以通过locationManager.getLastKnownLocation(provider)来获取最近手机的位置。但是如果手机在移动,我们想实时获取手机最新的位置,就要添加LocationListener,也就是监听器。requestLocationUpdates的第二个参数的意思是时间间隔是5秒,第三个参数意思是位置间隔是1米。设置了监听器之后,还要在onDestroy函数中移除,以保证不会获取手机过多的电量。
实现效果:自己的手机开启GPS之后并不能获取位置,暂时不知道原因。
0 0
- 第一行代码-11.1 找到自己的位置
- 第一行代码笔记,第十一章------位置的探究
- 第一行代码—基于位置的服务笔记
- Android 定制自己的日志工具 《第一行代码》
- 第一行代码总结:13.3定制自己的日志工具
- 第一行代码-7.3 创建自己的内容提供器
- 第一行代码-13.3 定制自己的日志工具
- 基于位置的服务之如何找到自己的位置
- 基于位置的服务之如何找到自己的位置
- Hadoop的第一行代码
- Kotlin的第一行代码
- 《第一行代码Android》学习日记19——基于位置的服务
- 《第一行代码》读书笔记:第十一章/位置服务
- 阅读郭林《第一行代码》的笔记——第11章 Android特色开发,基于位置的服务
- 第一行代码(第二版)之定制自己的日志控制工具
- 留下是因为找到了自己的位置
- 我的第一行PHP代码
- 第一行代码:通知的使用总结
- 微博分布式存储考试题:案例讲解及作业精选
- UITableView表索引的颜色设置
- bzoj3190 赛车 半平面交
- java中常用的字符串的截取方法
- android app如何做到快速启动
- 第一行代码-11.1 找到自己的位置
- 强连通分量模板
- iOS开发将支付宝导入到工程师出现的错误‘openssl/ asn1.h’file not found的解决方法
- Java对readis的基本操作
- XMPP的简单介绍
- 开源中国 Maven 库使用帮助
- Qt creator 调试器未设置 unkown debugger type
- Quartz2D 学习札记
- 使用ssh连接centos出现密钥错误的解决方法