1. 程式人生 > >Unity3D呼叫第三方SDK(之一)從eclipse到Unity3D

Unity3D呼叫第三方SDK(之一)從eclipse到Unity3D

http://blog.csdn.net/hiramtan/article/details/8927398

本篇展示在Unity3D中呼叫友盟SDK的實現方法.

開啟eclipse新建一個android工程:

設定package neme (需要注意:有一些資料註明package name需要與unity3D裡面的bundle identifier一致.

但是經過測試,就算是不一致,功能仍可實現....


找到SDK:需要匯入Unity3D自身的classes.jar和友盟 SDK。首先找到Unity3D安裝目錄下的classes.jar。具體路徑在你的Unity3D的安裝目錄下的這個資料夾中Editor\Data\PlaybackEngines\androidplayer\bin然後就是從網上下載的友盟 SDK了。

在Eclipse中匯入SDK,具體做法是右鍵eclipse工程,選擇最後一項:


選擇java build path後點擊add external jars,找到上面提到的classes.jar和友盟 SDK,分別匯入,點選ok,如下:


匯入成功後在eclipse中會多出下面兩項:


然後需要修改MainActivity.java如下所示(下面會有完整程式碼):


到這裡Unity3D部分的工作算是完成了,下面就是整合第三方SDK了。SDK要求的配置資訊及邏輯參考SDK官網的開發文件。

這裡用的是友盟的SDK,參照友盟SDK的開發者文件。

這時我們需要在友盟網站新增一個應用,網站會隨機分配一個AppKey。怎樣註冊友盟服務和怎樣新增應用見官方說明。

(如果我們需要在遊戲中新增聯通付費SDK,當然不需要與友盟相關的工作。而是去聯通開發者網站新增應用並得該應用內建付費的AppKey)

我這裡在友盟新增的應用資訊如下,這裡我們需要獲知友盟分配的AppKey。如下:


友盟官網要求配置AndroidManifest.xml如下,具體看友盟官方開發文件。


為此我們在Eclipse中配置AndroidManifest.xml如下(主要就是將友盟要求新增的部分貼上進去):


修改如下:

  1. <?xmlversion="1.0"encoding="utf-8"?>
  2. <manifestxmlns:android="http://schemas.android.com/apk/res/android"
  3.     package="com.example.test"
  4.     android:versionCode="1"
  5.     android:versionName="1.0">
  6.     <uses-sdk
  7.         android:minSdkVersion="8"
  8.         android:targetSdkVersion="17"/>
  9.     <application
  10.         android:allowBackup="true"
  11.         android:icon="@drawable/ic_launcher"
  12.         android:label="@string/app_name"
  13.         android:theme="@style/AppTheme">
  14.         <activity
  15.             android:name="com.example.test.MainActivity"
  16.             android:label="@string/app_name">
  17.             <intent-filter>
  18.                 <actionandroid:name="android.intent.action.MAIN"/>
  19.                 <categoryandroid:name="android.intent.category.LAUNCHER"/>
  20.             </intent-filter>
  21.         </activity>
  22.         <meta-dataandroid:value="523f9df156240b085a054288"android:name="UMENG_APPKEY"></meta-data>
  23. <meta-dataandroid:value="Channel ID"android:name="UMENG_CHANNEL"/>
  24.     </application>
  25. <uses-permissionandroid:name="android.permission.ACCESS_NETWORK_STATE"></uses-permission>
  26. <uses-permissionandroid:name="android.permission.INTERNET"></uses-permission>
  27. <uses-permissionandroid:name="android.permission.READ_PHONE_STATE"></uses-permission>
  28. </manifest>

友盟官網要求新增引用import com.umeng.analytics.MobclickAgent,友盟官網要求如下:

參照官網開發文件呼叫SDK中封裝的方法,最終修改MainActivity.java如下:

  1. package com.example.test;    
  2. import android.os.Bundle;    
  3. import android.app.Activity;    
  4. import android.view.Menu;    
  5. import com.unity3d.player.UnityPlayerActivity;//Unity3D  
  6. import com.umeng.analytics.MobclickAgent;//友盟  
  7. publicclass MainActivity extends UnityPlayerActivity {    
  8.     @Override
  9.     protectedvoid onCreate(Bundle savedInstanceState) {    
  10.         super.onCreate(savedInstanceState);    
  11.         //setContentView(R.layout.activity_main);  
  12.     }    
  13.     @Override
  14.     publicboolean onCreateOptionsMenu(Menu menu) {    
  15.         // Inflate the menu; this adds items to the action bar if it is present.  
  16.         getMenuInflater().inflate(R.menu.main, menu);    
  17.         returntrue;    
  18.     }    
  19.     publicvoid onResume() {  
  20.         super.onResume();  
  21.         MobclickAgent.onResume(this);  
  22.         }  
  23.         publicvoid onPause() {  
  24.         super.onPause();  
  25.         MobclickAgent.onPause(this);  
  26.         }  
  27.     publicvoid onEvent()    
  28.     {    
  29.         MobclickAgent.onEvent(this"testevent");    
  30.         System.out.println("test");  
  31.     }    
  32. }    
然後在Eclipse中匯出Jar包在Unity3D中使用,下面是匯出流程,匯出/選擇匯出路徑,如下:



然後在Unity3D中建立如下目錄,其中AndroidManifest和res資料夾是從Eclipse專案中複製出來的(找到工程目錄直接複製到Unity3D目錄中即可)。

bin資料夾和libs資料夾是自己建立的,其中bin資料夾中放eclipse匯出的jar包,libs中放第三方jar包。如下:


在Unity3D Test.cs中新增程式碼呼叫在eclipse中建立的方法onEvent();

  1. using UnityEngine;  
  2. using System.Collections;  
  3. publicclass Test : MonoBehaviour  
  4. {  
  5.     AndroidJavaClass clas;  
  6.     AndroidJavaObject obj;  
  7.     // Use this for initialization  
  8.     void Start()  
  9.     {  
  10.         clas = new AndroidJavaClass("com.unity3d.player.UnityPlayer");  
  11.         obj = clas.GetStatic<AndroidJavaObject>("currentActivity");  
  12.     }  
  13.     void OnGUI()  
  14.     {  
  15.         if (GUI.Button(new Rect(Screen.width * 0.3f, Screen.height * 0.3f, Screen.width * 0.3f, Screen.height * 0.3f), "Click"))  
  16.             obj.Call("onEvent");  
  17.     }  
  18. }  

下面就可以看到結果了:

1.執行應用點選click後logcat如下:


2.在友盟官網檢視自定義事件:

能看到自定義事件的統計,說明在Unity3D中呼叫友盟SDK成功。呼叫其它SDK方法同理。

如有任何建議請發郵件至[email protected]


相關推薦

Unity3D呼叫第三方SDK(之一)eclipse到Unity3D

http://blog.csdn.net/hiramtan/article/details/8927398 本篇展示在Unity3D中呼叫友盟SDK的實現方法. 開啟eclipse新建一個android工程: 設定package neme (需要注意:有一

Unity3D自學記錄】 Unity3D呼叫第三方SDK之友盟

本篇展示在unity3d中呼叫友盟SDK的實現方法,呼叫聯通/移動付費SDK同理,下面是製作流程。 首先附上專案原始碼地址:https://github.com/hiramtan/unity3d-testsdk SDK下載及使用方法說明見官方開發文件:http://dev.umeng.com/

關於呼叫第三方sdk

1.微信,qq分享 獲取開發者平臺的appid和secretid,在app.gradle裡面進行配置 2.高德地圖,也是獲得value值 <meta-data android:name="com.amap.api.v2.apikey" androi

呼叫第三方地圖導航,高德、百度、谷歌,無需引用sdk

   先判斷是否存在地圖,存在就可以進入導航,沒有的話就預設進入市場下載app,程式碼如下: i1.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View

深入淺出聊Unity3D項目優化:Draw Calls到GC (難度2 推薦5)

分配 shade 觸發 比較 抉擇 share 關鍵字 兩個 聲明 原文出處: 慕容小匹夫的博客(@慕容小匹夫) 前言: 剛開始寫這篇文章的時候選了一個很土的題目。。。《Unity3D優化全解析》。因為這是一篇臨時起意才寫的文章,而且陳述的都是既有的事實,因而給自己“

Unity接第三方SDK時遇到的坑

log over err you tail 官方 銀聯 string 渲染 1、大部分SDK的方法需要在線程中執行,一般會放在主線程裏執行,安卓中主線程一般用於UI渲染。 this.runOnUiThread(new Runnable() {

yii2.0 集成/引入第三方sdk

控制器 es2017 yii2.0 nbsp 技術分享 文件夾 ++ 例子 正常 首先下載自己要使用的sdk包放到vendor文件夾下面:我以接入ping++為例子如下: 然後在入口文件出引入文件的配置文件: 下面就是在控制器使用了: 下面就可以根據自己要使用的的

簡便方法搞定第三方SDK的Jar包在DelphiXE5中的引入

earch html targe bject jar itl clas article .html 簡便方法搞定第三方SDK的Jar包在DelphiXE5中的引入 (2014-02-21 17:30:17) 轉載▼ 標簽: android delphi

移動web:原生開發打包,嵌入h5頁面 webApp:全部都是H5開發的應用 混合APP:使用第三方開發平臺apicloud,appcan,hbuilder等開發,cordova技術打包 原生APP:就是eclipse開發或者studio等工具開發

應用 手機 .com net ack 自動連接 pan 經驗 使用 論壇43213 移動端webApp兼容問題解決 談談App混合開發 Hybrid APP混合開發的一些經驗和總結 PhoneGap是一個采用HTML,CSS和JavaScript的技術,創建

Linux學習之一-三個重要人物的故事和一張思維導圖說起

工具 困難 一個人 人工智 計算 全世界 str 三方 微軟 Linux是一套自由加開放源代碼的類Unix操作系統,誕生於1991年10月5日(第一次正式向外公布),由芬蘭學生Linus Torvalds和後來陸續加入的眾多愛好者共同開發完成。 Linux是一個基於POSI

iOS開發—呼叫第三方地圖導航

專案裡面要求點擊發送的位置,  需要導航, 導航兩種實現方式 (整合第三方SDK、URL跳轉第三方應用)  專案要求實現直接跳轉 所以接下來做的是實現URL跳轉第三方地圖來導航了專案實現如下的效果: 思路:傳入的目的地經緯度,再呼叫第三方的導航 第三方導航

java使用httpclient呼叫第三方介面

java使用httpclient呼叫第三方介面 HttpClientUtil工具類 package com.fz.util; import java.io.File; import java.net.URL; import java.util.ArrayList; im

WebService呼叫第三方服務(中英文翻譯)

本篇部落格內容是應用webservice知識來獲取第三方服務,這裡以中英文轉換的服務為例。服務釋出地址:http://fy.webxml.com.cn/webservices/EnglishChinese.asmx?wsdl。如果需要其他提供其他服務,可百度搜索webxml。 1.新

Qt Creator 呼叫第三方庫libZPlay 解析音訊檔案 標題、專輯、檔名、藝術家

libZPlay libZPlay庫集成了所有支援格式(mp3, mp2, mp1, ogg, flac, ac3, aac, oga, wav and pcm )的編碼解碼器。 一、官網下載sdk http://libzplay.sourceforge.net/ 二、pro檔案修改:

呼叫第三方介面獲取資料寫入資料庫

系統框架:springboot(和框架沒有什麼太大關係,僅記錄一下) 呼叫路徑:controller→service 第三方介面:http://xx.xxx.com:9905/api/list?transtime=20181017105600&token=abcdefghijklmn

Android提供aar包給Unity3d呼叫

1.aar包製作 下面通過手機振動為例:PhoneVibrate package com.gamestar.nativesoundpool; import android.Manifest; import android.app.Activity; import android.app.S

python呼叫第三方工具(命令)的方法及區別

一 前言 在上篇《關於os.popen你可能不知道的》中,提到了呼叫第三方工具或命令的os.popen方法,同時也指出了使用中可能遇到的坑。本文就介紹下python提供了哪些方法可以執行第三方工具或命令,以及它們的用法和區別。   二 主要方法 1.  os.system 這

第三方SDK中的巨坑

開發中經常會使用第三方SDK,尤其是那些看不到原始碼的SDK。出現了崩潰真是無處下手。由於最近又遇到一個之前遇到的錯誤,今天分享一下: 執行程式會出現如下錯誤資訊: was compiled with optimization - stepping may behave oddly;

Android平臺下JNI呼叫第三方so庫

 首先說一下在網上查詢資料時,對於呼叫第三方so庫,有人說有兩種方法: 1.    對於so庫的API符合JNI格式(即使用javah指令生成的標頭檔案中那種格式),可以在Java程式碼中宣告它對應的native方法,直接調  用。 &

如何呼叫第三方API實現圖片上傳?

這裡是修真院後端小課堂,每篇分享文從 【背景介紹】【知識剖析】【常見問題】【解決方案】【編碼實戰】【擴充套件思考】【更多討論】【參考文獻】 八個方面深度解析後端知識/技能,本篇分享的是: 【如何呼叫第三方API實現圖片上傳?  】 1.背景介紹   在