Unity高德LBS

1、準備html

高德開發者頁面註冊產品 android

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

 

1.2填寫應用應用信息api

 

 

1.3下載Android 定位SDK app

http://lbs.amap.com/api/android-location-sdk/locationsummaryide

解壓獲得 AMap_Location_V3.6.1_20171012.jar工具

 

二.新建Eclipse項目ui

2.1首先新建一個Android工程,在最小SDK版本里選4.0以上,否則在Unity打包的時候會報錯。this

 

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

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.mirror.locationtest"
    android:versionCode="1"
    android:versionName="1.0" >

    <uses-sdk
        android:minSdkVersion="16"
        android:targetSdkVersion="21" />

        <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"></uses-permission>
        <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"></uses-permission>
        <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"></uses-permission>
        <uses-permission android:name="android.permission.ACCESS_WIFI_STATE"></uses-permission>
        <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>

        <application
            android:allowBackup="true"
            android:icon="@drawable/ic_launcher"
            android:label="@string/app_name"
            android:theme="@style/AppTheme" >
            
            <service android:name="com.amap.api.location.APSService"></service>

            <activity
                android:name="com.mirror.locationtest.MainActivity"
                android:label="@string/app_name" >
                <intent-filter>
                    <action android:name="android.intent.action.MAIN" />

                    <category android:name="android.intent.category.LAUNCHER" />
                </intent-filter>
            </activity>

            <meta-data android:name="com.amap.api.v2.apikey" android:value="041cc66fb397b6f30cdb8683d24c7833">          
            </meta-data>

        </application>

    </manifest>

 

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<AndroidJavaObject>("currentActivity");
        text.text = jo.Call<string>("GetInfo");
    }
}

 

2.8運行結果

 

2.9Unity打包配置

 

 

三根據返回錯誤代碼判斷錯誤

3.1錯誤代碼對照表

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

相關文章
相關標籤/搜索