GJM:Unity导入百度地图SDK [转载]

  • 感谢您的阅读。喜欢的、有用的就请大哥大嫂们高抬贵手“推荐一下”吧!你的精神支持是博主强大的写作动力以及转载收藏动力。欢迎转载!
  • 版权声明:本文原创发表于 【请点击连接前往】 ,未经作者同意必须保留此段声明!如有问题请联系我,侵立删,谢谢!
  • 我的博客:http://www.cnblogs.com/GJM6/  –  传送门:【点击前往

Unity导入百度地图SDK

自然以为生简短的通SDK,断断续续弄了漫长,基本看满了国内外大大小小的网站,国内比较知名的简单篇教程:第一单凡是雨松的:http://www.xuanyusong.com/archives/667
仲单凡是立时篇博客:http://stephen830.iteye.com/blog/2088504
参照上述两篇,其中流程和做法基本都是对的,只是原理与细节要没有说知道,导致多口接抱SDK时纸质其可是不知其所以然,所以我或者拿自家当下一个星期踩了之坑且记录下来,希望下次境遇相同的问题发个参考。

就首作品最终实现之意义:打开应用后率先出现的场景,点击场景中的一个Button按钮后弹来百度地图界面。

Eclipse环境多建筑等表现上同篇稿子:
以Eclipse导入SDK碰到的题材总:http://anchorart9.com/2016/10/23/androidsdksubmit/

前天及时首小说要讲点儿块配置:Android和Unity.
1.Android点部署(我采纳的凡Eclipse)
1)首先创造安卓工程,这里注意的是minimum Required
SDK应该采用4.0勿然后边会报错。

 

 

 

2)复制百度地图SDK下之libs文件夹(注意这里少篇稿子都说假诺导入Unity的Class.jar,其实是圈需求的,我之所以了一个中层来特别写接口,所以临时不要UnityPlayerActivity这些近乎)复制进来后使下图:这里特别留意:把v8a和x86_64个别独文件夹删掉,不然到Unity里会报错,三单公文夹名字分别代表不与手机的CPU类型,x86_64是代表64的平板。

 

**

**

 

3)写少单近乎,一个中等层类【MainActivity】用来描写接口调用百度地图的Activity,一个凡百度地图的类继承Activity,因为那是百度地图的界面类,坚守Activity的生命周期,要以onCreat钩子方法中先导化百度地图界面。[mw_shl_code=java,true]package
com.baidulbs.lbssdk;

import android.app.Activity;
import android.app.AlertDialog;
import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.util.Log;
import android.widget.Toast;
public class MainActivity {

    private static Context unityContext;
    private static Activity unityActivity;
    
   //init方法,用来传播上下文    
    public static void init(Context paramContext){
  unityContext = paramContext.getApplicationContext();
  unityActivity = (Activity) paramContext;
    }
  public static void StartActivity0()    {   
  // TODO Auto-generated method stub
    
    unityActivity.runOnUiThread(new Runnable()
  {    
   public void run()    
   {    
  try{
    Log.i(“startA”, “startActivity0”);
    Intent intent = new Intent(unityActivity,BaiduMap.class);    
   unityActivity.startActivity(intent);
  }
  catch (Exception e) {
  e.printStackTrace();
    
    }
   }
  });
    }
}
[/mw_shl_code]

[mw_shl_code=java,true]package com.baidulbs.lbssdk;

import com.baidu.mapapi.SDKInitializer;
import com.baidu.mapapi.map.MapView;
import android.app.Activity;
import android.os.Bundle;
import android.util.Log;

public class BaiduMap extends Activity {
  MapView mMapView = null; 
    @Override
   protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
  
    Log.i(“BaiduActivityTest”, “进入了”);
    SDKInitializer.initialize(getApplicationContext());
    Log.i(“BaiduActivityTest”, “伊始化完成”);
    setContentView(R.layout.activity_main); 
    Log.i(“BaiduActivityTest”, “设置面板完成”);
    mMapView = (MapView) findViewById(R.id.bmapView);
    Log.i(“BaiduActivityTest”, “先河化地图完成”);
   }
}[/mw_shl_code]

顾写几单Log方便查看Logcat,在此以前一向为此ADB查看日志发现众多log不详细,比如window弹不出它就单纯报WindowChangeFales.

4)配置AndroidManifest.xml,此间注意:改成为你的包名,并添加BaiduMap那个Activity,还有你协调之Key和一部分权,还要注意用Unity的Activity设置为主启动,雨松的博客和他的衍生博客均是管承了UnityPlayerActivity的MainActivity设置为主启动,然后也不加以Unity的Acitivity直接就复制进Unity中Plugins-Android目录了,这样造成的名堂就是是预先启动Android界面了。自此用没参加MainActivity是以他只不过当一个中间层,也绝非继承Activity,只有BaiduMap那多少个看似是继承Activity的。这里并非仅仅抄雨松他们之博客,要精通乃自己之求以及规律,他们为都是供参考和辅导。
[mw_shl_code=applescript,true]<?xml version=”1.0″
encoding=”utf-8″?>
<manifest
xmlns:android=”http://schemas.android.com/apk/res/android
    package=”com.baidulbs.lbssdk”
    android:versi”1″
    android:versi”1.0″ >

    <uses-sdk
  android:minSdkVersion=”14″
  android:targetSdkVersion=”25″ />
    <uses-permission
