JNIOpHelper

来源:互联网 发布:2015中美网络大战知乎 编辑:程序博客网 时间:2024/06/04 00:25
#include "JNIOpHelper.h"




USING_NS_CC;


#if (CC_TARGET_PLATFORM == CC_PLATFORM_ANDROID)
#include "JniHelper.h"
#endif


#ifndef GAME_PACK
#define GAME_PACK_NAME "com/janlr/mahjong2/mahjong2"
#endif
void JNIOpHelper::OpenUrl(std::string url)
{
#if (CC_TARGET_PLATFORM == CC_PLATFORM_ANDROID)
JniMethodInfo minfo;
bool isHave = JniHelper::getStaticMethodInfo(minfo, GAME_PACK_NAME, "openUrl", "(Ljava/lang/String;)V");
if (isHave)
{
jstring jUrl = minfo.env->NewStringUTF(url.c_str());
minfo.env->CallStaticVoidMethod(minfo.classID, minfo.methodID, jUrl);
minfo.env->DeleteLocalRef(jUrl);
}
#endif
}
bool JNIOpHelper::keyDown(int keycoder)
{
#if (CC_TARGET_PLATFORM == CC_PLATFORM_ANDROID)
JniMethodInfo minfo;
bool isHave = JniHelper::getStaticMethodInfo(minfo, GAME_PACK_NAME, "keyDown", "(I)B");
if (isHave)
{
//jstring jUrl = minfo.env->NewStringUTF(url.c_str());
minfo.env->CallStaticBooleanMethod(minfo.classID, minfo.methodID, keycoder);
//minfo.env->DeleteLocalRef(keycoder);
}
#endif
return false;


}
int JNIOpHelper::GetNetType()
{
int iType=0;
#if (CC_TARGET_PLATFORM == CC_PLATFORM_ANDROID)
JniMethodInfo minfo;
bool isHave = JniHelper::getStaticMethodInfo(minfo, GAME_PACK_NAME, "getLandlordActivityObject", "()Ljava/lang/Object;");   //括号里的是参数,后面的是返回值。
    jobject jobj;
    if (isHave) {
       jobj = minfo.env->CallStaticObjectMethod(minfo.classID, minfo.methodID);
    }
isHave = JniHelper::getMethodInfo(minfo, GAME_PACK_NAME, "getNetType", "()I");
if (isHave)
{
jint iv = minfo.env->CallIntMethod(jobj, minfo.methodID);
iType = (int)iv;
}


#endif


return iType;
}
bool JNIOpHelper::kill()
{
int isKill = false;
#if (CC_TARGET_PLATFORM == CC_PLATFORM_ANDROID)
JniMethodInfo minfo;
bool isHave = JniHelper::getStaticMethodInfo(minfo, GAME_PACK_NAME, "getLandlordActivityObject", "()Ljava/lang/Object;");   //括号里的是参数,后面的是返回值。
    jobject jobj;
    if (isHave) {
       jobj = minfo.env->CallStaticObjectMethod(minfo.classID, minfo.methodID);
  CCLog("minfo.env->CallStaticObjectMethod------true");
    }

isHave = JniHelper::getMethodInfo(minfo, GAME_PACK_NAME, "kill", "()I");
CCLog("JniHelper::getMethodInfo");
if (isHave)
{
CCLog("minfo.env->CallBooleanMethod------true");
jint isKill  = minfo.env->CallIntMethod(jobj, minfo.methodID);


}
#endif
return isKill;
}


