【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 ...
随机推荐
- UML 之 数据流图(DFD)
数据流图(Data Flow Diagram):简称DFD,它从数据传递和加工角度,以图形方式来表达系统的逻辑功能.数据在系统内部的逻辑流向和逻辑变换过程,是结构化系统分析方法的主要表达工 ...
- C++ extern c 用法
一.整体代码 01.cpp #include <iostream> #include <stdio.h> #include "add.h" using na ...
- Java从零开始学三十五(JAVA IO- 字节流)
一.字节流 FileOutputStream是OutputStream 的直接子类 FileInputStream也是InputStream的直接子类 二.文本文件的读写 2.1.字节输入流 Test ...
- POJ 3414 Pots(BFS+回溯)
Pots Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 11705 Accepted: 4956 Special J ...
- 算法笔记_210:第六届蓝桥杯软件类决赛真题(Java语言C组)
目录 1 机器人数目 2 生成回文数 3 空心菱形 4 奇怪的数列 5 密文搜索 6 居民集会 前言:以下代码仅供参考,若有错误欢迎指正哦~ 1 机器人数目 标题:机器人数目 少年宫新近邮购了小机器人 ...
- 〖Linux〗Ubuntu13.10,在终端打开gvim提示“GLib-GObject-WARNING”的临时解决办法
今天刚刚升级至Ubuntu13.10,在终端打开gvim时提示一些出错信息,不是很雅观: (gvim:): GLib-GObject-WARNING **: Attempt to add proper ...
- 如何提高SELECT的效率
首先避免使用in ,not in,<>,<,<=,>,>=,is null,is not null 主要搜索字段建立索引 .WHERE子句中的连接顺序 sql解 ...
- Java中网络相关API的应用——InetAddress&URL
一.InetAddress类 标识网络上的硬件资源 package com.homework; import java.net.InetAddress; import java.net.Unknown ...
- 使用 Eclipse 远程调试 Java 应用程序
Eclipse 中的远程调试特性 Eclipse 是一个图形化 Java 调试器前端.JDI 在 org.eclipse.jdt.debug 包中实现.本文不详细讨论 JDI 实现.参见 参考资料 获 ...
- html学习第一讲(内容html常规控件的的使用)
<html> <head> <title> 这是网页的标题</title> </head> <body> <h2>& ...