android:name=”android.permission.ACCESS_NETWORK_STATE”/>
  <uses-permission android:name=”android.permission.INTERNET”/>
  <uses-permission
android:name=”com.android.launcher.permission.READ_SETTINGS” />
  <uses-permission
android:name=”android.permission.WAKE_LOCK”/>
  <uses-permission
android:name=”android.permission.CHANGE_WIFI_STATE” />
  <uses-permission
android:name=”android.permission.ACCESS_WIFI_STATE” />
  <uses-permission android:name=”android.permission.GET_TASKS”
/>
  <uses-permission
android:name=”android.permission.WRITE_EXTERNAL_STORAGE”/>
  <uses-permission android:name=”android.permission.WRITE_SETTINGS”
/>

    <application
  android:allowBackup=”true”
  android:icon=”@drawable/ic_launcher”
  android:label=”@string/app_name”
  android:theme=”@style/AppTheme” >
   <meta-data
  android:name=”com.baidu.lbsapi.API_KEY”
  android:value=”你的Key” /> 
  <activity  
   android:theme=”@android:style/Theme.NoTitleBar.Fullscreen”  
   android:name=”com.baidulbs.lbssdk.BaiduMap”>    
  </activity> 
    <activity
   android:name=”com.unity3d.player.UnityPlayerActivity”>
   <intent-filter>
    <action android:name=”android.intent.action.MAIN” />

    <category android:name=”android.intent.category.LAUNCHER” />
   </intent-filter>
   <meta-data
   android:name=”unityplayer.ForwardNativeEventsToDalvik”
   android:value=”true” /> 
  </activity>  
    </application>
    
</manifest>[/mw_shl_code]
5)导处jar包,直接右键项目-Export-Next,直选中scr文件夹,然后导出就执行了,好多博客当此间讲的都怪乱。

 

 

至此Android这块的配置一体了。

2.Unity地点安排
1)将Android工程被的libs+res+AndroidManifest+百度地图Demo中的assets(有朋友出到末端因为每加这个保险出错)都复制到Unity目录下,建立bin文件夹,将从包好之.jar文件复制到bin文件夹下:

 

 

 

2)在Unity中编辑测试代码:
[mw_shl_code=csharp,true]using UnityEngine;
using UnityEngine.UI;
using System.Collections;

public class Test : MonoBehaviour {
   // Update is called once per frame
    public Button btnStartLBS;
    public Button btnStartLBSMap;

    AndroidJavaClass unityPlayer;
    AndroidJavaObject currentActivity;
    AndroidJavaClass androidCall;
    void Start()
    {
  //获取context
  unityPlayer = new
AndroidJavaClass(“com.unity3d.player.UnityPlayer”);
  currentActivity =
unityPlayer.GetStatic<AndroidJavaObject>(“currentActivity”);

  androidCall = new
AndroidJavaClass(“com.baidulbs.lbssdk.MainActivity”);
  androidCall.CallStatic(“init”, currentActivity);

   
  btnStartLBS.onClick.AddListener(BtnStartLBSOnClick);
  btnStartLBSMap.onClick.AddListener(BtnStartLBSMapOnClick);
  
    }
  void Update ()
  {
    //当用户仍动手机的再次来到键或home键退出娱
    if (Input.GetKeyDown(KeyCode.Escape) ||
Input.GetKeyDown(KeyCode.Home) )
   {
   Application.Quit();
   }
  }

    void BtnStartLBSMapOnClick()
    {
  androidCall.CallStatic(“StartActivity0”);

  Debug.Log(“2”);
    }
}[/mw_shl_code]
3)公布此要拿包名与您Android项目面临包名一致。

 

 

4)勾上Development Build然后Build and
Run.这时你要并上真机举办测试在Eclipse中开辟Logcat就好翻Log日志了,要翻开自己设置的Log可以当左手添加Filter,在里添加自己的Tag,例如我往日卡在起先化这里,也堪当AndroidSDK-platform-tools目录下以命令:adb
logcat -s Unity举行调试(这种措施展现新闻不净提出依旧用Eclipse调试)。

 

 

5)最后效果:点击按钮后超过反到百度地图界面。

 

 

原文链接:http://anchorart9.com/2016/11/13/unity%E6%8E%A5%E5%85%A5%E7%99%BE%E5%BA%A6%E5%9C%B0%E5%9B%BEsdk/

 

相关文章