float JNIOpHelper::GetBatterypercent()
{
float result = 0;
#if (CC_TARGET_PLATFORM == CC_PLATFORM_ANDROID)
JniMethodInfo minfo;
bool isHave = JniHelper::getStaticMethodInfo(minfo, GAME_PACK_NAME, "getLandlordActivityObject", "()Ljava/lang/Object;");   //括号里的是参数,后面的是返回值。
jobject jobj;
if (isHave) {
jobj = minfo.env->CallStaticObjectMethod(minfo.classID, minfo.methodID);
}


isHave = JniHelper::getMethodInfo(minfo, GAME_PACK_NAME, "GetBatterypercent", "()F");
if (isHave)
{
jfloat result_tmp  = minfo.env->CallFloatMethod(jobj, minfo.methodID);
CCLog("result_tmp=%f",result_tmp);
result=(float)result_tmp;
}
#endif
return result;
}


std::string JNIOpHelper::GetOpenUDID()
{
std::string strOpenUDID;
#if (CC_TARGET_PLATFORM == CC_PLATFORM_ANDROID)
JniMethodInfo minfo;
bool isHave = JniHelper::getStaticMethodInfo(minfo, GAME_PACK_NAME, "getOpenUDID", "()Ljava/lang/String;");
if (isHave)
{
jobject jObjOpenUDID = minfo.env->CallStaticObjectMethod(minfo.classID, minfo.methodID);
strOpenUDID = minfo.env->GetStringUTFChars((jstring)jObjOpenUDID, 0);
}
#endif


return strOpenUDID;
}
std::string JNIOpHelper::getVersion()
{
std::string strVersion;
#if (CC_TARGET_PLATFORM == CC_PLATFORM_ANDROID)
JniMethodInfo minfo;
bool isHave = JniHelper::getStaticMethodInfo(minfo, GAME_PACK_NAME, "getVersionName", "()Ljava/lang/String;");
if (isHave)
{
jobject jObjVersion = minfo.env->CallStaticObjectMethod(minfo.classID, minfo.methodID);
strVersion = minfo.env->GetStringUTFChars((jstring)jObjVersion, 0);
}
#endif


return strVersion;
}


void JNIOpHelper::LoginByQQ()
{
#if (CC_TARGET_PLATFORM == CC_PLATFORM_ANDROID)
JniMethodInfo minfo;
bool isHave = JniHelper::getStaticMethodInfo(minfo, GAME_PACK_NAME, "getMahjongActivityObject", "()Ljava/lang/Object;");   //括号里的是参数,后面的是返回值。
    jobject jobj;
    if (isHave) {
       jobj = minfo.env->CallStaticObjectMethod(minfo.classID, minfo.methodID);
    }


isHave = JniHelper::getMethodInfo(minfo, GAME_PACK_NAME, "qqLogin", "()V");
if (isHave)
{
minfo.env->CallVoidMethod(jobj, minfo.methodID);
}
#endif
}


void JNIOpHelper::LoginByQQCallBack(std::string access_token, std::string open_id)
{
//CCScene *scene = LoadingLayer::scene();
//LoadingLayer::sharedLoadingLayer()->setMessage(" 正在链接服务器... ");
//LoadingLayer::sharedLoadingLayer()->setTimeOut(10,LoginScene::scene());
//LoadingLayer::sharedLoadingLayer()->setBeginPercent(0);
//LoadingLayer::sharedLoadingLayer()->setEndPercent(30);
//LoadingLayer::sharedLoadingLayer()->setDuration(0.5);
//LoadingLayer::sharedLoadingLayer()->runLoading();
//CCDirector::sharedDirector()->replaceScene(scene);


    /**loading**/
// CCScene *scene = LoadingLayer::scene();
// LoadingLayer::sharedLoadingLayer()->setTimeOutScene(kSceneTypeLogin);
// CCDirector::sharedDirector()->replaceScene(scene);


/* SocketHandle::sharedSocketHandle()->disConnect();*/
#if (CC_TARGET_PLATFORM == CC_PLATFORM_ANDROID)
// Model::share()->user.username = open_id;
// 
// CSMessage msg;
//     msg.WriteBegin(CS_MSG_QQ_LOGIN);
// msg.WriteString(str_platform_id); //QQ平台ID
//     msg.WriteString(access_token);
//     msg.WriteString(open_id);
//     msg.WriteEnd();
//     SocketHandle::sharedSocketHandle()->Send(msg);
#endif
}


