第一步:Unity保存user.keystore文件

  1. File→Build Settings→Player Settings
  2. 找到Publishing Settings,点击Create a new keystore
  3. 点击Browse Keystore保存user.keystore文件
  4. 点击Key的Alias选项,选择Create a new key
  5. 只要填写Alias和密码即可(密码就是Create a new keystore时填写的密码)

第二步:获取安全码SHA

  1. 根据高德地图中的说明,使用keytool获取SHA1
  2. 打开控制台窗口(命令行)
  3. 输入cd .android
  4. 使用命令keytool -list -v -keystore keystore的位置和名字
  5. 输入密码库密码

第三步:为我的应用添加Key

  1. 进入高德开发平台
  2. 进入控制台
  3. 创建新应用或者为应用添加Key
  4. 填写Key名称、安全码SHA1和PackageName(Unity中的包名)

第四步:在Unity中添加安卓文件

  1. 在高德开发平台下载Android定位的SDK
  2. 把AMapLoction中的jar添加进Unity(保存在Plugins/Android文件夹下)
  3. 找到AMapLocartionDemo,找到里面的AndroidManifest.xml文件,也添加进来

第五步:修改代码

  1. 修改AndroidManifest.xml文件
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"package="Unity的包名"android:versionCode="2"android:versionName="2.0"><uses-sdkandroid:minSdkVersion="14"android:targetSdkVersion="23"/><uses-permission android:name="android.permission.RECORD_AUDIO" /><uses-permission android:name="android.permission.INTERNET" /><uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /><uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /><uses-permission android:name="android.permission.CHANGE_NETWORK_STATE" /><uses-permission android:name="android.permission.READ_PHONE_STATE" /><uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /><uses-permission android:name="android.permission.READ_CONTACTS" /><uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /><uses-permission android:name="android.permission.WRITE_SETTINGS" /><uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /><!--这个权限用于获取wifi的获取权限,wifi信息会用来进行网络定位--><uses-permission android:name="android.permission.CHANGE_WIFI_STATE" /><uses-permission android:name="android.permission.CHANGE_CONFIGURATION" /><!-- 请求网络 --><uses-permission android:name="android.permission.INTERNET" /><!-- 不是SDK需要的权限,是示例中的后台唤醒定位需要的权限 --><uses-permission android:name="android.permission.WAKE_LOCK" /><!-- 需要运行时注册的权限 --><!--用于进行网络定位--><uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /><!--用于访问GPS定位--><uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /><!--用于提高GPS定位速度--><uses-permission android:name="android.permission.ACCESS_LOCATION_EXTRA_COMMANDS" /><!--写入扩展存储,向扩展卡写入数据,用于写入缓存定位数据--><uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /><!--读取缓存数据--><uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /><!--用于读取手机当前的状态--><uses-permission android:name="android.permission.READ_PHONE_STATE" /><!-- 更改设置 --><uses-permission android:name="android.permission.WRITE_SETTINGS" /><!-- 3.2.0版本增加 --><uses-permission android:name="android.permission.BLUETOOTH_ADMIN" /><!-- 3.2.0版本增加--><uses-permission android:name="android.permission.BLUETOOTH" /><application android:banner="@drawable/app_banner"android:debuggable="false"android:icon="@drawable/app_icon"android:isGame="true"android:label="@string/app_name"android:theme="@style/UnityThemeSelector"><!-- 设置key --><meta-dataandroid:name="com.amap.api.v2.apikey"android:value="申请的key"/><!-- 定位需要的服务 --><service android:name="com.amap.api.location.APSService" ></service><activity android:configChanges="locale|fontScale|keyboard|keyboardHidden|mcc|mnc|navigation|orientation|screenLayout|screenSize|smallestScreenSize|touchscreen|uiMode" android:label="@string/app_name" android:launchMode="singleTask" android:name="com.unity3d.player.UnityPlayerActivity" android:screenOrientation="portrait"><intent-filter><action android:name="android.intent.action.MAIN"/><category android:name="android.intent.category.LAUNCHER"/><category android:name="android.intent.category.LEANBACK_LAUNCHER"/></intent-filter><meta-data android:name="unityplayer.UnityActivity" android:value="true"/></activity></application>
</manifest>

2.写一个类继承于AndroidJavaProxy,用于将Java转换为C#

using System.Collections;
using System.Collections.Generic;
using UnityEngine;public class ChangeJavaToC : AndroidJavaProxy
{public ChangeJavaToC() : base("com.amap.api.location.AMapLocationListener") { }void onLocationChanged(AndroidJavaObject amapLocation){if (locationChanged != null){locationChanged(amapLocation);}}public delegate void DelegateOnLocationChanged(AndroidJavaObject amap);public event DelegateOnLocationChanged locationChanged;
}

