- 浏览: 580996 次
- 性别:
- 来自: 广州
文章分类
- 全部博客 (205)
- android (78)
- spring MVC (10)
- spring (3)
- javascript (9)
- 喧泄 (0)
- libgdx (1)
- android View展现特效 (6)
- android.graphics.* (2)
- android ListView (4)
- android 电话及短信 (3)
- iPhone (4)
- iPhone自定义控件 (2)
- android 网文摘记 (4)
- java (30)
- android imageView (2)
- android textView EditText (1)
- 用户体验元素 (1)
- 营销推广 (3)
- android 多媒体 (4)
- android原创学习笔记 (7)
- 业余收入 (1)
- AndEngine (3)
- baidu map (3)
- android课程 (3)
- elasticsearch (1)
- freeSwitch (5)
最新评论
-
牵着蚂蚁散步:
哥,在吗,你现在操作freeswitch是用event soc ...
java esl连接freeswitch发送拨打电话<第二篇> -
白天看黑夜:
java过滤emoji字符处理,希望能帮到你http://ww ...
过滤特殊字符及表情符 -
YLCCMM:
按照楼主这样是可以页面是可以完成效果,但是后台依旧会报错打印出 ...
spring mvc CommonsMultipartResolver文件上传maxUploadSize限制大小 -
喧嚣求静:
sunshaoqun 写道二次元 写道希望能分享下.so文件编 ...
手机录音-amr -
sunshaoqun:
二次元 写道希望能分享下.so文件编译源码!求.so源码。。。 ...
手机录音-amr
实现功能:定位当前位置并显示详细信息,扩展了googleMap地图
package com.ld.gps; import java.util.List; import java.util.Locale; import android.app.Activity; import android.content.Context; import android.content.Intent; import android.location.Address; import android.location.Criteria; import android.location.Geocoder; import android.location.Location; import android.location.LocationListener; import android.location.LocationManager; import android.os.Bundle; import android.provider.Settings; import android.widget.TextView; import android.widget.Toast; public class AppLocationGpsActivity extends Activity { private static final int TWO_MINUTES = 1000 * 60 * 2; private LocationManager locationManager; private String providerName; private Location currentBestLocation; private Location location; private Address address; /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); // 获取 LocationManager 服务 locationManager = (LocationManager) this.getSystemService(Context.LOCATION_SERVICE); // 获取 Location Provider providerName=getProviderName(); // 如果未设置位置源,打开 GPS 设置界面 openGPS(); // 获取位置 currentBestLocation= locationManager.getLastKnownLocation(providerName); location=new Location(LocationManager.GPS_PROVIDER); if(isBetterLocation(location,currentBestLocation)){ // 显示位置信息到文字标签 updateWithNewLocation(location); providerName=location.getProvider(); }else{ // 显示位置信息到文字标签 updateWithNewLocation(currentBestLocation); } // 注册监听器 locationListener ,第 2 、 3 个参数可以控制接收 gps 消息的频度以节省电力。第 2 个参数为毫秒, // 表示调用 listener 的周期,第 3 个参数为米 , 表示位置移动指定距离后就调用 listener locationManager.requestLocationUpdates(providerName, 2000, 10,locationListener); } // 判断是否开启 GPS ,若未开启,打开 GPS 设置界面 private void openGPS() { if (locationManager .isProviderEnabled(android.location.LocationManager.GPS_PROVIDER) || locationManager .isProviderEnabled(android.location.LocationManager.NETWORK_PROVIDER) ) { Toast.makeText(this, " 位置源已设置! ", Toast.LENGTH_SHORT).show(); return; } Toast.makeText(this, " 位置源未设置! ", Toast.LENGTH_SHORT).show(); // 转至 GPS 设置界面 Intent intent = new Intent(Settings.ACTION_SECURITY_SETTINGS); startActivityForResult(intent, 0); } // 获取 Location Provider private String getProviderName() { // 构建位置查询条件 Criteria criteria = new Criteria(); // 查询精度:高 criteria.setAccuracy(Criteria.ACCURACY_FINE); // 是否查询海拨:否 criteria.setAltitudeRequired(false); // 是否查询方位角 : 否 criteria.setBearingRequired(false); // 是否允许付费:是 criteria.setCostAllowed(true); // 电量要求:低 criteria.setPowerRequirement(Criteria.POWER_LOW); // 返回最合适的符合条件的 provider ,第 2 个参数为 true 说明 , 如果只有一个 provider 是有效的 , 则返回当前 // provider return locationManager.getBestProvider(criteria, true); } // Gps 消息监听器 private final LocationListener locationListener = new LocationListener() { // 位置发生改变后调用 public void onLocationChanged(Location location) { updateWithNewLocation(location); } // provider 被用户关闭后调用 public void onProviderDisabled(String provider) { updateWithNewLocation(null); } // provider 被用户开启后调用 public void onProviderEnabled(String provider) { } // provider 状态变化时调用 public void onStatusChanged(String provider, int status, Bundle extras) { } }; // Gps 监听器调用,处理位置信息 private void updateWithNewLocation(Location location) { String latLongString; TextView myLocationText = (TextView) findViewById(R.id.text); if (location != null) { double lat = location.getLatitude(); double lng = location.getLongitude(); latLongString = " 纬度 :" + lat + "\n 经度 :" + lng; } else { latLongString = " 无法获取地理信息 "; } List<Address> addrList=getAddressbyGeoPoint(location); String addr="当前详细地址:"; if(addrList!=null && !addrList.isEmpty()) addr+=parseAddr(addrList.get(0)); myLocationText.setText(" 您当前的位置是 :\n" + latLongString + "\n" + addr); } private String parseAddr(Address address){ return address.getAddressLine(0)+address.getAddressLine(1)+address.getAddressLine(2)+address.getFeatureName(); } // 获取地址信息 private List<Address> getAddressbyGeoPoint(Location location) { List<Address> result = null; // 先将 Location 转换为 GeoPoint // GeoPoint gp =getGeoByLocation(location); try { if (location != null) { // 获取 Geocoder ,通过 Geocoder 就可以拿到地址信息 Geocoder gc = new Geocoder(this, Locale.getDefault()); result = gc.getFromLocation(location.getLatitude(), location.getLongitude(), 1); } } catch (Exception e) { e.printStackTrace(); } return result; } /** * Determines whether one Location reading is better than the current * Location fix * * @param location * The new Location that you want to evaluate * @param currentBestLocation * The current Location fix, to which you want to compare the new * one */ protected boolean isBetterLocation(Location location, Location currentBestLocation) { if (currentBestLocation == null) { // A new location is always better than no location return true; } // Check whether the new location fix is newer or older long timeDelta = location.getTime() - currentBestLocation.getTime(); boolean isSignificantlyNewer = timeDelta > TWO_MINUTES; boolean isSignificantlyOlder = timeDelta < -TWO_MINUTES; boolean isNewer = timeDelta > 0; // If it's been more than two minutes since the current location, use // the new location // because the user has likely moved if (isSignificantlyNewer) { return true; // If the new location is more than two minutes older, it must be // worse } else if (isSignificantlyOlder) { return false; } // Check whether the new location fix is more or less accurate int accuracyDelta = (int) (location.getAccuracy() - currentBestLocation .getAccuracy()); boolean isLessAccurate = accuracyDelta > 0; boolean isMoreAccurate = accuracyDelta < 0; boolean isSignificantlyLessAccurate = accuracyDelta > 200; // Check if the old and new location are from the same provider boolean isFromSameProvider = isSameProvider(location.getProvider(), currentBestLocation.getProvider()); // Determine location quality using a combination of timeliness and // accuracy if (isMoreAccurate) { return true; } else if (isNewer && !isLessAccurate) { return true; } else if (isNewer && !isSignificantlyLessAccurate && isFromSameProvider) { return true; } return false; } /** Checks whether two providers are the same */ private boolean isSameProvider(String provider1, String provider2) { if (provider1 == null) { return provider2 == null; } return provider1.equals(provider2); } }
- AppLocationGps.rar (70 KB)
- 下载次数: 187
发表评论
-
Android动态改变shape填充颜色
2017-04-10 16:19 1780工作中需要依据不同的银行卡显示不同背景,由于银行很多,不可能 ... -
android studio源码关联
2016-12-19 11:36 841在android stuido开发工具中,源码的关联是依据当 ... -
仿支付宝广告-顶部往下掉的popwindow,消失在左上角
2016-09-13 16:43 2163最近玩支付宝,有时候打开时,会从顶部掉下一个营销的广告窗口, ... -
圆形进度条-倒计时
2016-09-08 15:28 983参考了:https://github.com/yanz ... -
Android 6.0 运行时权限处理完全解析-兼容
2016-07-21 10:12 5851.项目增加V7包,*Activity extends Ap ... -
安卓自定义进度条样式-layer-list
2016-07-06 09:32 1542//在开发中常用到的知识点,太多了,记不住,只能放网上做笔记 ... -
转载-Android系统支持的CPU架构
2016-06-30 10:12 4788原文链接 早期的Android系统几乎只支持ARMv5的C ... -
安卓通用baseAdapter数据适配器
2016-06-29 16:28 799用法 topFourFuncAdapter=new Ab ... -
android 编译dex,方法数限制65536
2016-06-21 15:40 1269产生原因,大致是android在编译dex后,进行优化时,使 ... -
android 5.1模拟器安装apk报INSTALL_FAILED_NO_MATCHING_ABIS
2016-06-12 16:08 3127android 5.1模拟器安装apk报INSTALL_FA ... -
android 自定义软键盘-转载
2016-06-08 15:45 879场景: 1.支付控件时,需要随机布局软键盘 2. 电视机 ... -
html5-android-转载
2016-05-26 20:32 777(上)包括Android设备多分辨率的问题,Android中 ... -
android代码编写ColorStateList
2015-12-26 16:48 1051private void initViews() { ... -
Android资源图片读取机制-转载
2015-11-09 20:42 970在新建一个Android项目时,在res目录下会自动生成几个 ... -
移动端h5开源框架
2015-09-23 10:44 7199Amaze UI 含近 20 个 CSS 组件、20 ... -
Android基于volley的快速开发基类
2015-08-29 10:02 1649Volley框架至2013面试以来,已经普及了很多andro ... -
android QQ互联第三方登录开发
2015-08-26 17:14 4204android QQ互联第三方登录开发 背景: 当前基 ... -
android array.xml中使用图片和颜色资源
2015-08-23 11:17 3180<?xml version="1.0& ... -
开源新闻客户端QuickNews学习
2015-08-20 14:11 2549开源新闻客户端QuickNews学习 先贴出源码地址 h ... -
转载-ViewPagerindicator 源码解析
2015-08-12 20:27 931ViewPagerindicator 源码解析
相关推荐
总的来说,Android Google 位置定位服务通过LocationRequest、LocationCallback或FusedLocationProviderClient提供了高效、准确的位置信息获取方式。在实际应用中,开发者需要考虑权衡定位精度、更新频率与电池消耗...
在Android开发中,集成Google Maps SDK和Google Location SDK是实现地图展示、定位功能的重要环节。本文将详细讲解如何使用这两个SDK来实现相应的功能,并提供一些关键知识点。 首先,我们需要在项目中添加Google ...
在Android平台上,使用百度地图API实现定位用户自身位置是一项常见的需求。这涉及到移动开发、地理信息系统(GIS)以及网络服务的集成。以下是一些关于如何在Android应用中使用百度地图API来定位用户位置的关键知识...
Android WiFi LBS(Location-Based Services,基于位置的服务)定位是通过结合WiFi网络信号和移动通信基站信息来确定设备的位置。这种定位方式在GPS信号不可用或者信号弱的室内环境尤为实用。下面将详细介绍Android ...
【ArcGIS For Android Location Demo】是一个基于Android Studio开发的示例项目,它利用Esri的ArcGIS for Android 10.2.6 SDK,展示了如何在Android设备上集成和使用地理定位功能。这个Demo旨在帮助开发者理解如何在...
在Android平台上,获取设备位置信息是一项关键功能,通常可以通过GPS(全球定位系统)和基站定位两种方式实现。本文将深入探讨这两种方法,并结合提供的源码分析其工作原理和实现细节。 1. GPS定位: GPS定位是...
在Android系统中,Location服务是开发者获取设备地理位置信息的关键组件。这个服务允许应用程序访问GPS(全球定位系统)、网络定位(如Wi-Fi和移动网络)以及其他传感器数据,来确定设备的位置。在"Android Location...
在Android平台上,获取GPS定位是移动应用开发中的基础功能,尤其对于那些依赖地理位置信息的应用,如导航、社交、天气预报等。本示例程序"LocationDemo"是专门为开发者设计的,用于展示如何在Android Studio环境下...
总结,Android Studio定位涉及了Google Play服务的Location API,FusedLocationProviderClient的使用,权限管理,位置请求与更新,以及异常处理和优化。开发者需要理解这些基础知识,并结合实际应用需求进行合理配置...
在Android应用开发中,位置服务是一项至关重要的功能,它允许应用程序获取设备的地理位置信息,用于导航、定位服务、社交应用等多种用途。`Android_Location_V1.3.0.jar` 文件是针对这一需求的一个特定版本的库,...
总的来说,掌握Android平台上的GPS定位技术,以及如何解决location为null的问题,对于构建涉及位置服务的应用至关重要。这不仅要求开发者理解定位机制,还需要熟悉Android的权限管理和异常处理,从而提供稳定且用户...
在Android平台上,实现简单的定位功能是一项常见的任务,它涉及到Android系统的地理位置服务,主要依赖于GPS(全球定位系统)以及网络定位技术。本实例将详细解析如何在Android应用中集成定位功能,让应用能够获取到...
在Android开发中,获取GPS定位数据是常见的需求,主要用于实现地图导航、位置服务等功能。本文将详细介绍如何通过源代码在Android设备上获取GPS定位信息,并将其存储到SQLite本地数据库中。 首先,Android系统提供...
在Android平台上,实现“后台定时定位”涉及到多个关键知识点,包括Android服务(Service)、位置API、后台运行限制以及电量和性能优化。以下是对这些概念的详细说明: 1. **Android服务(Service)**:Android ...
同时,为了优化用户体验,还可以结合Google Play服务的Fused Location Provider API,根据设备状态智能选择最合适的定位服务。 总的来说,“Android-Android定位基于百度基础定位sdk封装”项目是Android开发者快速...
这个“Android项目GPS实时定位位置共享源码”提供了一个完整的解决方案,经过实际测试,利用了百度地图API来获取和展示用户的位置信息。 首先,我们要了解Android中的定位服务。Android系统提供了多种定位方式,...
在Android平台上,仿微信发送位置是一项常见的功能,它涉及到地理定位、地图显示、以及与服务器交互等多个技术领域。本文将详细解析如何在Android应用中实现类似微信的位置分享功能。 首先,我们需要了解Android中...
在Android开发中,获取地理位置是常见的需求,网络定位是一种常用的方法。本篇文章将详细解析如何在Android中封装一个网络定位工具类,以便快速、高效地获取到设备的经纬度坐标。 首先,我们要引入必要的依赖。在`...