博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Unity高德LBS
阅读量:5218 次
发布时间:2019-06-14

本文共 5563 字,大约阅读时间需要 18 分钟。

一、准备

高德开发者页面注册产品 

1.1 http://www.cnblogs.com/U-tansuo/archive/2013/04/25/unity3d_android_sign.html

 

1.2填写应用应用信息

 

 

1.3下载

解压得到 AMap_Location_V3.6.1_20171012.jar

 

二.新建Eclipse项目

2.1首先新建一个Android工程,在最小SDK版本里选4.0以上,不然在Unity打包的时候会报错。

 

2.2导入AMap_Location_V3.6.1_20171012.jarUnity提供的JARclasses.jar

位置:

D:\Program Files\Unity17103\Editor\Data\PlaybackEngines\AndroidPlayer\Variations\il2cpp\Development\Classes

 

2.3 Java代码

 

package com.mirror.locationtest;import android.os.Bundle;import android.util.Log;import com.amap.api.location.AMapLocation;import com.amap.api.location.AMapLocationClient;import com.amap.api.location.AMapLocationClientOption;import com.amap.api.location.AMapLocationClientOption.AMapLocationMode;import com.amap.api.location.AMapLocationListener;import com.unity3d.player.UnityPlayerActivity;;public class MainActivity extends UnityPlayerActivity  {    //声明AMapLocationClient类对象    public AMapLocationClient mLocationClient = null;    //声明AMapLocationClientOption对象    public AMapLocationClientOption mLocationOption = null;    //定位回调字符串    private String LocationInfo = "Init String~";    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);    }    public String GetInfo(){        startLocation();        return LocationInfo;    }    @Override    protected void onStart() {        // TODO Auto-generated method stub        super.onStart();    }    private void startLocation(){        //初始化定位        mLocationClient = new AMapLocationClient(getApplicationContext());        //设置定位回调监听        mLocationClient.setLocationListener(mLocationListener);        //初始化AMapLocationClientOption对象        mLocationOption = new AMapLocationClientOption();        //设置定位模式为AMapLocationMode.Hight_Accuracy,高精度模式。        mLocationOption.setLocationMode(AMapLocationMode.Hight_Accuracy);        //设置定位间隔,单位毫秒,默认为2000ms,最低1000ms。        mLocationOption.setInterval(2000);        //给定位客户端对象设置定位参数        mLocationClient.setLocationOption(mLocationOption);        //启动定位        mLocationClient.startLocation();    }    public AMapLocationListener mLocationListener = new AMapLocationListener() {        @Override        public void onLocationChanged(AMapLocation location) {            // TODO Auto-generated method stub            if (location != null)             {                if (location.getErrorCode() == 0)                 {                    StringBuffer sb = new StringBuffer(256);                    sb.append("时间: ");                    sb.append(location.getTime());                    sb.append("\n纬度:");                    sb.append(location.getLatitude());                    sb.append("\n纬度:");                    sb.append(location.getLongitude());                    sb.append("\n精度:");                    sb.append(location.getAccuracy());                    sb.append("\n地址:");                    sb.append(location.getAddress());                    sb.append("\n国家信息:");                    sb.append(location.getCountry());                    sb.append("\n省信息:");                    sb.append(location.getProvince());                    sb.append("\n城市信息:");                    sb.append(location.getCity());                    sb.append("\n城区信息:");                    sb.append(location.getDistrict());                    sb.append("\n街道信息:");                    sb.append(location.getStreet());                    sb.append("\n街道门牌号信息:");                    sb.append(location.getStreetNum());                    sb.append("\n城市编码:");                    sb.append(location.getCityCode());                    sb.append("\n地区编码:");                    sb.append(location.getAdCode());                    sb.append("\n定位点AOI信息:");                    sb.append(location.getAoiName());                    LocationInfo = sb.toString();                }                else                 {                    mLocationClient.stopLocation();                    mLocationClient.startLocation();                    LocationInfo ="定位出现错误,"+location.getErrorCode()+","+location.getErrorInfo();                }            }            else            {                LocationInfo="定位彻底失败";            }        }    };}

 

 

2.4AndroidManifest.xml

 

2.5Eclipse选中我们的工程文件夹,可以先点击工具栏的Project->clean,再Project->Build Project。然后右键Export,选导出为JAR文件导出jar

 

2.6Unity部分

将安卓工程的文件拷贝到Unity工程的Plugins->Android文件夹里。没有这个目录的话需要自己创建一个。文件夹目录如下,把我们刚刚导出的JAR文件放在的bin文件夹中,另外还需要把我们的安卓工程目录里把libs文件夹和res文件夹以及AndroidManifest文件拷贝进去,注意拷贝完要把libs文件夹里面的classes.jar文件删掉,不然文件会冲突

   

 

 

2.7代码GetLocationInfo.CS

 

using UnityEngine;using UnityEngine.UI;public class GetLocationInfo : MonoBehaviour {    public Text text;    // Use this for initialization    void Start()    {        InvokeRepeating("StartLocation", 1, 5);    }    public void StartLocation()    {        AndroidJavaClass jc = new AndroidJavaClass("com.unity3d.player.UnityPlayer");        AndroidJavaObject jo = jc.GetStatic
("currentActivity"); text.text = jo.Call
("GetInfo"); }}

 

2.8运行结果

 

2.9Unity打包配置

 

 

三根据返回错误代码判断错误

3.1错误代码对照表

http://lbs.amap.com/api/android-location-sdk/guide/utilities/errorcode

 

转载于:https://www.cnblogs.com/JimmyCode/p/7852618.html

你可能感兴趣的文章
Hibernate中inverse="true"的理解
查看>>
高级滤波
查看>>
使用arcpy添加grb2数据到镶嵌数据集中
查看>>
[转载] MySQL的四种事务隔离级别
查看>>
QT文件读写
查看>>
C语言小项目-火车票订票系统
查看>>
15.210控制台故障分析(解决问题的思路)
查看>>
BS调用本地应用程序的步骤
查看>>
常用到的多种锁(随时可能修改)
查看>>
用UL标签+CSS实现的柱状图
查看>>
mfc Edit控件属性
查看>>
Linq使用Join/在Razor中两次反射取属性值
查看>>
[Linux]PHP-FPM与NGINX的两种通讯方式
查看>>
Java实现二分查找
查看>>
优秀员工一定要升职吗
查看>>
[LintCode] 462 Total Occurrence of Target
查看>>
springboot---redis缓存的使用
查看>>
架构图-模型
查看>>
sql常见面试题
查看>>
jQuery总结第一天
查看>>