/**移动充值**/
bool JNIOpHelper::oderProduct(std::string payCode,int ProNum)
{


#if (CC_TARGET_PLATFORM == CC_PLATFORM_ANDROID)
#ifdef YIDONG
JniMethodInfo minfo;
bool isHave = JniHelper::getStaticMethodInfo(minfo, GAME_PACK_NAME, "getMahjongActivityObject", "()Ljava/lang/Object;");   //括号里的是参数,后面的是返回值。
    jobject jobj;
    if (isHave) {
       jobj = minfo.env->CallStaticObjectMethod(minfo.classID, minfo.methodID);
    }

isHave = JniHelper::getMethodInfo(minfo, "mahjong/cocos2dx/pack/Mahjong", "order", "(Ljava/lang/String;I)V");
CCLog("---------JniHelper::getMethodInfo----order(Ljava/lang/String;I)B----=%d",isHave);
if (isHave)
{
jstring jUrl = minfo.env->NewStringUTF(payCode.c_str());
CCLog("--------minfo.env->NewStringUTF(payCode.c_str())----");
jint productNum = (jint)ProNum;
minfo.env->CallVoidMethod(jobj, minfo.methodID, jUrl, productNum);
minfo.env->DeleteLocalRef(jUrl);
}
//JniMethodInfo minfo;
//bool isHave = JniHelper::getStaticMethodInfo(minfo, "mahjong/cocos2dx/pack/Mahjong", "order", "(Ljava/lang/String;I)V");
//CCLog("---------JniHelper::getMethodInfo----order(Ljava/lang/String;I)B----=%d",isHave);
//if (isHave)
//{
// jstring jUrl = minfo.env->NewStringUTF(payCode.c_str());
// CCLog("jstring jUrl = minfo.env->NewStringUTF(url.c_str())");
// minfo.env->CallStaticVoidMethod(minfo.classID, minfo.methodID, jUrl,(jint)(ProNum));
// CCLog("minfo.env->CallStaticBooleanMethod(minfo.classID, minfo.methodID, jUrl,(jint)(ProNum))");
// minfo.env->DeleteLocalRef(jUrl);
//}
#endif // #YIDONG




#endif// #(CC_TARGET_PLATFORM == CC_PLATFORM_ANDROID)


    return false;
}
/**科诺充值**/
void JNIOpHelper::kenopayOrder(std::string userId, std::string merchantName, std::string amount, std::string merchantDesc)
{



#if (CC_TARGET_PLATFORM == CC_PLATFORM_ANDROID)
#ifdef KENOPAY
JniMethodInfo minfo;
bool isHave = JniHelper::getStaticMethodInfo(minfo, GAME_PACK_NAME, "getMahjongActivityObject", "()Ljava/lang/Object;");   //括号里的是参数,后面的是返回值。
    jobject jobj;
    if (isHave) {
       jobj = minfo.env->CallStaticObjectMethod(minfo.classID, minfo.methodID);
    }

isHave = JniHelper::getMethodInfo(minfo, "mahjong/cocos2dx/pack/Mahjong", "kenopayOrder", "(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V");
if (isHave)
{
CCLog("-------jUserID = %s,jMerchanName = %s,jAmount = %s,jNotifyUrl = %s----",userId.c_str(),merchantName.c_str(),amount.c_str(),merchantDesc.c_str());
jstring jUserID = minfo.env->NewStringUTF(userId.c_str());
jstring jMerchanName = minfo.env->NewStringUTF(merchantName.c_str());
jstring jAmount = minfo.env->NewStringUTF(amount.c_str());
jstring jNotifyUrl = minfo.env->NewStringUTF(merchantDesc.c_str());


minfo.env->CallVoidMethod(jobj, minfo.methodID, jUserID, jMerchanName,jAmount,jNotifyUrl);


minfo.env->DeleteLocalRef(jUserID);
minfo.env->DeleteLocalRef(jMerchanName);
minfo.env->DeleteLocalRef(jAmount);
minfo.env->DeleteLocalRef(jNotifyUrl);
}
#endif// #KENOPAY
#endif// #(CC_TARGET_PLATFORM == CC_PLATFORM_ANDROID)
}
/**电信充值**/
void JNIOpHelper::telecomOrder(int orderId,int feeMoney,bool canOtherPay)
{
#if (CC_TARGET_PLATFORM == CC_PLATFORM_ANDROID)
#ifdef TELECOM
JniMethodInfo minfo;
bool isHave = JniHelper::getStaticMethodInfo(minfo, "mahjong/cocos2dx/pack/Mahjong", "getMahjongActivityObject", "()Ljava/lang/Object;");   //括号里的是参数,后面的是返回值。
    jobject jobj;
    if (isHave) {
       jobj = minfo.env->CallStaticObjectMethod(minfo.classID, minfo.methodID);
    }
CCLOG("mahjong/cocos2dx/pack/Mahjong, pay, (IIZ)V");
isHave = JniHelper::getMethodInfo(minfo, "mahjong/cocos2dx/pack/Mahjong", "pay", "(IIZ)V");
if (isHave)
{
CCLOG("-------orderId = %d,feeMoney = %d,canOtherPay = %d",orderId,feeMoney,canOtherPay);
//jstring jUserID = minfo.env->NewStringUTF(userId.c_str());
//jstring jMerchanName = minfo.env->NewStringUTF(merchantName.c_str());
//jstring jAmount = minfo.env->NewStringUTF(amount.c_str());
//jstring jNotifyUrl = minfo.env->NewStringUTF(merchantDesc.c_str());


minfo.env->CallVoidMethod(jobj, minfo.methodID, (jint)orderId, (jint)feeMoney,(jboolean)canOtherPay);


//minfo.env->DeleteLocalRef(jUserID);
//minfo.env->DeleteLocalRef(jMerchanName);
//minfo.env->DeleteLocalRef(jAmount);
//minfo.env->DeleteLocalRef(jNotifyUrl);
}
#endif// #TELECOM
#endif// #(CC_TARGET_PLATFORM == CC_PLATFORM_ANDROID)
}
/**联通充值**/
void JNIOpHelper::linktech(std::string goodsName, std::string customerName, std::string payMoney, std::string orderNo)
{
#if (CC_TARGET_PLATFORM == CC_PLATFORM_ANDROID)
#ifdef LINKTECH
JniMethodInfo minfo;
bool isHave = JniHelper::getStaticMethodInfo(minfo, "mahjong/cocos2dx/pack/Mahjong", "getMahjongActivityObject", "()Ljava/lang/Object;");   //括号里的是参数,后面的是返回值。
    jobject jobj;
    if (isHave) {
       jobj = minfo.env->CallStaticObjectMethod(minfo.classID, minfo.methodID);
    }
CCLOG("mahjong/cocos2dx/pack/Mahjong, pay, (IIZ)V");
isHave = JniHelper::getMethodInfo(minfo, "mahjong/cocos2dx/pack/Mahjong", "pay", "(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V");
if (isHave)
{
CCLog("-------goodsName = %s,customerName = %s,payMoney = %s,orderNo = %s",goodsName.c_str(),customerName.c_str(),payMoney.c_str(),orderNo.c_str());
jstring jgoodsName = minfo.env->NewStringUTF(goodsName.c_str());
jstring jcustomerName = minfo.env->NewStringUTF(customerName.c_str());
jstring jpayMoney = minfo.env->NewStringUTF(payMoney.c_str());
jstring joderNo = minfo.env->NewStringUTF(orderNo.c_str());


minfo.env->CallVoidMethod(jobj, minfo.methodID, jgoodsName, jcustomerName,jpayMoney,joderNo);


minfo.env->DeleteLocalRef(jgoodsName);
minfo.env->DeleteLocalRef(jcustomerName);
minfo.env->DeleteLocalRef(jpayMoney);
minfo.env->DeleteLocalRef(joderNo);
}
#endif// #LINKTECH
#endif// #(CC_TARGET_PLATFORM == CC_PLATFORM_ANDROID)
}
/**支付宝充值**/
void JNIOpHelper::alipay(string userID,string notifyURL,string subject,string describe,string price,string out_trade_no)
{
#if (CC_TARGET_PLATFORM == CC_PLATFORM_ANDROID)
#if(CC_SDK_PAY == ALIPAY_SDK)
JniMethodInfo minfo;
bool isHave = JniHelper::getStaticMethodInfo(minfo, "mahjong/cocos2dx/pack/Mahjong", "getMahjongActivityObject", "()Ljava/lang/Object;");   //括号里的是参数,后面的是返回值。
    jobject jobj;
    if (isHave) {
       jobj = minfo.env->CallStaticObjectMethod(minfo.classID, minfo.methodID);
    }
isHave = JniHelper::getMethodInfo(minfo, "mahjong/cocos2dx/pack/Mahjong", "aliPay", "(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V");
if (isHave)
{
CCLog("-------userID = %s,notifyURL = %s,subject = %s,describe = %s,price = %s,out_trade_no = %s",
userID.c_str(),notifyURL.c_str(),subject.c_str(),describe.c_str(),price.c_str(),out_trade_no.c_str());
jstring juserID = minfo.env->NewStringUTF(userID.c_str());
jstring jnotifyURL = minfo.env->NewStringUTF(notifyURL.c_str());
jstring jsubject = minfo.env->NewStringUTF(subject.c_str());
jstring jdescribe = minfo.env->NewStringUTF(describe.c_str());
jstring jprice = minfo.env->NewStringUTF(price.c_str());
jstring jout_trade_no = minfo.env->NewStringUTF(out_trade_no.c_str());


minfo.env->CallVoidMethod(jobj, minfo.methodID, juserID, jnotifyURL,jsubject,jdescribe,jprice,jout_trade_no);


minfo.env->DeleteLocalRef(juserID);
minfo.env->DeleteLocalRef(jnotifyURL);
minfo.env->DeleteLocalRef(jsubject);
minfo.env->DeleteLocalRef(jdescribe);
minfo.env->DeleteLocalRef(jprice);
minfo.env->DeleteLocalRef(jout_trade_no);
}
#endif
#endif// #(CC_TARGET_PLATFORM == CC_PLATFORM_ANDROID)
}
void JNIOpHelper::getOrderInfo(
   std::string returnCode,
   std::string orderID,
std::string orderType,
std::string tradeID,
std::string payCode,
std::string leftTime)
{
CCLog("orderID = %s,orderType = %s,tradeID = %s,payCode = %s","leftTime = %s",
orderID.c_str(),orderType.c_str(),tradeID.c_str(),payCode.c_str(),leftTime.c_str());
#ifdef YIDONG
#if (CC_TARGET_PLATFORM == CC_PLATFORM_ANDROID)
CCString* pstrCode = CCString::createWithFormat("%s",returnCode.c_str());
int ireturnCode = pstrCode->intValue();
CSMessage msg;
    msg.WriteBegin(CS_MSG_YIDONG_PURCHASE);
msg.WriteUInt8(ireturnCode);
msg.WriteUInt32(Model::share()->m_paycode_id);
    msg.WriteString(orderID);
    msg.WriteString(tradeID);
    msg.WriteEnd();
    SocketHandle::sharedSocketHandle()->Send(msg);
#endif
#endif

}
void JNIOpHelper::bindPassportReturn(std::string passport, std::string password)
{
CCLog("c++=================bindPassportReturn================");
//     Model::share()->user.user_passport = passport;
// Model::share()->user.user_passport_password = password;
//     
// CSMessage msg;
//     msg.WriteBegin(CS_MSG_USER_PASSPORT);
//     msg.WriteString(passport);
//     msg.WriteString(password);
//     msg.WriteEnd();
//     SocketHandle::sharedSocketHandle()->Send(msg);
}
void JNIOpHelper::userInfo(std::string *userInfo,int size)
{


}


