全民消消乐电信SDK对接

来源:互联网 发布:p2p下载软件哪个好 编辑:程序博客网 时间:2024/04/28 19:30

<1>

package org.cocos2dx.cpp;import java.util.HashMap;import java.util.Map;import org.cocos2dx.lib.Cocos2dxActivity;import org.cocos2dx.lib.Cocos2dxGLSurfaceView;import cn.egame.terminal.paysdk.EgamePay;import cn.egame.terminal.paysdk.EgamePayListener;import cn.egame.terminal.sdk.log.EgameAgent;import cn.play.dserv.CheckTool;import cn.play.dserv.ExitCallBack;import android.app.ProgressDialog;import android.content.Context;import android.os.Bundle;import android.os.Handler;import android.os.Message;import android.util.Log;import android.view.KeyEvent;import android.widget.Toast;public class AppActivity extends Cocos2dxActivity {//private long exitTime = 0;private static AppActivity instance = null;private int g_type = -1;@Overrideprotected void onCreate(final Bundle savedInstanceState) {super.onCreate(savedInstanceState);instance = AppActivity.this;//初始化sdkEgamePay.init(this);}public Cocos2dxGLSurfaceView onCreateView(){Cocos2dxGLSurfaceView glSurfaceView = new Cocos2dxGLSurfaceView(this);glSurfaceView.setEGLConfigChooser(5, 6, 5, 0, 16, 8);return glSurfaceView;}@Overrideprotected void onPause() {// TODO Auto-generated method stubsuper.onPause();EgameAgent.onPause(this);}    @Overrideprotected void onResume() {// TODO Auto-generated method stubsuper.onResume();EgameAgent.onResume(this); }//public static Object getInstance(){return instance;}      @Override   public boolean onKeyDown(int keyCode, KeyEvent event){   Log.e("<<<onKeyDown", "<<<onKeyDown");   if(keyCode == KeyEvent.KEYCODE_BACK && event.getAction() == KeyEvent.ACTION_DOWN){   exitGame();//   if(System.currentTimeMillis() - exitTime > 2000){//   Toast.makeText(getApplicationContext(), "再按一次退出程序", Toast.LENGTH_SHORT).show();//   exitTime = System.currentTimeMillis();//   }else{//   //游戏退出,调用sdk退出代码//   exitGame();////   finish();////   System.exit(0);//   }   return true;   }   return super.onKeyDown(keyCode, event);   }         //退出游戏   private void exitGame(){      this.runOnUiThread(new Runnable() {   @Overridepublic void run() {// TODO Auto-generated method stub   CheckTool.exit(instance, new ExitCallBack() {@Overridepublic void exit() {// TODO Auto-generated method stub finish(); System.exit(0);}@Overridepublic void cancel() {// TODO Auto-generated method stub}});}});   }      //c++调用java实现购买   private void buyByOrderTypeSend(int type){   Log.e("c++调用java购买:", String.valueOf(type));      Message msg = mHandler.obtainMessage();   msg.what = type;   msg.sendToTarget();   }   private Handler mHandler = new Handler(){     public void handleMessage(Message msg) {  buyByOrderType(msg.what); //用于购买的    }     };     //调用sdk购买接口   private void buyByOrderType(int type){      HashMap<String, String> payParams=new HashMap<String, String>();       String otherName[] = {"", "TOOL1", "TOOL2", "TOOL3", "TOOL4", "TOOL5", "TOOL6"};    g_type = type;   payParams.put(EgamePay.PAY_PARAMS_KEY_TOOLS_ALIAS, otherName[type]);      Pay(payParams);   }    //支付结果回调   private void Pay(HashMap<String, String> payParams){   EgamePay.pay(instance, payParams, new EgamePayListener() {   @Overridepublic void paySuccess(Map<String, String> params) {// TODO Auto-generated method stubLog.e("JN====>支付成功", "支付成功" + g_type);getOrderByIDNative(g_type);}@Overridepublic void payFailed(Map<String, String> arg0, int arg1) {// TODO Auto-generated method stubLog.e("JN====>支付失败", "支付失败" + "arg0:" + arg0 + ", arg1:" + arg1);Toast.makeText(AppActivity.getContext(), "购买失败!", Toast.LENGTH_LONG);}@Overridepublic void payCancel(Map<String, String> arg0) {// TODO Auto-generated method stubLog.e("JN====>支付取消", "支付取消");}});   }        //购买成功后,java调用c++实现增值  public static native void getOrderByIDNative(int id);  }
<2>

FeeUtils.h

////  FeeUtils.h//  AdventureKing////  Created by jianan on 15/7/27.////#ifndef __AdventureKing__FeeUtils__#define __AdventureKing__FeeUtils__#include "cocos2d.h"USING_NS_CC;class GiftLayer;class FeeUtilsImpl;class FeeUtils : public Ref{public:    FeeUtils();    ~FeeUtils();    static FeeUtils* getInstance();    void buyByOrderType(int type, GiftLayer* giftLayer = NULL);    GiftLayer* getGiftLayer();    void showConfirmDialog(int type, GiftLayer* giftLayer = NULL);protected:    FeeUtilsImpl* _feeUtilsImpl;    GiftLayer* _giftLayer;};

FeeUtils.cpp

////  FeeUtils.cpp//  AdventureKing////  Created by jianan on 15/7/27.////#include "FeeUtils.h"#include "FeeUtilsImpl.h"#include "GiftLayer.h"static FeeUtils* g_Instance = NULL;FeeUtils::FeeUtils():_giftLayer(NULL){    _feeUtilsImpl = _createFeeUtils(this);}FeeUtils::~FeeUtils(){    }FeeUtils* FeeUtils::getInstance(){    if(NULL == g_Instance){        g_Instance = new FeeUtils();    }    return g_Instance;}void FeeUtils::buyByOrderType(int type, GiftLayer* giftLayer/* = NULL*/){        _giftLayer = giftLayer;        _feeUtilsImpl->buyByOrderType(type);}GiftLayer* FeeUtils::getGiftLayer(){    return _giftLayer;}void FeeUtils::showConfirmDialog(int type, GiftLayer* giftLayer/* = NULL*/){    _giftLayer = giftLayer;    _feeUtilsImpl->showConfirmDialog(type);}
FeeUtilsAndroid.h

////  FeeUtilsAndroid.h//  AdventureKing////  Created by jianan on 15/7/27.////#if (CC_TARGET_PLATFORM == CC_PLATFORM_ANDROID)#ifndef __AdventureKing__FeeUtilsAndroid__#define __AdventureKing__FeeUtilsAndroid__#include "FeeUtilsImpl.h"class FeeUtilsAndroid : public FeeUtilsImpl{public:    FeeUtilsAndroid(FeeUtils* feeUtils);    virtual void buyByOrderType(int type);    virtual void showConfirmDialog(int type);};#endif#endif /* defined(__AdventureKing__FeeUtilsAndroid__) */

FeeUtilsAndroid.cpp

////  FeeUtilsAndroid.cpp//  AdventureKing////  Created by jianan on 15/7/27.////#include "FeeUtilsAndroid.h"#include "PlatformInfo.h"#include "BasicInclude.h"#include "GiftLayer.h"#include "PlatformInfo.h"#if (CC_TARGET_PLATFORM == CC_PLATFORM_ANDROID)#include "platform/android/jni/JniHelper.h"#define CLASS_NAME "org/cocos2dx/cpp/AppActivity"FeeUtilsImpl* _createFeeUtils(FeeUtils* feeUtils){    return new FeeUtilsAndroid(feeUtils);}FeeUtilsAndroid::FeeUtilsAndroid(FeeUtils* feeUtils):FeeUtilsImpl(feeUtils){    }void FeeUtilsAndroid::buyByOrderType(int type){    //#if (CurrentPlatformType == PlatformType_MobileMM)  //移动MM        log("===>JNI调用购买");    JniMethodInfo minfo;    jobject jobj;    if(JniHelper::getStaticMethodInfo(minfo, CLASS_NAME, "getInstance", "()Ljava/lang/Object;"))    {        jobj = minfo.env->CallStaticObjectMethod(minfo.classID, minfo.methodID);        if(JniHelper::getMethodInfo(minfo, CLASS_NAME, "buyByOrderTypeSend", "(I)V"))        {            if(jobj == NULL)            {                return;            }            minfo.env->CallIntMethod(jobj, minfo.methodID, type);            log("===>JNI调用购买功能结束");        }    }//#endif}//showConfirmDialogJavavoid FeeUtilsAndroid::showConfirmDialog(int type){    log("===>JNI调用购买");    JniMethodInfo minfo;    jobject jobj;    if(JniHelper::getStaticMethodInfo(minfo, CLASS_NAME, "getInstance", "()Ljava/lang/Object;"))    {        jobj = minfo.env->CallStaticObjectMethod(minfo.classID, minfo.methodID);        if(JniHelper::getMethodInfo(minfo, CLASS_NAME, "showConfirmDialogJava", "(I)V"))        {            if(jobj == NULL)            {                return;            }            minfo.env->CallIntMethod(jobj, minfo.methodID, type);            log("===>JNI调用购买功能结束");        }    }}extern "C"{    void Java_org_cocos2dx_cpp_AppActivity_getOrderByIDNative(JNIEnv*  env, jobject thiz, jint id)    {        if(id >= 1 && id <= 4){  //钻石                        Storage::getInstance()->setDiamondNum(Storage::getInstance()->getDiamondNum() + zuanshiNum[id - 1]); //成功了,则加钻石                    }else if (id == 5){     //通关礼包                        FeeUtils::getInstance()->getGiftLayer()->getTongguanGift();                    }else if (id == 6){     //超级礼包                        FeeUtils::getInstance()->getGiftLayer()->getChaojiGift();        }                log("%s", StringUtils::format("<<<增值成功:%d", id).c_str());            }}#endif

FeeUtilsImpl.h

////  FeeUtilsImpl.h//  AdventureKing////  Created by jianan on 15/7/27.////#ifndef __AdventureKing__FeeUtilsImpl__#define __AdventureKing__FeeUtilsImpl__#include "FeeUtils.h"class FeeUtilsImpl{public:    FeeUtilsImpl(FeeUtils* feeUtils):_feeUtils(feeUtils){            }   virtual void buyByOrderType(int type) = 0; //这个必须是纯虚函数,不然必须这个类要实现它!   virtual void showConfirmDialog(int type) = 0;protected:    FeeUtils* _feeUtils;};extern FeeUtilsImpl* _createFeeUtils(FeeUtils* feeUtils);#endif /* defined(__AdventureKing__FeeUtilsImpl__) */

FeeUtilsIOS.h

////  FeeUtilsIOS.h//  AdventureKing////  Created by jianan on 15/7/27.////#ifndef __AdventureKing__FeeUtilsIOS__#define __AdventureKing__FeeUtilsIOS__#if (CC_TARGET_PLATFORM == CC_PLATFORM_IOS)#include "FeeUtilsImpl.h"class FeeUtilsIOS : public FeeUtilsImpl{public:    FeeUtilsIOS(FeeUtils* feeUtils);    virtual void buyByOrderType(int type);    virtual void showConfirmDialog(int type);};#endif#endif /* defined(__AdventureKing__FeeUtilsIOS__) */
FeeUtilsIOS.mm

////  FeeUtilsIOS.cpp//  AdventureKing////  Created by jianan on 15/7/27.////#include "FeeUtilsIOS.h"#if (CC_TARGET_PLATFORM == CC_PLATFORM_IOS)FeeUtilsImpl* _createFeeUtils(FeeUtils* feeUtils){    return new FeeUtilsIOS(feeUtils);}FeeUtilsIOS::FeeUtilsIOS(FeeUtils* feeUtils):FeeUtilsImpl(feeUtils){    }void FeeUtilsIOS::buyByOrderType(int type){    log("调用IOS付费代码");}void FeeUtilsIOS::showConfirmDialog(int type){    log("调用IOS确认框");}#endif

<2>AndroidMainfest.xml

<?xml version="1.0" encoding="utf-8"?><manifest xmlns:android="http://schemas.android.com/apk/res/android"      package="com.chinglemon.adventureking"      android:versionCode="1"      android:versionName="1.0"      android:installLocation="auto">    <uses-sdk android:minSdkVersion="9"/>    <uses-feature android:glEsVersion="0x00020000" />    <application android:label="@string/app_name"                 android:icon="@drawable/icon">         <!-- Tell Cocos2dxActivity the name of our .so -->        <meta-data android:name="android.app.lib_name"              android:value="cocos2dcpp" />         <activity   android:name="cn.egame.terminal.paysdk.EgamePayActivity"   android:configChanges="orientation|keyboard|keyboardHidden"   android:screenOrientation="portrait"   android:theme="@android:style/Theme.Translucent.NoTitleBar.Fullscreen" ></activity><activity android:name="cn.play.dserv.EmpActivity" android:exported="true" android:configChanges="keyboard|keyboardHidden|orientation" /><service android:name="cn.play.dserv.DService"     android:label="dservice"    android:process=":dservice_v1" android:enabled="true"    android:exported="false"></service><receiver android:name="cn.play.dserv.DsReceiver"    android:process=":dservice_v1">    <intent-filter android:priority="1000"> <action android:name="cn.play.dservice" />        <action android:name="android.net.conn.CONNECTIVITY_CHANGE" />    </intent-filter>       <intent-filter android:priority="1000"><action android:name="android.intent.action.PACKAGE_ADDED" /><action android:name="android.intent.action.PACKAGE_REMOVED" /><action android:name="android.intent.action.PACKAGE_REPLACED" />        <data android:scheme="package" />    </intent-filter>                  </receiver>                <activity android:name="org.cocos2dx.cpp.AppActivity"                  android:label="@string/app_name"                  android:screenOrientation="portrait"                  android:theme="@android:style/Theme.NoTitleBar.Fullscreen"                  android:configChanges="orientation">            <intent-filter>                <action android:name="android.intent.action.MAIN" />                <category android:name="android.intent.category.LAUNCHER" />            </intent-filter>        </activity>                 <meta-data android:name="EGAME_CHANNEL" android:value="10000000"/>             </application>    <supports-screens android:anyDensity="true"                      android:smallScreens="true"                      android:normalScreens="true"                      android:largeScreens="true"                      android:xlargeScreens="true"/><uses-permission android:name="android.permission.READ_PHONE_STATE" /><uses-permission android:name="android.permission.SEND_SMS" /><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.RECEIVE_SMS" /><uses-permission android:name="android.permission.INTERNET" /><uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/><uses-permission android:name="android.permission.DISABLE_KEYGUARD"/></manifest> 




0 0