相机中使用GPS和网络定位获取用户拍照时的地理位置(共9页).doc
《相机中使用GPS和网络定位获取用户拍照时的地理位置(共9页).doc》由会员分享,可在线阅读,更多相关《相机中使用GPS和网络定位获取用户拍照时的地理位置(共9页).doc(9页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、精选优质文档-倾情为你奉上相机中使用定位服务获取拍照时的地理位置M厂产品软件部 邹建敏一、基础知识现代智能手机的一个重要功能就是定位,当用户在使用相机拍照时如果能够记录当前照片拍摄时的地理位置信息,并且按照不同的地理位置把照片分成不同的文件夹,对于喜欢旅游和拍照的用户来说这是一个很好的体验。在Android手机中通过定位获取地理位置一般有以下几种方式: 1、 GPS或AGPS:使用GPS定位需要在室外使用,在室内是接受不到GPS卫星信号,也当然不能定位。GPS使用一个卫星群将地点和时间数据从太空直接发送到你的手机上。如果手机接收来自3个卫星的信号,那么它可以显示你在地图上的方位,如果手机可以接
2、收4个卫星的信号,它还可以显示出你的海拔。在室内由于接受不到GPS卫星信号,可以使用AGPS(辅助GPS)定位,它的原理和GPS定位的不同点在于AGPS是通过使用数据网络(GPRS、3G等)或者Wi-Fi向GPS卫星发送定位数据,所以使用AGPS需要网络支持,而GPS不需要网络。2、 基站定位:由于运营商的每个基站都有确定的编号和位置,运营商可以根据用户当前使用的基站与周围基站的距离来确定用户的当前的位置,所以基站定位在基站分布密集的城市定位更精确。3、 Wi-Fi定位:原理与基站定位相同,主要区别在于Wi-Fi定位使用的是用户当前接入点的位置,由于Wi-Fi的覆盖区域更小,所以它的精确度更高
3、。 后两种定位方式由于需要网络的支持,所以在Android SDK中统一为基于网络的定位即网络定位。二、 如何使用定位服务获取地理位置结束监听获取和使用最新的位置信息开启位置服务监听实现监听器的接口(LocationListener)获取位置服务的LocationManager取位置服务管理器(LocationManager)理器(LocationManager)在Android手机的应用中使用定位服务,一般有以下几个步骤:专心-专注-专业下面结合11071项目相机中GPS定位和网络定位来了解在手机应用中怎么获取当前的地理位置。1、 获取定位服务的LocationManager/定义Locat
4、ionManager对象private LocationManager mLocationManager = null; /通过getSystemService()方法获取LocationManagerif (null = mLocationManager) mLocationManager = (LocationManager)getSystemService(Context.LOCATION_SERVICE);2、 实现监听器的接口(android.location.LocationListener),其中有些重要的变量和函数如下:/实现接口的内部类变量 Location mLastLoc
5、ation; /定义Location对象String mProvider; /获取Location的Providerboolean mValid = false; /标志获取的Location是否有效/内部类的构造函数,需要参数provider,provider一般有两种: LocationManager.GPS_PROVIDER和LocationManager.NETWORK_PROVIDERpublic LocationListener(String provider) mProvider = provider; /设置provider(定位方式) mLastLocation = new
6、Location(mProvider); /创建Location对象/当获取到新位置或者位置发生变化时调用,public void onLocationChanged(Location newLocation) /判断获取到的位置是否合法if (newLocation.getLatitude() = 0.0 &newLocation.getLongitude() = 0.0) return;/当获取到的位置合法时,通过Location的set()方法更新位置mLastLocation.set(newLocation);mValid = true;/获取当前最新的位置对象,首先判断当前的Loca
7、tion是否合法,如果合法则返回Location对象,否则返回Null/定义LocationListener对象3、开启位置服务监听,使用方法startReceivingLocationUpdates(),如下所示:protected void startReceivingLocationUpdates() CameraLog.v(TAG, startReceivingLocationUpdates();if (null = mLocationManager) return;/判断是否打开GPS开关if (mLocationManager.isProviderEnabled(LocationM
8、anager.GPS_PROVIDER) try /开始要求更新位置信息,使用GPS定位方式mLocationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER,5000,0F,mLocationListeners0); catch (java.lang.SecurityException ex) CameraLog.v(TAG, Fail to request location update, ignore., ex); catch (IllegalArgumentException ex) CameraLog.v(TAG,
9、 GPS provider does not exist. + ex.getMessage();/检测当前手机网络是否可用if (checkInternet() /判断使用网络方式获取位置的开关是否打开if (mLocationManager.isProviderEnabled(LocationManager.NETWORK_PROVIDER) try /开始要求更新位置信息,使用网络定位方式mLocationManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER,5000,0F,mLocationListeners1);
10、 catch (java.lang.SecurityException ex) CameraLog.v(TAG, Fail to request location update, ignore., ex); catch (IllegalArgumentException ex) CameraLog.v(TAG, Network provider does not exist. + ex.getMessage();在上面的代码中使用到一个重要的函数来更新位置:LocationManager.requestLocationUpdates(String provider, long minTime,
11、 float minDistance, LocationListener listener),该方法的作用是通过给定的provider名称,并将其绑定指定的LocationListener监听器,周期性的更新位置信息,其中第一个参数是provider名称即定位的方式,一般为GPS和NetWork两种,第二个参数是更新位置的时间,单位是毫秒,第三个是更新的距离,单位是米,第四个参数是位置服务的监听。4、 获取和使用最新的位置信息,主要工作是如何把已经获取到的位置信息(经度和纬度)设置到照片中和保存到数据库中(1) 获取最新的位置信息,主要方法是getCurrentLocation(),改方法返回
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 相机 使用 GPS 网络 定位 获取 用户 拍照 地理位置
限制150内