一、概述

这一章先来点有意思的百度地图应用示例,然后再分章详细介绍用C#开发Android App的各种基本技术。

本章以百度官网2016年1月发布的地图API(3.7.1版)为例,演示如何用C#和VS2015编写百度地图应用程序,这些示例程序既可以在Android 6.0的x86模拟器中运行,也可以发布到Android 4.0以上版本的手机中测试实际运行的效果。

1、下载官网提供的Demos 首先访问下面的网址: http://developer.baidu.com/map/

打开网页后,选择【开发】à【Andoid开发】下的第1项“Android地图SDK”,单击该网页中的【相关下载】,就会出现下面的界面:

单击【自定义下载】,在弹出的界面中,除了导航功能外,其他全部选中,然后将其下载到本机中,并解压到某个文件夹下,以便后续的步骤使用它。

2、使用Gaxaxy_Api23_x86模拟器观察运行结果 为了解决MapView使用硬件加速时存在的问题,百度提供了一个TextureMapView控件,使用此控件呈现地图时,要求修改模拟器的开发者选项。

要使用TextureMapView显示百度地图,需要满足下面的条件:

•将所有官方示例中的MapView全部改为用TextureMapView控件来呈现。

•修改模拟器的开发者选项,将其设置为允许模拟器“强制进行GPU渲染”(如下图所示)。

这两个条件都满足后,百度地图才能顺利显示出来。

好了,以后也不需要忍受没有硬件加速的ARM模拟器那个特别的“慢”了,后面的例子将继续用带硬件加速的x86模拟器来演示。

当然也可以直接用手机调试运行(这是建议的调试办法,手机连上电脑后可直接在debug右侧的下拉框中看到该手机的选项,用这种办法调试地图应用程序也更符合实际。但是,由于手机调试截图麻烦,所以这里还是直接用模拟器来演示了。

二、创建BdMapV371BindingLib解决方案

解决方案和项目名:BdmapV371BindingLib

模板:Bindings Library(Android)

创建绑定库的目的是将百度地图SDK 3.7.1版本的所有.jar文件自动转换为.cs文件并生成对应的.dll文件,转换以后,就可以在应用项目中引用生成的.dll文件了。

这也是转换.jar文件为.cs文件最常用的办法。

1、添加JAR文件

将以下文件复制到项目的jars文件夹下,并将这些文件的【生成操作】属性全部改为“EmbeddedJar”。

BaiduLBS_Android.jar

IndoorscapeAlbumPlugin.jar

2、添加最新稳定版Xamarin.Android.Support.v4的引用

鼠标右击【引用】à【管理NuGet程序包】,添加最新稳定版Xamarin.Android.Support.v4的引用,本人添加的是Xamarin.Android.Support.v4.23.1.1.0。

3、修改Metadata.xml文件打开Transforms文件夹下的Metadata.xml文件,将其改为下面的内容:

VersionInfoString

aVar

bVar

AddressString

VersionInfoString

VersionInfoString

false

DistrictSearchs

false

public

false

4、添加BaiduMapOptions.cs文件 在Additions文件夹下添加该文件,然后将其改为下面的内容:

namespace Com.Baidu.Mapapi.Map

{

public partial class BaiduMapOptions

{

public BaiduMapOptions() { }

}

}

该文件的用途是提供一个不带参数的构造函数,如果不添加该文件,无法直接在后续节的Demos项目中创建BaiduMapOptions的实例(这一节用不到它)。

5、生成dll文件 鼠标右击该项目名,选择【生成】,此时应该在【输出】窗口中看到编译成功了:

========== 全部重新生成: 成功 1 个,失败 0 个,跳过 0 个 ==========

这样一来,在bin\debug文件夹下就成功生成了BdMapV371BindingLib.dll,以后就可以在示例项目中引用这个.dll文件了。

三、创建BdMapV371Demos解决方案并获取开发密钥 解决方案和项目名:BdmapV371Demos

模板:Blank App(Android)

开发百度地图应用程序时,需要先在百度官网上申请一个开发密钥,百度的开发密钥由“SHA1+包名”组合组成,这是为了让一个项目唯一对应一个申请的密钥(key)。密钥申请成功后,才能在对应的项目中使用百度地图API。

1、修改AndroidManifest.xml文件修改BdMapV371Demos项目的该文件,将其改为下面的内容:

2、运行项目得到SHA1

按键运行项目,在输出窗口中找到下面这一行:

D/auth info( 3210): mcode: 【……】;BdMap361Test.BdMap361Test

其中,分号前的【……】就是SHA1,复制它,以备下一步申请密钥用。

说明:创建另一个解决方案和项目时,只要你的开发环境不变,调试模式的SHA1还是这个值(这个值与是哪个项目无关,而是与debug.keystore文件有关),所以最好把这个SHA1保存在单独的文档中,以便以后用它申请多个开发密钥。

当然,由于这一步还没有完成密钥申请的第2步,现在还看不到地图。

实际上,你稍微观察一下输出窗口,就会发现当你按键调试运行后,系统首先自动执行的就是下面介绍的这些命令。或者说,这些步骤是系统自动完成的,不需要你去做。这里之所以解释一下这些命令的含义,目的只是为了帮你理解它是如何得到SHA1并自动显示出来让你去使用的):

