Unity调用高德地图API,获取定位信息(Android)
先在Android端实现定位功能,再打包成JAR文件提供接口方法给Unity调用。
Unity3D (5.3.4)
Eclipse: Neon(4.6.0)
Unity提供了跟Android交互的接口,可以参考雨松大大的博客。
1.首先新建一个Android工程,在最小SDK版本里选4.0以上,不然在Unity打包的时候会报错。
2.创建出来的工程目录如下:
3.可以删掉MainActivity里面不必要的代码,引用的布局也要删掉:
package com.example.locationtest;
import android.app.Activity;
import android.os.Bundle;
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
}
}
4.因为要调用Unity提供的接口,需要把Unity提供的JAR库classes.jar文件导入到我们的安卓工程里。我的Unity版本是5.3.4,文件在这里:
5.把库文件拖到Android工程的libs文件夹下面,右键选Build Path ->Add to Build Path导入包。
6.Activity中的方法想要被Unity调用,这个Activity就需要继承UnityPlayerActivity,这是Unity提供的包里面的接口类。代码里写了一个GetInfo()的方法给Unity在代码中调用,获取定位的信息LocationInfo。
package com.example.locationtest;
import android.os.Bundle;
import com.unity3d.player.UnityPlayerActivity;
public class MainActivity extends UnityPlayerActivity {
private String LocationInfo;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
}
public String GetInfo(){
return LocationInfo;
}
}
7.接下来就是实现高德地图中的定位功能了,这方面的内容可以参考官网的文档,还是很容易实现的,这里就不详述了。我的代码如下:
AndroidManifest.xml:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.locationtest"