Unity接入高德SDK实现定位

匿名 (未验证) 提交于 2019-12-03 00:36:02


三.编写主函数

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");     }

这样就简单的实现高德的定位功能啦!

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!