阿里游戏 游戏sdk接入教程:uc接入( 三 )


文章插图
以上.xml修改好了 。
做完以上步骤,接下来,我们开始接入SDK的接口 。
首先打开我们的.java

阿里游戏  游戏sdk接入教程:uc接入

文章插图
刚刚我让大家把这个文件里的代码都删了,现在应该除了第一行是没有东西的,然后把下面的代码复制进去,注意别把第一行的代码覆盖了 。
import android.app.Activity;import android.os.Bundle;import android.util.Log;import cn.uc.gamesdk.UCGameSdk;import cn.uc.gamesdk.even.SDKEventKey;import cn.uc.gamesdk.even.SDKEventReceiver;import cn.uc.gamesdk.even.Subscribe;import cn.uc.gamesdk.exception.AliLackActivityException;import cn.uc.gamesdk.exception.AliNotInitException;import cn.uc.gamesdk.open.GameParamInfo;import cn.uc.gamesdk.open.OrderInfo;import cn.uc.gamesdk.open.UCLogLevel;import cn.uc.gamesdk.open.UCOrientation;import cn.uc.gamesdk.param.SDKParamKey;import cn.uc.gamesdk.param.SDKParams;public class MainActivity extends Activity {final static String TAG = "demo";UCGameSdk sdk;int cpId = 0;int gameId = 0;int serverId = 0;@Overrideprotected void onCreate(Bundle savedInstanceState) {// TODO Auto-generated method stubsuper.onCreate(savedInstanceState);setContentView(R.layout.activity_main);UCGameSdk.defaultSdk().registeSDKEventReceiver(eventReceiver);}@Overrideprotected void onDestroy() {// TODO Auto-generated method stubsuper.onDestroy();UCGameSdk.defaultSdk().unregisterSDKEventReceiver(eventReceiver);sdk = UCGameSdk.defaultSdk();}private void init() {// TODO Auto-generated method stubGameParamInfo gameParamInfo = new GameParamInfo();gameParamInfo.setCpId(cpId);// 上文提到的游戏参数 参数类型intgameParamInfo.setGameId(gameId);// 上文提到的游戏参数 参数类型intgameParamInfo.setServerId(serverId);// 上文提到的游戏参数 参数类型int// 设置是否支持查询充值历史和显示切换账号功能,// 如果不设置,默认具有查询充值历史记录,不具有切换账户功能gameParamInfo.setEnablePayHistory(true);// 开启查询充值历史功能gameParamInfo.setEnableUserChange(true);// 开启账号切换功能// 设置SDK屏幕方向// LANDSCAPE:横屏,横屏游戏必须设置为横屏,PORTRAIT:竖屏gameParamInfo.setOrientation(UCOrientation.PORTRAIT);SDKParams sdkParams = new SDKParams();sdkParams.put(SDKParamKey.LOG_LEVEL, UCLogLevel.DEBUG);// 日志等级sdkParams.put(SDKParamKey.GAME_PARAMS, gameParamInfo);// FIXME always debug// 是否打开调试模式 。// 在为true的时候,会连接到联调测试环境(sdk.test4.9game.cn),// 当为false的时候则会连接到正式环境(sdk.g.9game.cn) 。sdkParams.put(SDKParamKey.DEBUG_MODE, false);try {sdk.initSdk(MainActivity.this, sdkParams);} catch (AliLackActivityException e) {// TODO Auto-generated catch blocke.printStackTrace();}}private void login() {try {sdk.login(MainActivity.this, null);} catch (AliLackActivityException e) {// TODO Auto-generated catch block activity为空,异常处理e.printStackTrace();} catch (AliNotInitException e) {// TODO Auto-generated catch block 未初始化,异常处理e.printStackTrace();}}private void pay() {SDKParams sdkParams = new SDKParams();sdkParams.put(SDKParamKey.CALLBACK_INFO, "{\"test\":true}");sdkParams.put(SDKParamKey.SERVER_ID, "1");sdkParams.put(SDKParamKey.ROLE_ID, "AAA");sdkParams.put(SDKParamKey.ROLE_NAME, "BBB");sdkParams.put(SDKParamKey.GRADE, "grade1");sdkParams.put(SDKParamKey.NOTIFY_URL, "");sdkParams.put(SDKParamKey.AMOUNT, "2.33");sdkParams.put(SDKParamKey.CP_ORDER_ID, "20160000101001");sdkParams.put(SDKParamKey.ACCOUNT_ID, "123");sdkParams.put(SDKParamKey.SIGN_TYPE, "MD5");sdkParams.put(SDKParamKey.SIGN, "游戏服务器根据以上信息签名后的结果");// 以上字段的值都需要由游戏服务器生成try {UCGameSdk.defaultSdk().pay(MainActivity.this, sdkParams);} catch (IllegalArgumentException e) {// TODO Auto-generated catch block 参数错e.printStackTrace();} catch (AliLackActivityException e) {// TODO Auto-generated catch block activity nulle.printStackTrace();} catch (AliNotInitException e) {// TODO Auto-generated catch block 未初始化e.printStackTrace();}}private void sendUserInfo() {SDKParams sdkParams = new SDKParams();sdkParams.put(SDKParamKey.STRING_ROLE_ID, "roleId");sdkParams.put(SDKParamKey.STRING_ROLE_NAME, "roleName");sdkParams.put(SDKParamKey.LONG_ROLE_LEVEL, 1);sdkParams.put(SDKParamKey.STRING_ZONE_ID, "zoneId");sdkParams.put(SDKParamKey.STRING_ZONE_NAME, "serverId");sdkParams.put(SDKParamKey.LONG_ROLE_CTIME, 1456397360);try {sdk.submitRoleData(MainActivity.this, sdkParams);} catch (IllegalArgumentException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (AliNotInitException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (AliLackActivityException e) {// TODO Auto-generated catch blocke.printStackTrace();}}private void logout(){try {sdk.logout(MainActivity.this, null);} catch (AliLackActivityException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (AliNotInitException e) {// TODO Auto-generated catch blocke.printStackTrace();}}private void exit() {try {sdk.exit(MainActivity.this, null);} catch (AliLackActivityException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (AliNotInitException e) {// TODO Auto-generated catch blocke.printStackTrace();}}SDKEventReceiver eventReceiver = new SDKEventReceiver() {@Subscribe(event = SDKEventKey.ON_INIT_SUCC)private void onInitSucc() {// 初始化成功Log.d(TAG, "init success");}@Subscribe(event = SDKEventKey.ON_INIT_FAILED)private void onInitFailed(String data) {// 初始化失败Log.d(TAG, "init failed:" + data);}@Subscribe(event = SDKEventKey.ON_LOGIN_SUCC)private void onLoginSucc(String sid) {// 登录成功// sid为用户的登录会话标识,用于给游戏服务器校验用户登录状态使用 。Log.d(TAG, "login success:sid:" + sid);}@Subscribe(event = SDKEventKey.ON_LOGIN_FAILED)private void onLoginFailed(String desc) {// 登录失败Log.d(TAG, "login failed:" + desc);}@Subscribe(event = SDKEventKey.ON_LOGOUT_SUCC)private void onLogoutSucc() {// 登出成功Log.d(TAG, "logout success");}@Subscribe(event = SDKEventKey.ON_LOGOUT_FAILED)private void onLogoutFailed() {// 登出失败Log.d(TAG, "logout failed");}@Subscribe(event = SDKEventKey.ON_EXIT_SUCC)private void onExit(String desc) {// 退出游戏Log.d(TAG, "exit:" + desc);MainActivity.this.finish();System.exit(0);}@Subscribe(event = SDKEventKey.ON_EXIT_CANCELED)private void onExitCanceled(String desc) {// 取消退出Log.d(TAG, "exit cancel:" + desc);}@Subscribe(event = SDKEventKey.ON_CREATE_ORDER_SUCC)private void onCreateOrderSucc(OrderInfo orderInfo) {// 支付成功if (orderInfo != null) {String txt = orderInfo.getOrderAmount() + ","+ orderInfo.getOrderId() + "," + orderInfo.getPayWay();Log.d(TAG, "充值成功: " + txt + "\n");}Log.i(TAG, "pay succ");}@Subscribe(event = SDKEventKey.ON_PAY_USER_EXIT)private void onPayUserExit(OrderInfo orderInfo) {// 支付失败if (orderInfo != null) {String txt = orderInfo.getOrderAmount() + ","+ orderInfo.getOrderId() + "," + orderInfo.getPayWay();Log.d(TAG, "充值失败: " + txt + "\n");}Log.i(TAG, "pay fail");}};}