对于Windows操作系统来说,默认情况下,可以在以下位置找到Xamarin.Android调试版本的用于应用程序签名的密钥库:

C:\Users\[USERNAME]\AppData\Local\Xamarin\Mono for Android\debug.keystore

通过JDK提供的keytool命令,可得到密钥存储库的信息。对于Windows系统来说,keytool的位置为:C:\Program Files (x86)\Java\jdk1.7.0_79\bin keytool.exe。

在VS2015中的使用办法为(不需要你去配置环境变量):依次单击【工具】à【Android】à【Android Adb Command Prompt】,这样就进入了命令行模式。

在命令行模式下,可使用下面的命令形式运行keytool工具:

keytool -list -v -keystore [STORE FILENAME] -alias [KEY NAME] -storepass [STORE PASSWORD] -keypass [KEY PASSWORD]

键入的具体命令为(注意[USERNAME]应该替换为实际的名字):

C:\

cd\users\[USERNAME]\appdata\local\Xamarin\Mono for Android

keytool -list -v -keystore debug.keystore -alias androiddebugkey -storepass android -keypass android此时你在控制台窗口中将会看到下面的内容:

别名: androiddebugkey

序列号:……(此处省略了具体值)

有效期开始日期: ……(此处省略了具体值)

截止日期: ……(此处省略了具体值)

证书指纹:

MD5: ……(此处省略了具体值)

SHA1: ……(此处省略了具体值)

SHA256:……(此处省略了具体值)

签名算法名称: SHA256withRSA

版本: 3

扩展

……

3、进入官网获取开发密钥

