腾讯MSDK接入untiy3d游戏

1.使用NetBean下载安卓开发sdk,部署开发环境。即是要在NetBeanIDE的插件管理器中下载安卓开发插件。这个是安卓开发的必须要的。

 

2.使用NetBean打开下载的MSDK中的MSDKLibrary项目。构建项目。构建成功之后在bin目录中出现对应的apk文件。我们需要接入unity3d,所以apk不是我们需要的。

我们将unity3d安装目录的Editor\Data\PlaybackEngines\androidplayer\bin 之下可以发现classes.jar文件。我们把它引入MSDKLibrary项目中。

我们需要创建一个继承于UnityPlayerActivity的类,并在onCreate方法中,初始化MSDK

也需要提供两个方法,Pay以及Login,方便在unity3d游戏中调用。

public void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        // MSDKSample用代码游戏需自行检测自身是否重复检测到吃重复的Activity则要把自己finish

        if (WGPlatform.IsDifferentActivity(this)) {

            Logger.d("Warning!Reduplicate game activity was detected.Activity will finish immediately.");

            this.finish();

            return;

        }

        

        baseInfo = new MsdkBaseInfo();

        //游戏必须使用自己的QQ AppId联调

        baseInfo.qqAppId = "100703379";

        baseInfo.qqAppKey = "4578e54fb3a1bd18e0681bc1c734514e";

        baseInfo.wxAppId = "wxcde873f99466f74a";

        baseInfo.wxAppKey = "bc0994f30c0a12a9908e353cf05d4dea";

        //订阅型测试用offerId

        baseInfo.offerId = "100703379"; 

        

        WGPlatform.Initialized(this, baseInfo);

        WGPlatform.handleCallback(getIntent());

 

        WGPlatform.WGSetObserver(new MsdkCallback());// 

 

        // TODO GAME 要加载必要的动态库

 

        // 游戏需要加载此动态库数据上报用

        //System.loadLibrary("NativeRQD"); 

        // 游戏不需要这个这是MSDKSample自用的

        //System.loadLibrary("WeGameSample");

 

}

 

    public void Login() {

        WGPlatform.WGLogin(ePlatform_QQ);

    }

    

    public void Pay()

    {

        Intent intent = new Intent(this,AndroidPaySample.class);   

        this.startActivity(intent);   

    }

 

 

AndroidManifest.xml文件中,增加需要的Activity的配置。

我们主要需要自己新增加的主Activity以及MSDK中的登录和支付Acitvity

<manifest xmlns:android="http://schemas.android.com/apk/res/android"

    package="com.yywlkj"

    android:versionCode="1"

    android:versionName="1.0" >

 

    <application android:label="@string/app_name" android:icon="@drawable/ic_launcher">

        <activity android:name="com.****.****"

                  android:label="@string/app_name"

                  android:configChanges="orientation|screenSize|keyboardHidden"

                  android:screenOrientation="landscape">

            <intent-filter>

                <action android:name="android.intent.action.MAIN" />

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

            </intent-filter>

        </activity>

        <!-- 星号为主类的路径 -->

 

        <activity

          android:name="com.tencent.tauth.AuthActivity"

          android:launchMode="singleTask"

          android:noHistory="true" >

          <intent-filter>

              <action android:name="android.intent.action.VIEW" />

              <category android:name="android.intent.category.DEFAULT" />

              <category android:name="android.intent.category.BROWSABLE" />

              <data android:scheme="tencent100703379" />

          </intent-filter>

      </activity>

      <activity

          android:name="com.tencent.connect.common.AssistActivity"

          android:configChanges="orientation|screenSize|keyboardHidden"

          android:screenOrientation="portrait"

          android:theme="@android:style/Theme.Translucent.NoTitleBar" />

      <activity   

            android:name="com.yywlkj.AndroidPaySample"   

            android:theme="@android:style/Theme.NoTitleBar.Fullscreen"   

            >   

        </activity>  

    <!-- TODO SDK接入 QQ接入配置 END -->

  

   </application>

  <!-- TODO SDK接入必须权限模块 START -->

<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />

<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />

<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />

<uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />

<uses-permission android:name="android.permission.GET_TASKS" />

<uses-permission android:name="android.permission.INTERNET" />

<uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS" />

<uses-permission android:name="android.permission.READ_PHONE_STATE" />

<uses-permission android:name="android.permission.RESTART_PACKAGES" />

<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" />

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

<!-- TODO SDK接入 必须权限模块 END -->

 

</manifest>

 

 

3.构建项目

成功构建之后,在bin目录有对应的apk文件。也会有class目录,我们需要把class目录中的所有类打包。

使用jdk安装目录中的jar程序,打包classes目录中的所有文件

jar -cvf class.jar *

4.在unity3d项目中的插件目录中,新建Android目录,并将MSDK项目中的Res,Libs目录的所有文件拷贝到这个新建目录中,并创建bin目录,将打包好的class.jar拷贝进去。(注意:不需要拷贝之前从Unity安装目录引入的classes.jar文件。

 

 

5.从unity3d游戏中,可以调用java的Pay以及Login方法,打开MSDK的支付以及登录界面。具体可以参考雨松momo的博客Unity3D研究院之打开Activity与调用JAVA代码传递参数

 

        AndroidJavaClass jc = new AndroidJavaClass("com.unity3d.player.UnityPlayer");

        AndroidJavaObject jo = jc.GetStatic<AndroidJavaObject>("currentActivity");

        jo.Call("Login");

 

你可能感兴趣的:(java,android,unity3d)