三.编写主函数
public class MainActivity extends UnityPlayerActivity { //声明mLocationClient对象 public AMapLocationClient mLocationClient = null; public AMapLocationClientOption mLocationOption = null; private String LocationInfo; private String ErrorInfo=""; protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); } //获取定位信息 public String[] GetInfo() { String[] a=new String[2]; a[0]=this.LocationInfo; a[1]=this.ErrorInfo; startLocation(); return a; } protected void onStart() { super.onStart(); } private void startLocation() { this.mLocationClient = new AMapLocationClient(getApplicationContext()); //回调监听 this.mLocationClient.setLocationListener(this.mLocationListener); //初始化定位参数 this.mLocationOption = new AMapLocationClientOption(); this.mLocationOption.setLocationMode(AMapLocationClientOption.AMapLocationMode.Hight_Accuracy); this.mLocationOption.setInterval(1000L); this.mLocationOption.setHttpTimeOut(10000l); this.mLocationOption.setNeedAddress(true); this.mLocationClient.setLocationOption(this.mLocationOption); this.mLocationClient.startLocation(); } public AMapLocationListener mLocationListener = new AMapLocationListener() { @Override public void onLocationChanged(AMapLocation location) { if (location != null) { if (location.getErrorCode() == 0) { StringBuffer sb = new StringBuffer(256); SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); Date date = new Date(location.getTime()); String time=df.format(date); sb.append("时间: " + time); sb.append("\n纬度:" + location.getLatitude()); sb.append("\n经度:" + location.getLongitude()); sb.append("\n精度:" + location.getAccuracy()); sb.append("\n地址:" + location.getAddress()); sb.append("\n国家信息:" + location.getCountry()); sb.append("\n省信息:" + location.getProvince()); sb.append("\n城市信息:" + location.getCity()); sb.append("\n城区信息:" + location.getDistrict()); sb.append("\n街道信息:" + location.getStreet()); sb.append("\n街道门牌号信息:" + location.getStreetNum()); sb.append("\n城市编码:" + location.getCityCode()); sb.append("\n地区编码:" + location.getAdCode()); LocationInfo = sb.toString(); }else { StringBuffer errorinfo = new StringBuffer(256); errorinfo.append("错误代码:"+location.getErrorCode()); errorinfo.append("\n"+location.getErrorInfo()); ErrorInfo=errorinfo.toString(); } } } };
四.将模块打包成aar格式供unity交互
apply plugin:
apply plugin: 'com.android.library'
<meta-data android:name="unityplayer.UnityActivity" android:value="true"/>
<service android:name="com.amap.api.location.APSService"></service>
<!--用于进行网络定位--> <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"></uses-permission> <!--用于访问GPS定位--> <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"></uses-permission> <!--获取运营商信息,用于支持提供运营商信息相关的接口--> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"></uses-permission> <!--用于访问wifi网络信息,wifi信息会用于进行网络定位--> <uses-permission android:name="android.permission.ACCESS_WIFI_STATE"></uses-permission> <!--这个权限用于获取wifi的获取权限,wifi信息会用来进行网络定位--> <uses-permission android:name="android.permission.CHANGE_WIFI_STATE"></uses-permission> <!--用于访问网络,网络定位需要上网--> <uses-permission android:name="android.permission.INTERNET"></uses-permission> <!--用于读取手机当前的状态--> <uses-permission android:name="android.permission.READ_PHONE_STATE"></uses-permission> <!--写入扩展存储,向扩展卡写入数据,用于写入缓存定位数据--> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"></uses-permission> <!--用于申请调用A-GPS模块--> <uses-permission android:name="android.permission.ACCESS_LOCATION_EXTRA_COMMANDS"></uses-permission> <!--用于申请获取蓝牙信息进行室内定位--> <uses-permission android:name="android.permission.BLUETOOTH"></uses-permission> <uses-permission android:name="android.permission.BLUETOOTH_ADMIN"></uses-permission>最后build就可以打包成aar包了
public class Test : MonoBehaviour { public Text content; public Button button; AndroidJavaClass jc; AndroidJavaObject jo; void Start() { content.text = "654321"; OnStart(); } public void GetLocation() { string[] a; OnStart(); a = jo.Call<string[]>("GetInfo"); content.text = a[0]; if (a[1] != "") { content.text = a[1]; } } void OnStart() { jc = new AndroidJavaClass("com.unity3d.player.UnityPlayer"); jo = jc.GetStatic<AndroidJavaObject>("currentActivity"); }

这样就简单的实现高德的定位功能啦!
文章来源: Unity接入高德SDK实现定位