Android 定位服务
//Edited by mythou //http://www.cnblogs.com/mythou/ //获取定位服务 LocationManager locationManager = (LocationManager) this.getSystemService(Context.LOCATION_SERVICE); //判断是否已经打开GPS模块 if (locationManager.isProviderEnabled(android.location.LocationManager.GPS_PROVIDER)) { //GPS模块打开,可以定位操作 } // 通过GPS定位 String LocateType= locationManager.GPS_PROVIDER; Location location = locationManager.getLastKnownLocation(LocateType); // 设置监听器,设置自动更新间隔这里设置1000ms, 移动距离:0米。 locationManager.requestLocationUpdates(provider, 1000, 0, locationListener); // 设置状态监听回调函数。statusListener是监听的回调函数。 locationManager.addGpsStatusListener(statusListener); //另外给出 通过network定位设置 String LocateType= locationManager.NETWORK_PROVIDER; Location location = locationManager.getLastKnownLocation(LocateType); |
//Edited by mythou //http://www.cnblogs.com/mythou/ private final GpsStatus.Listener statusListener = new GpsStatus.Listener() { public void onGpsStatusChanged(int event) { // GPS状态变化时的回调,获取当前状态 GpsStatus status = locationManager.getGpsStatus(null); //自己编写的方法,获取卫星状态相关数据 GetGPSStatus(event, status); } }; |
//Edited by mythou //http://www.cnblogs.com/mythou/ private void GetGPSStatus(int event, GpsStatus status) { Log.d(TAG, "enter the updateGpsStatus()"); if (status == null) { } else if (event == GpsStatus.GPS_EVENT_SATELLITE_STATUS) { //获取最大的卫星数(这个只是一个预设值) int maxSatellites = status.getMaxSatellites(); Iterator<GpsSatellite> it = status.getSatellites().iterator(); numSatelliteList.clear(); //记录实际的卫星数目 int count = 0; while (it.hasNext() && count <= maxSatellites) { //保存卫星的数据到一个队列,用于刷新界面 GpsSatellite s = it.next(); numSatelliteList.add(s); count++; Log.d(TAG, "updateGpsStatus----count="+count); } mSatelliteNum = numSatelliteList.size(); } else if(event==GpsStatus.GPS_EVENT_STARTED) { //定位启动 } else if(event==GpsStatus.GPS_EVENT_STOPPED) { //定位结束 } } |
//Edited by mythou //http://www.cnblogs.com/mythou/ private final LocationListener locationListener = new LocationListener() { public void onLocationChanged(Location location) { //当坐标改变时触发此函数,如果Provider传进相同的坐标,它就不会被触发 updateToNewLocation(location); Log.d(TAG, "LocationListener onLocationChanged"); } public void onProviderDisabled(String provider) { //Provider被disable时触发此函数,比如GPS被关闭 Log.d(TAG, "LocationListener onProviderDisabled"); } public void onProviderEnabled(String provider) { // Provider被enable时触发此函数,比如GPS被打开 Log.d(TAG, "LocationListener onProviderEnabled"); } public void onStatusChanged(String provider, int status, Bundle extras) { Log.d(TAG, "LocationListener onStatusChanged"); // Provider的转态在可用、暂时不可用和无服务三个状态直接切换时触发此函数 if (status == LocationProvider.OUT_OF_SERVICE || status == LocationProvider.TEMPORARILY_UNAVAILABLE) { } } }; |
//Edited by mythou //http://www.cnblogs.com/mythou/ //location对象是从上面定位服务回调函数的参数获取。 mLatitude = location.getLatitude(); // 经度 mLongitude = location.getLongitude(); // 纬度 mAltitude = location.getAltitude(); //海拔 mSpeed = location.getSpeed(); //速度 mBearing = location.getBearing(); //方向 |
//Edited by mythou //http://www.cnblogs.com/mythou/ //temgGpsSatellite就是我们上面保存的搜索到的卫星 //方向角 float azimuth = temgGpsSatellite.getAzimuth(); //高度角 float elevation = temgGpsSatellite.getElevation(); //信噪比 float snr = temgGpsSatellite.getSnr(); |
//Edited by mythou //http://www.cnblogs.com/mythou/ //根据方向角和高度角计算出,卫星显示的位置 Point point = new Point(); int x = mEarthHeartX; //左边地球圆形的圆心位置X坐标 int y = mEarthHeartY; //左边地球圆形的圆心位置Y坐标 int r = mEarthR; x+=(int)((r*elevation*Math.sin(Math.PI*azimuth/180)/90)); y-=(int)((r*elevation*Math.cos(Math.PI*azimuth/180)/90)); point.x = x; point.y = y; //point就是你需要绘画卫星图的起始坐标 |

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
连接API:如何将iOS和JSON框架集成
连接API和设备的标准格式是使用JSON结构的包。JSON框架是JavaScript模型,适用于创建结构化数据的数据包。 还有其他格式——OData、SOAP、XML,但是JSON是其中的领导者。 Apple iOS现在支持Objective-C和Swif这两种不同的开发语言,可以用来创建解决方案。 好消息是可以使用由任一语言编写的框架并且在项目间共享。这意味着用户可以在Swift项目里使用更老的Objective-C框架。在iOS上连接JSON框架需要两步:首先,确定将要使用的API,然后解析JSON。 连接JSON API 在Xcode上开发的项目中拉取API时,第一步需要做的是连接到API。连接到API要求NSJSONSerialization类。该类在Objective-C和Swift上都可以工作。 如何在iOS框架里解析JSON 可以编写代码将JSON API集成进项目里,或者加速开发,可以使用如下框架(所有这些都可以在这里找到) JSONModel —— 一个Objective-C框架JSONAPI-ios——一个Objective-C框架ObjectMapper —— 一...
- 下一篇
Facebook宣布进一步推广Live Video功能
摘要:日前,Facebook官方刊文称,他们将在美国进一步推广Live Video这项直播功能。Live Video是Facebook在去年12月推出的一项可以让用户在其平台上做视频直播的功能。几周后,世界其他市场的用户也将迎来这项功能。另外,Facebook还表示,他们现已经开始了Android客户端的开发工作。 据悉,如果用户想要分享直播视频则要点击Update Status(更新状态)然后选择当中的Live Video图标。这时候,用户可以为快速直播写一个描述并选择目标观众。在直播过程中,用户可以看到观看的人数、观看直播和实时评论的好友名字。当直播结束后,用户还能将这段视频保存到Timeline中,就像其他视频一样,当然也可以删除或转发给好友。 而作为观众的用户则能选择订阅该直播,未来等到有新直播的时候就会有收到通知。 本文转自d1net(转载)
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
-
Docker使用Oracle官方镜像安装(12C,18C,19C)
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池
- Docker快速安装Oracle11G,搭建oracle11g学习环境
- CentOS8编译安装MySQL8.0.19
- SpringBoot2配置默认Tomcat设置,开启更多高级功能
- MySQL8.0.19开启GTID主从同步CentOS8
- CentOS7,8上快速安装Gitea,搭建Git服务器
- Jdk安装(Linux,MacOS,Windows),包含三大操作系统的最全安装
- SpringBoot2编写第一个Controller,响应你的http请求并返回结果
推荐阅读
最新文章
- Mario游戏-低调大师作品
- SpringBoot2编写第一个Controller,响应你的http请求并返回结果
- CentOS6,7,8上安装Nginx,支持https2.0的开启
- MySQL8.0.19开启GTID主从同步CentOS8
- SpringBoot2初体验,简单认识spring boot2并且搭建基础工程
- CentOS7设置SWAP分区,小内存服务器的救世主
- Jdk安装(Linux,MacOS,Windows),包含三大操作系统的最全安装
- CentOS6,CentOS7官方镜像安装Oracle11G
- CentOS8编译安装MySQL8.0.19
- Hadoop3单机部署,实现最简伪集群