3.写一个脚本,获取位置

using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;public class LocationManager : MonoBehaviour {public Text txtLocation;private ChangeJavaToC amap;private AndroidJavaClass jcu;private AndroidJavaObject jou;private AndroidJavaObject mLocationClient;private AndroidJavaObject mLocationOption;public void Start(){StartLocation();}public void StartLocation(){try{jcu = new AndroidJavaClass("com.unity3d.player.UnityPlayer");jou = jcu.GetStatic<AndroidJavaObject>("currentActivity");mLocationClient = new AndroidJavaObject("com.amap.api.location.AMapLocationClient", jou);mLocationOption = new AndroidJavaObject("com.amap.api.location.AMapLocationClientOption");mLocationClient.Call("setLocationOption", mLocationOption);amap = new ChangeJavaToC();amap.locationChanged += OnLocationChanged;mLocationClient.Call("setLocationListener", amap);mLocationClient.Call("startLocation");}catch (Exception ex){txtLocation.text = ex.Message;EndLocation();}}public void EndLocation(){if (amap != null){amap.locationChanged -= OnLocationChanged;}if (mLocationClient != null){mLocationClient.Call("stopLocation");mLocationClient.Call("onDestroy");}txtLocation.text = "";}private void OnLocationChanged(AndroidJavaObject amapLocation){if (amapLocation != null){if (amapLocation.Call<int>("getErrorCode") == 0){txtLocation.text = "成功定位获取数据:";try{txtLocation.text = txtLocation.text + "\r\n>>定位结果来源:" + amapLocation.Call<int>("getLocationType").ToString();txtLocation.text = txtLocation.text + "\r\n>>纬度:" + amapLocation.Call<double>("getLatitude").ToString();txtLocation.text = txtLocation.text + "\r\n>>经度:" + amapLocation.Call<double>("getLongitude").ToString();txtLocation.text = txtLocation.text + "\r\n>>精度信息:" + amapLocation.Call<float>("getAccuracy").ToString();txtLocation.text = txtLocation.text + "\r\n>>地址:" + amapLocation.Call<string>("getAddress").ToString();txtLocation.text = txtLocation.text + "\r\n>>国家:" + amapLocation.Call<string>("getCountry").ToString();txtLocation.text = txtLocation.text + "\r\n>>省:" + amapLocation.Call<string>("getProvince").ToString();txtLocation.text = txtLocation.text + "\r\n>>城市:" + amapLocation.Call<string>("getCity").ToString();txtLocation.text = txtLocation.text + "\r\n>>城区:" + amapLocation.Call<string>("getDistrict").ToString();txtLocation.text = txtLocation.text + "\r\n>>街道:" + amapLocation.Call<string>("getStreet").ToString();txtLocation.text = txtLocation.text + "\r\n>>门牌:" + amapLocation.Call<string>("getStreetNum").ToString();txtLocation.text = txtLocation.text + "\r\n>>城市编码:" + amapLocation.Call<string>("getCityCode").ToString();txtLocation.text = txtLocation.text + "\r\n>>地区编码:" + amapLocation.Call<string>("getAdCode").ToString();txtLocation.text = txtLocation.text + "\r\n>>海拔:" + amapLocation.Call<double>("getAltitude").ToString();txtLocation.text = txtLocation.text + "\r\n>>方向角:" + amapLocation.Call<float>("getBearing").ToString();txtLocation.text = txtLocation.text + "\r\n>>定位信息描述:" + amapLocation.Call<string>("getLocationDetail").ToString();txtLocation.text = txtLocation.text + "\r\n>>兴趣点:" + amapLocation.Call<string>("getPoiName").ToString();txtLocation.text = txtLocation.text + "\r\n>>提供者:" + amapLocation.Call<string>("getProvider").ToString();txtLocation.text = txtLocation.text + "\r\n>>卫星数量:" + amapLocation.Call<int>("getSatellites").ToString();txtLocation.text = txtLocation.text + "\r\n>>当前速度:" + amapLocation.Call<float>("getSpeed").ToString();}catch (Exception ex){txtLocation.text = txtLocation.text + "\r\n--------------ex-------------:";txtLocation.text = txtLocation.text + "\r\n" + ex.Message;}}else{txtLocation.text = ">>amaperror:";txtLocation.text = txtLocation.text + ">>getErrorCode:" + amapLocation.Call<int>("getErrorCode").ToString();txtLocation.text = txtLocation.text + ">>getErrorInfo:" + amapLocation.Call<string>("getErrorInfo");}}else{txtLocation.text = "amaplocation is null.";}}}

