package com.wenting.youyiplugin; import android.app.Activity; import android.content.Context; import android.content.pm.ApplicationInfo; import android.content.pm.PackageInfo; import android.content.pm.PackageManager; import android.os.Bundle; import android.os.Handler; import android.os.Message; import android.text.TextUtils; import android.util.Log; import android.view.View; import android.content.Intent; import com.unity3d.player.UnityPlayer; import com.unity3d.player.UnityPlayerActivity; import com.excean.lysdk.client.request.CustomizeRequest; import com.excean.lysdk.client.request.LoginRequest; import com.excean.lysdk.client.request.PayRequest; import com.excean.lysdk.client.task.CustomizeTask; import com.excean.lysdk.client.task.CustomizeSender; import com.excean.lysdk.client.task.CustomizeReceiver; import com.excean.lysdk.client.task.LoginResp; import com.excean.lysdk.client.task.LoginTask; import com.excean.lysdk.client.task.PayTask; import com.excean.lysdk.client.PayResp; import com.excean.lysdk.client.Response; import java.util.HashMap; import java.util.Map; public class MainActivity extends UnityPlayerActivity { private final String LOG = "YOUYI_YUNCLIENT_PLUGIN"; private String gameObjectName; private CustomizeReceiver customizeReceiver; private Activity mActivity; private Context mContext; private void callUnityFunc(String funcName, String paramStr) { if (TextUtils.isEmpty(this.gameObjectName)) { Log.e(LOG, "gameObject is null, please set gameObject first"); return; } UnityPlayer.UnitySendMessage(this.gameObjectName, funcName, paramStr); } private void executeWeiBundle(Bundle bundle) { if (bundle == null) return; String msg = bundle.getString("msg", null); String data = bundle.getString("data", null); if (msg == null || msg.length() <= 0) return; callUnityFunc(msg, data); } public void init(String gameObjectName) { this.gameObjectName = gameObjectName; new Thread(new Runnable() { @Override public void run() { CustomizeTask customizeTask = new CustomizeTask(mActivity); CustomizeRequest customizeRequest = new CustomizeRequest(); customizeRequest.putString("wenting_lc_method", "init"); Response response = customizeTask.sendSyncCustomizeRequest(customizeRequest); if (!response.isSuccessful()) { Log.e(LOG, "Execute init Fail !!!"); callUnityFunc("OnInitFailed", ""); } else { executeWeiBundle(response.data()); } } }).start(); } public void login() { new Thread(new Runnable() { @Override public void run() { CustomizeTask customizeTask = new CustomizeTask(mActivity); CustomizeRequest customizeRequest = new CustomizeRequest(); customizeRequest.putString("wenting_lc_method", "login"); Response response = customizeTask.sendSyncCustomizeRequest(customizeRequest); if (!response.isSuccessful()) { Log.e(LOG, "Execute init Fail !!!"); callUnityFunc("OnLoginFailed", ""); } else { executeWeiBundle(response.data()); } } }).start(); } public void switchAccountLogin() { new Thread(new Runnable() { @Override public void run() { CustomizeTask customizeTask = new CustomizeTask(mActivity); CustomizeRequest customizeRequest = new CustomizeRequest(); customizeRequest.putString("wenting_lc_method", "switchAccountLogin"); Response response = customizeTask.sendSyncCustomizeRequest(customizeRequest); if (!response.isSuccessful()) { Log.e(LOG, "Execute switchAccountLogin Fail !!!"); } else { executeWeiBundle(response.data()); } } }).start(); } public void pay(String cpOrderId, String amount, String goodsId, String goodsName, String roleId, String roleName, String serverId, String serverName, int level, String extendParams) { new Thread(new Runnable() { @Override public void run() { CustomizeTask customizeTask = new CustomizeTask(mActivity); CustomizeRequest customizeRequest = new CustomizeRequest(); customizeRequest.putString("wenting_lc_method", "pay"); customizeRequest.putString("cpOrderId", cpOrderId); customizeRequest.putString("amount", amount); customizeRequest.putString("goodsId", goodsId); customizeRequest.putString("goodsName", goodsName); customizeRequest.putString("roleId", roleId); customizeRequest.putString("roleName", roleName); customizeRequest.putString("serverId", serverId); customizeRequest.putString("serverName", serverName); customizeRequest.putInt("level", level); customizeRequest.putString("extendParams", extendParams); Response response = customizeTask.sendSyncCustomizeRequest(customizeRequest); if (!response.isSuccessful()) { Log.e(LOG, "Execute init Fail !!!"); callUnityFunc("OnPayFailed", ""); } else { executeWeiBundle(response.data()); } } }).start(); } public void createRoleLog(String roleId, String roleName, String serverId, String serverName, int level, String spare) { new Thread(new Runnable() { @Override public void run() { CustomizeTask customizeTask = new CustomizeTask(mActivity); CustomizeRequest customizeRequest = new CustomizeRequest(); customizeRequest.putString("wenting_lc_method", "createRoleLog"); customizeRequest.putString("roleId", roleId); customizeRequest.putString("roleName", roleName); customizeRequest.putString("serverId", serverId); customizeRequest.putString("serverName", serverName); customizeRequest.putInt("level", level); customizeRequest.putString("spare", spare); Response response = customizeTask.sendSyncCustomizeRequest(customizeRequest); if (!response.isSuccessful()) { Log.e(LOG, "Execute createRoleLog Fail !!!"); } } }).start(); } public void loginRoleLog(String roleId, String roleName, String serverId, String serverName, int level, String spare) { new Thread(new Runnable() { @Override public void run() { CustomizeTask customizeTask = new CustomizeTask(mActivity); CustomizeRequest customizeRequest = new CustomizeRequest(); customizeRequest.putString("wenting_lc_method", "loginRoleLog"); customizeRequest.putString("roleId", roleId); customizeRequest.putString("roleName", roleName); customizeRequest.putString("serverId", serverId); customizeRequest.putString("serverName", serverName); customizeRequest.putInt("level", level); customizeRequest.putString("spare", spare); Response response = customizeTask.sendSyncCustomizeRequest(customizeRequest); if (!response.isSuccessful()) { Log.e(LOG, "Execute loginRoleLog Fail !!!"); } } }).start(); } public void levelLog(String roleId, String roleName, String serverId, String serverName, int level, String spare) { new Thread(new Runnable() { @Override public void run() { CustomizeTask customizeTask = new CustomizeTask(mActivity); CustomizeRequest customizeRequest = new CustomizeRequest(); customizeRequest.putString("wenting_lc_method", "levelLog"); customizeRequest.putString("roleId", roleId); customizeRequest.putString("roleName", roleName); customizeRequest.putString("serverId", serverId); customizeRequest.putString("serverName", serverName); customizeRequest.putInt("level", level); customizeRequest.putString("spare", spare); Response response = customizeTask.sendSyncCustomizeRequest(customizeRequest); if (!response.isSuccessful()) { Log.e(LOG, "Execute levelLog Fail !!!"); } } }).start(); } public void reportAction(HashMap params) { new Thread(new Runnable() { @Override public void run() { CustomizeTask customizeTask = new CustomizeTask(mActivity); CustomizeRequest customizeRequest = new CustomizeRequest(); customizeRequest.putString("wenting_lc_method", "reportAction"); for (Map.Entry entry : params.entrySet()) { Object val = entry.getValue(); if (val instanceof Integer) { customizeRequest.putInt(entry.getKey(), (Integer) val); } else if (val instanceof Boolean) { customizeRequest.putBoolean(entry.getKey(), (Boolean) val); } else if (val instanceof Byte) { customizeRequest.putByte(entry.getKey(), (Byte) val); } else if (val instanceof Short) { customizeRequest.putShort(entry.getKey(), (Short) val); } else if (val instanceof Long) { customizeRequest.putLong(entry.getKey(), (Long) val); } else if (val instanceof Float) { customizeRequest.putFloat(entry.getKey(), (Float) val); } else if (val instanceof Double) { customizeRequest.putDouble(entry.getKey(), (Double) val); } else { Log.d(LOG, "Execute levelLog Fail !!! params's type is not support" + val.getClass().getName()); } } Response response = customizeTask.sendSyncCustomizeRequest(customizeRequest); if (!response.isSuccessful()) { Log.e(LOG, "Execute levelLog Fail !!!"); } } }).start(); } public void exit() { new Thread(new Runnable() { @Override public void run() { CustomizeTask customizeTask = new CustomizeTask(mActivity); CustomizeRequest customizeRequest = new CustomizeRequest(); customizeRequest.putString("wenting_lc_method", "exit"); Response response = customizeTask.sendSyncCustomizeRequest(customizeRequest); if (!response.isSuccessful()) { Log.e(LOG, "Execute exit Fail !!!"); } else { executeWeiBundle(response.data()); } } }).start(); } // Setup activity layout @Override protected void onCreate(Bundle savedInstanceState) { mActivity = this; mContext = this; if (customizeReceiver == null) { customizeReceiver = new CustomizeReceiver(mContext, new CustomizeReceiver.a() { @Override public void onCustomizeMessageChange(Bundle bundle) { //收到微端消息 executeWeiBundle(bundle); } }); } super.onCreate(savedInstanceState); } // Quit Unity @Override protected void onDestroy () { super.onDestroy(); if (customizeReceiver != null) { customizeReceiver.destroy(); } } }