【Android】18.2 利用百度定位服务API实现位置跟踪
分类:C#、Android、VS2015;
创建日期:2016-03-04
一、简介
第3章已经介绍过百度定位SDK,这里再演示一遍其基本用法。
二、示例2—百度定位服务基本用法
运行截图
设计步骤
1、添加ch1802Main.xml文件
- <?xml version="1.0" encoding="utf-8"?>
- <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
- android:orientation="vertical"
- android:layout_width="fill_parent"
- android:layout_height="fill_parent">
- <TextView
- android:textAppearance="?android:attr/textAppearanceSmall"
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:id="@+id/location_info"
- android:layout_marginLeft="10dp"
- android:layout_marginRight="10dp" />
- <com.baidu.mapapi.map.TextureMapView
- android:id="@+id/bmapView"
- android:layout_width="fill_parent"
- android:layout_height="fill_parent"
- android:clickable="true" />
- </LinearLayout>
2、添加ch1802MainActivity.cs文件
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- using Android.App;
- using Android.OS;
- using Android.Widget;
- using Android.Content.PM;
- using Com.Baidu.Location;
- using Com.Baidu.Mapapi.Map;
- using Com.Baidu.Mapapi.Model;
- namespace MyDemos.SrcDemos
- {
- [Activity(Label = "【例18-2】百度定位服务基本用法",
- ScreenOrientation = ScreenOrientation.Sensor,
- ConfigurationChanges = ConfigChanges.Orientation | ConfigChanges.KeyboardHidden)]
- public class ch1802MainActivity : Activity, IBDLocationListener
- {
- TextView locationInfo;
- LocationClient mLocationClient;
- TextureMapView mMapView;
- BaiduMap mBaiduMap;
- bool isFirstLoc = true;// 是否首次定位
- protected override void OnCreate(Bundle savedInstanceState)
- {
- base.OnCreate(savedInstanceState);
- SetContentView(Resource.Layout.ch1802Main);
- locationInfo = FindViewById<TextView>(Resource.Id.location_info);
- // 地图初始化
- mMapView = FindViewById<TextureMapView>(Resource.Id.bmapView);
- mBaiduMap = mMapView.Map;
- // 开启定位图层
- mBaiduMap.MyLocationEnabled = true;
- // 定位初始化
- mLocationClient = new LocationClient(this);
- mLocationClient.RegisterLocationListener(this);
- InitLocation();
- mLocationClient.Start();
- MyLocationConfiguration.LocationMode mCurrentMode = MyLocationConfiguration.LocationMode.Compass;
- BitmapDescriptor mCurrentMarker = null;
- mBaiduMap.SetMyLocationConfigeration(
- new MyLocationConfiguration(mCurrentMode, true, mCurrentMarker));
- }
- private void InitLocation()
- {
- LocationClientOption option = new LocationClientOption();
- //可选,默认true,定位SDK内部是一个SERVICE,并放到了独立进程,设置是否在stop的时候杀死这个进程,默认不杀死
- option.IsIgnoreKillProcess = false;
- //可选,默认false,设置是否需要过滤gps仿真结果,默认需要
- option.EnableSimulateGps = true;
- mLocationClient.LocOption = option;
- }
- //实现接口
- public void OnReceiveLocation(BDLocation p0)
- {
- // map view 销毁后不再处理新接收的位置
- if (p0 == null || mMapView == null) return;
- #region 模拟位置
- //注意:在手机上运行应注释掉这段代码,否则定位就没有意义了
- p0 = new BDLocation();
- p0.LocationDescribe = "模拟的位置,目的是为了在模拟器中查看运行效果";
- p0.Radius = 50;
- p0.Latitude = MainActivity.MyLatLng.Latitude;
- p0.Longitude = MainActivity.MyLatLng.Longitude;
- #endregion 模拟位置
- MyLocationData locData = new MyLocationData.Builder()
- .Accuracy(p0.Radius)
- // 此处设置开发者获取到的方向信息,顺时针0-360
- .Direction(100).Latitude(p0.Latitude)
- .Longitude(p0.Longitude).Build();
- mBaiduMap.SetMyLocationData(locData);
- if (isFirstLoc)
- {
- isFirstLoc = false;
- LatLng ll = new LatLng(p0.Latitude, p0.Longitude);
- MapStatusUpdate u = MapStatusUpdateFactory.NewLatLng(ll);
- mBaiduMap.AnimateMapStatus(u);
- }
- StringBuilder sb = new StringBuilder();
- sb.AppendLine("latitude : " + p0.Latitude);
- sb.AppendLine("lontitude : " + p0.Longitude);
- sb.AppendLine("radius : " + p0.Radius);
- switch (p0.LocType)
- {
- case BDLocation.TypeGpsLocation:
- // GPS定位结果
- sb.AppendLine("speed : " + p0.Speed);// 单位:公里/每小时
- sb.AppendLine("satellite : " + p0.SatelliteNumber);
- sb.AppendLine("height : " + p0.Altitude);// 单位:米
- sb.AppendLine("direction : " + p0.Direction);// 单位度
- sb.AppendLine("addr : " + p0.AddrStr);
- sb.AppendLine("describe : gps定位成功");
- break;
- case BDLocation.TypeNetWorkLocation:
- // 网络定位结果
- sb.AppendLine("网络定位结果(addr) : " + p0.AddrStr);
- //运营商信息
- sb.AppendLine("运营商信息(operationers) : " + p0.Operators);
- sb.AppendLine("describe : 网络定位成功");
- break;
- case BDLocation.TypeOffLineLocation:
- // 离线定位结果
- sb.AppendLine("describe : 离线定位成功,离线定位结果也是有效的");
- break;
- case BDLocation.TypeServerError:
- sb.AppendLine("describe : 服务端网络定位失败,可以反馈IMEI号和大体定位时间到loc-bugs@baidu.com,会有人追查原因");
- break;
- case BDLocation.TypeNetWorkException:
- sb.AppendLine("describe : 网络不同导致定位失败,请检查网络是否通畅");
- break;
- case BDLocation.TypeCriteriaException:
- sb.AppendLine("describe : 无法获取有效定位依据导致定位失败,一般是由于手机的原因,处于飞行模式下一般会造成这种结果,可以试着重启手机");
- break;
- }
- sb.AppendLine("locationdescribe: " + p0.LocationDescribe);// 位置语义化信息
- locationInfo.Text = sb.ToString();
- }
- protected override void OnPause()
- {
- mMapView.OnPause();
- base.OnPause();
- }
- protected override void OnResume()
- {
- mMapView.OnResume();
- base.OnResume();
- }
- protected override void OnDestroy()
- {
- // 退出时销毁定位
- mLocationClient.Stop();
- // 关闭定位图层
- mBaiduMap.MyLocationEnabled = false;
- mMapView.OnDestroy();
- mMapView = null;
- base.OnDestroy();
- }
- }
- }
【Android】18.2 利用百度定位服务API实现位置跟踪的更多相关文章
- 定位服务API案例
定位服务API案例 要使用定位服务API,需要确保设备已经下载并安装了HMS Core服务组件,并将Location Kit的SDK集成到项目中. 指定应用权限 Android提供了两种位置权限: A ...
- 利用百度文字识别API识别图像中的文字
本文将会介绍如何使用百度AI开放平台中的文字识别服务来识别图片中的文字.百度AI开放平台的访问网址为:http://ai.baidu.com/ ,为了能够使用该平台提供的AI服务,你需要事先注册一 ...
- [android学习]__使用百度地图开放api编写地图定位app
前言 在前面我已经记录关于如何使用百度地图api,以及如何配置相关的androidstudio配置了,接下来将记录如何使用百度地图api开发简单的地图定位apk,我将决定不定期持续更新本篇笔记,在每个 ...
- 安卓开发 利用百度识图api进行物体识别
前文 之前的随笔中,已经通过相机或相册获取到了我们想要的图片,接下来进行识图api的配置工作.我使用的是百度的api,利用python获取信息,并在MainActivity中进行调用来输出信息. 一. ...
- android开发对应高德地图定位服务进度一
进行android的高德地图开发首先需要进入高德地图的控制台进行注册登录.之后创建新的应用并且绑定软件得到相应的key. 这里面需要找到自己软件对应的多个SHA1.这里有发布版和调试版,以及对应的软件 ...
- 安卓开发 利用百度识图api进行物体识别(java版)
之前的随笔中,已经实现了python版本调用api接口,之所以使用python是因为python比java要简洁. 但是我发现在使用过程中,chaquopy插件会弹出底部toast显示"un ...
- C#封装百度Web服务API处理包含(Geocoding API,坐标转换API)
1.创建基础参数类 public static class BaiduConstParams { public const string PlaceApIv2Search = "http:/ ...
- Android Studio中利用JavaDoc生成项目API文档
1. 在Android Studio中的菜单项中点击Generate JavaDoc
- Android list刷新后仍然定位到原来的位置,解决。
问题: 有一个list,点击item时会做一些事情,然后重新加载数据,此时希望点击重新刷新后item还在原来的位置,而不是跳转到开头. 实现如下: 1.listview添加监听setOnScrollL ...
随机推荐
- CATransition 动画处理视图切换
一:引入包和头文件: 需要在frameworks中添加QuartzCore.framework 在接口程序中加上头文件 #import <QuartzCore/QuartzCore.h& ...
- PHP 在Win下的安装
1:安装集成环境,Wamp或者Appserv.可以快速搭建测试环境. 2:分别下载安装 下载 PHP 从此处下载免费的 PHP:http://www.php.net/downloads.php 下载 ...
- 解决 在POM配置Maven plugin提示错误“Plugin execution not covered by lifecycle configuration”
eclipse在其POM文件的一处提示出错如下: Plugin execution not covered by lifecycle configuration: org.apache.maven.p ...
- log4j 日志 配置 学习
1.用的flume-log4j avrosource的整合 2.学习如何指定类打印日志 #log4j.rootLogger=INFO,flume 这个是将全部的日志会打印出来 log4j.logge ...
- 几道比较难的SQL题
上条记录和下一条记录 在展示博客文章时,在文章底部需要展示上一篇文章和下一篇文章,文章的排序当然是按照时间排序的. 选定下一条时可以用limit 1来实现,选取上一条时可以倒序limit 1实现 (S ...
- 主流ETL(Extract-Transform-Load)工具选型,Kettle Spoon、Datastage、Powercenter介绍
参考:三大主流ETL工具选型 ETL工具 Kettle Spoon 开源ETL工具,所以免费,用java开发的. Ascential公司的Datastage(在2005年被IBM收购现在是 IBM 的 ...
- ASP.NET 安全系列 Membership三步曲之入门篇 - Jesse Liu
Membership 三步曲 ASP.NET 安全系列 Membership三步曲之入门篇 ASP.NET 安全系列 Membership三步曲之进阶篇 ASP.NET 安全系列 Membership ...
- api 和 C# 里的接口的区别?
从狭义上讲,接口指的是借由 interface 定义的结构,接口中只对方法做定义,不做实现.具体实现由最终实现接口的类提供. interface 作为一种类型,可以用于定义方法,我们只关心类实现了接口 ...
- Socket详解-Linux Socket编程(不限Linux)
“一切皆Socket!” 话虽些许夸张,但是事实也是,现在的网络编程几乎都是用的socket. ——有感于实际编程和开源项目研究. 我们深谙信息交流的价值,那网络中进程之间如何通信,如我们每天打开浏览 ...
- 转 Python标准库01 正则表达式 (re包)
作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明.谢谢! 我将从正则表达式开始讲Python的标准库.正则表达式是文字处理中常用的工具,而且 ...