Unity接入高德地图相关推荐

  1. uniapp中app接入高德地图实现标点定位

    ps:如果你只想用在一个平台上那么就看对应的准备工作即可.例:你只需h5接入地图,那么你只需看   一. h5接入高德地图准备工作和最后的代码即可. 一. h5接入高德地图准备工作 1. 去高德地图平 ...

  2. 快速接入高德地图SDK(地图+定位+标记+路线规划+搜索)

    文章目录 申请接入流程 显示高德地图 显示定位 Marker 显示地图标记 Route 路线规划 Search 搜索 申请接入流程 1.首先到 [ 高德地图API官网] 申请注册帐号 2.进入控制台, ...

  3. unity 调用高德地图手机读取信息定位和周边(AndroidStudio3.1.2版本打包)。

    首先也是看到网上有很多这这方面的博客,但是安卓Studio高版本对接unity高版本的却很少,有的还说高版本报错,我也是花时间研究了一下,感觉报错是正常的,一般还是配置环境问题.至于高版本报错,就有点 ...

  4. 高德地图小程序步行路线显示_微信小程序之:小程序接入高德地图SDK

    前言 最近在捣腾小程序,想开发一个自己的小程序,过一把独立开发的瘾. 自己设计,自己搞数据,自己找图标,自己决定要或者不要什么功能,完全跟着心走,目前体验下来,感觉还是蛮爽的.比在公司产品要你做什么你 ...

  5. Android开发知识(十)快速接入高德地图SDK(地图+定位+标记+路线规划+搜索)

    文章目录 申请接入流程 显示高德地图 显示定位 Marker 显示地图标记 Route 路线规划 Search 搜索 申请接入流程 1.首先到 [ 高德地图API官网] 申请注册帐号 2.进入控制台, ...

  6. Unity2018接入高德地图

    首先需要的是安装 pods,具体参考 https://www.cnblogs.com/sasuke6/p/4724116.html https://www.jianshu.com/p/1bb0ad42 ...

  7. uni-app 接入高德地图案例

    第一步:注册高德地图开发者账号 地址:https://lbs.amap.com/ 第二步:创建自己的应用 (我这里是小程序的) 第三步:下载相关sdk文件,导入amap-wx.js到项目中 第四步:创 ...

  8. unity调用高德地图

    地图开发者中心,需要sha1 1.Unity-File-Build Settings-Android-Player Settings 2.keytool是jdk中的工具,先安装jdk 3.命令行 ke ...

  9. Android高德地图线优化,Android 接入高德地图SDK模块的优化点点滴滴

    起因: 由于在最近接手了一个关于导航的App,发现地图页面跳来跳去实在是卡顿地不行(运行在车载设备上的APP,机器性能实在是有限). 初步判断: 应该是是关于地图等控件的反复创建和销毁,给内存GC带来 ...

最新文章

  1. 在Google Cloud Platform上持续部署Node.js
  2. spring mvc中的@propertysource
  3. linux sshpass 非交互的ssh密码验证 简介
  4. Git回滚代码到某个commit
  5. python读取excel表格-python读写Excel表格的实例代码(简单实用)
  6. nginx配置ssl双向证书
  7. 深度优先遍历和广度优先遍历_利用广度优先搜索解LeetCode第515题:在每个树行中找最大值...
  8. Ceph的架构(一)
  9. 【转载】eclipse常用插件在线安装地址或下载地址
  10. HTML设置允许冒泡,html css hover也会冒泡
  11. 使用WildFly和Java EE 7映像与Docker提供者一起流浪
  12. php $_post多个,使用PHP检查多个$ _ POST字词
  13. linux vsftp 无法上传文件,解决vsftp 不能匿名上传文件的问题
  14. jquery mysql php_PHP+jQuery+MySQL来实现一个在线测试项目
  15. 关于 google 的 Percolator
  16. Linux log工具:zlog编译安装及使用示例(同样适用交叉编译环境)
  17. 电信dns地址是多少?
  18. PythonNote036---python中字典合并
  19. b站python_python学习 —— B站抢楼原理
  20. [大数据技术] 淘宝双11数据分析与预测实验

热门文章

  1. 如何调试分布式系统:与微服务调试工具“Squash”创始人Idit Levine的对话
  2. 对一个文件夹下的图片进行批量缩放(resize)处理
  3. Mac OS X 10.8.5升级到更高版本的方法
  4. “双11”购物狂欢节,所有女生走进了谁的直播间?
  5. Xcode8使用出现bundleid: com.xxx.xxx, enable_level: 0, persist_level: 0, propagate_with_acti
  6. 将C语言的字符串转为OC的字符串
  7. 海康服务器系统装不上,ivms-4200客户端登入不了云服务器
  8. 【Linux】RHCE -- RHCSA 认证考试 模拟练习题解析
  9. 华为设备配置链路聚合(手工负载分担模式)
  10. uniapp获取通知栏内容 监听通知栏信息