进入百度的官网(http://developer.baidu.com/map/),选择【开发】à【Andoid开发】下的第1项“Android地图SDK”,然后单击该网页中的【申请密钥(key)】,选择【进入新的key申请系统】,输入下面的信息:

应用名称:BdMapV371Demos

应用类型:Android SDK

数字签名(SHA1):

包名:BdMapV371Demos.BdMapV371Demos

对于C#项目来说,这里输入的包名实际上是“解决方案名.项目名”,并没有全部是小写字母的要求。

将上一步复制的SHA1粘贴到“数字签名(SHA1)”右侧的文本框中。

单击【提交】按钮,完成密钥申请。

4、将申请的密钥填入到配置文件中

修改AndroidManifest.xml文件,在Application中填入你刚申请的密钥。

以后再为新项目申请新的密钥时,只要开发环境不变,这个SHA1值就不会变化。以后再申请新的密钥时,直接填入这个SHA1值就行了。

接下来就可以逐步调试本章后面介绍的示例了。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

android百度地图导航功能开发,Android百度地图应用开发基础知识相关推荐

  1. 音视频流媒体高级开发进阶:从音视频基础知识到技术实践

    站在音视频行业风口 站在风口,猪也能飞".在已经到来的2022年,音视频行业依旧是怎么也绕不过去的风口. 一方面,随着各项5G政策的落实,音视频+5G风口,将会深入挖掘音视频产业的无限潜力, ...

  2. 一年前端开发工程师简历_2017年是前端开发人员应该回头并掌握基础知识的一年...

    一年前端开发工程师简历 by Artem Sapegin 通过Artem Sapegin 2017年是前端开发人员应该回头并掌握基础知识的一年 (2017 is the year that front ...

  3. 安卓蓝牙开发(1)BLE蓝牙基础知识和一般开发流程

    一.BLE(Bluetooth Low Energy)低功耗蓝牙基本知识 Android 4.3(API级别18)引入了以低功耗蓝牙(BLE)为中心角色的内置平台支持,并提供应用程序可用于发现设备,查 ...

  4. C++实战手把手教您用ffmpeg和QT开发播放器--01音视频基础知识

    笔记:https://blog.csdn.net/tainjau/article/category/9272757 音视频基础知识 封装.解码.重采样.像素格式 1.MPEG-4 MPEG-4标准将众 ...

  5. 手机MODEM 开发(23)---Modem1 NVRAM基础知识总结

    [NVRAM]Modem1 NVRAM基础知识总结 Modem1 NVRAM基础知识总结 [SOLUTION] 1. Modem NVRAM四个分区   nvdata:手机运行过程中,使用(读写)的N ...

  6. ##**iOS蓝牙开发(一)蓝牙相关基础知识**

    蓝牙常见名称和缩写 MFI ======= make for ipad ,iphone, itouch 专们为苹果设备制作的设备 BLE ==== buletouch low energy,蓝牙4.0 ...

  7. 嵌入式软件开发岗位----求职过程记录(基础知识和面经总结)

    1.本栏用来记录社招找工作过程中的内容,包括基础知识以及面试问题等,以便于后续个人回顾学习: 暂时只有2023年3月份,第一次社招找工作的过程: 2.个人经历: 研究生期间课题是SLAM在无人机上的应 ...

  8. Android音视频开发 <一> 音视频基础知识

    一 .音视频相关的术语介绍 1.1 帧率 fps (Frame Per Second) 是以帧称为单位的位图图像连续出现在显示器上的频率(速率) 视频每秒传输的帧数(画面数),每秒帧数越多,显示的画面 ...

  9. android studio如何设置输出值的小数点_C语言基础知识:printf的输出格式,C/C++语言编程讲解...

    C语言基础知识:printf的输出格式 printf()函数是格式输出函数,请求printf()打印变量的指令取决与变量的类型.例如,在打印整数是使用%d符号,在打印字符是用%c 符号.这些符号被称为 ...

  10. 进入软件开发行业必须要掌握的基础知识(2005-5-18)

    经常碰到一些想转到软件开发行业的朋友 他们问我需要学什么才能做开发 那么,在这里,我就简单地说一下自己的看法吧 1.C语言 先请各位看贴的朋友做一个题目 "用C语言写一段程序,输入字符串A, ...

最新文章

  1. hive in 写法/linux OR CDH如果查看hive的版本
  2. 如何在 Spring 生态中玩转 RocketMQ?
  3. 惠普电脑怎么截屏_省钱上京东双十一买笔记本电脑怎么买更优惠更划算更省钱最新攻略!联想戴尔华硕炫龙荣ROG神州宏碁惠普...
  4. 自我学习的技巧和建议
  5. 就想问问你们,这种女朋友从哪里来的?
  6. VB-VB.NET中 从字符串“XX”到类型“Double”的转换无效
  7. 十项全能的java大神
  8. 如何获得线程对象,获得Thread对象,得到线程对象,根据线程名获得线程对象,多线程取得线程对象...
  9. python面部颜色分析_Python图像处理之颜色的定义与使用分析
  10. yyds!Java 性能优化的 50 个细节(珍藏版)
  11. code collection 0.44版 发布
  12. json对象数组转数组方法
  13. To King Cover
  14. 苍南县勤奋高中计算机,浙江省苍南县勤奋高级中学高中语文公开课教案 为政以德.doc.doc...
  15. Tony.SerialPorts.RS232串口参数配置模块:扫描事件例程
  16. 关于IMDB,-------Internet Movie Database(互联网电影数据库)
  17. 自己搭建安卓app结合苹果CMS后台视频管理
  18. app闪退后重启_Android app 如何实现崩溃后自动重启
  19. LCD驱动源码分析(s3cfb.c)
  20. edge 黑色 护眼 深色模式

热门文章

  1. MTK通信物料供应表MT7621AT,MT7620A,WIFI6,MT7975D+MT7905D
  2. 在web h5 上 js 绘制汉字 按笔画绘制汉字 汉字拼音 多音字 笔画繁体字 cnchar
  3. 2019年下半年软件设计师下午真题试题(案例分析)及答案
  4. 如何通过W3school学习JS/如何使用W3school的JS参考手册
  5. iOS 10越狱设备终于有越狱移除工具了!
  6. js调用数科阅读器_aspx调用js函数
  7. 新概念英语第二册课文电子版_新概念英语第二册:课文+音频+教学视频合集(可下载)...
  8. 求一堆点中的最大点集合(边界点)
  9. Java web实习报告
  10. 2021-08-03