/**C++调用JAVA**/
void JNIOpHelper::getUserInfoById(std::string playerId)
{
#if (CC_TARGET_PLATFORM == CC_PLATFORM_ANDROID)
JniMethodInfo minfo;
bool isHave = JniHelper::getStaticMethodInfo(minfo, GAME_PACK_NAME, "getUserInfoById", "(Ljava/lang/String;)V");
if (isHave)
{
jstring str_player_id = minfo.env->NewStringUTF(playerId.c_str());
minfo.env->CallStaticVoidMethod(minfo.classID, minfo.methodID, str_player_id);
minfo.env->DeleteLocalRef(str_player_id);
}
#endif
}
void JNIOpHelper::showPaymentView(std::string extraInfo)
{
#if (CC_TARGET_PLATFORM == CC_PLATFORM_ANDROID)
JniMethodInfo minfo;
bool isHave = JniHelper::getStaticMethodInfo(minfo, GAME_PACK_NAME, "showPaymentView", "(Ljava/lang/String;)V");
if (isHave)
{
//jstring str_extraInfo = minfo.env->NewStringUTF(extraInfo.c_str());
//minfo.env->CallStaticVoidMethod(minfo.classID, minfo.methodID, str_extraInfo);
//minfo.env->DeleteLocalRef(str_player_id);
}
#endif
}
void JNIOpHelper::giveRose(std::string playerId)
{
#if (CC_TARGET_PLATFORM == CC_PLATFORM_ANDROID)
JniMethodInfo minfo;
bool isHave = JniHelper::getStaticMethodInfo(minfo, GAME_PACK_NAME, "giveRose", "(Ljava/lang/String;)V");
if (isHave)
{
jstring str_player_id = minfo.env->NewStringUTF(playerId.c_str());
minfo.env->CallStaticVoidMethod(minfo.classID, minfo.methodID, str_player_id);
minfo.env->DeleteLocalRef(str_player_id);
}
#endif
}
bool JNIOpHelper::checkFriendRelation(std::string playerId)
{
#if (CC_TARGET_PLATFORM == CC_PLATFORM_ANDROID)
JniMethodInfo minfo;
bool isHave = JniHelper::getStaticMethodInfo(minfo, GAME_PACK_NAME, "checkFriendRelation", "(Ljava/lang/String;)Z");
if (isHave)
{
//jstring str_player_id = minfo.env->NewStringUTF(playerId.c_str());
//jboolean result_tmp = minfo.env->CallStaticVoidMethod(minfo.classID, minfo.methodID, str_player_id);
//minfo.env->DeleteLocalRef(str_player_id);
//return result_tmp;
}
#endif
return false;
}
void JNIOpHelper::addFriend(std::string playerId)
{
#if (CC_TARGET_PLATFORM == CC_PLATFORM_ANDROID)
JniMethodInfo minfo;
bool isHave = JniHelper::getStaticMethodInfo(minfo, GAME_PACK_NAME, "addFriend", "(Ljava/lang/String;)V");
if (isHave)
{
jstring str_player_id = minfo.env->NewStringUTF(playerId.c_str());
minfo.env->CallStaticVoidMethod(minfo.classID, minfo.methodID, str_player_id);
minfo.env->DeleteLocalRef(str_player_id);
}
#endif
}
void JNIOpHelper::getFriendList()
{
}
0 0
原创粉丝点击