您的位置:首页 > 移动开发 > Cocos引擎

cocos2d-x admob jni

2014-03-21 00:03 204 查看
c++调用java层,参照:

package org.cocos2dx.hellocpp;

import org.cocos2dx.lib.Cocos2dxActivity;

import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
import android.view.Gravity;
import android.view.View;
import android.view.ViewGroup.LayoutParams;

import com.google.ads.AdRequest;
import com.google.ads.AdSize;
import com.google.ads.AdView;

public class HelloCpp extends Cocos2dxActivity{

static AdView adView;
static Activity me;
//put here your id
final String ADMOB_ID="a150f54aa7dab27";

protected void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
me=this;
try {
LayoutParams adParams = new LayoutParams(LayoutParams.MATCH_PARENT,LayoutParams.MATCH_PARENT);

adView = new AdView(this, AdSize.BANNER,
ADMOB_ID);
AdRequest request = new AdRequest();
adView.loadAd(request);
adView.setGravity(Gravity.TOP|Gravity.CENTER);
// Adding full screen container
addContentView(adView, adParams);
} catch (Exception e) {
Log.d("", "error: " + e);
}

}

static void showAdmobJNI(){
me.runOnUiThread(new Runnable() {
@Override
public void run() {
adView.setVisibility(View.VISIBLE);
}
});
}

static void hideAdmobJNI(){
me.runOnUiThread(new Runnable() {
@Override
public void run() {
adView.setVisibility(View.INVISIBLE);
}
});
}

static void setAdmobVisibleJNI(final int number){
me.runOnUiThread(new Runnable() {
@Override
public void run() {
if(number==0){
adView.setVisibility(View.INVISIBLE);
} else {
adView.setVisibility(View.VISIBLE);
}
}
});

}

static void setVisibleAdmobJNI(final boolean visible){

me.runOnUiThread(new Runnable() {
@Override
public void run() {
if(visible){
adView.setVisibility(View.VISIBLE);
} else {
adView.setVisibility(View.INVISIBLE);
}
}
});
}

static void setAdmobVisibilityJNI(final String name){
me.runOnUiThread(new Runnable() {
@Override
public void run() {
if(name.equals("show")||name=="show"){
adView.setVisibility(View.VISIBLE);
} else {
adView.setVisibility(View.INVISIBLE);
}
}
});
}

static {
System.loadLibrary("hellocpp");
}
}
#ifndef __ANDROID_URL_JNI_H__
#define __ANDROID_URL_JNI_H__

extern "C"
{
extern void showAdmobJNI();
extern void hideAdmobJNI();
extern void setAdmobVisibleJNI(int number);
extern void setVisibleAdmobJNI(bool visible);
extern void setAdmobVisibilityJNI(const char* name);

}
#endif
AndroidJni.cpp

#include "AndroidJni.h"
#include "platform/android/jni/JniHelper.h" //vem do projeto principal - pasta cocos2dx

#include <jni.h>

using namespace cocos2d;

extern "C"
{
void showAdmobJNI(){
JniMethodInfo t;
if (JniHelper::getStaticMethodInfo(t, "org.cocos2dx.hellocpp/HelloCpp"
,"showAdmobJNI"
,"()V"))
{
t.env->CallStaticVoidMethod(t.classID,t.methodID);
}
}
void hideAdmobJNI(){
JniMethodInfo t;
if (JniHelper::getStaticMethodInfo(t, "org.cocos2dx.hellocpp/HelloCpp"
,"hideAdmobJNI"
,"()V"))
{
t.env->CallStaticVoidMethod(t.classID,t.methodID);
}
}
void setAdmobVisibleJNI(int number){
JniMethodInfo t;
if (JniHelper::getStaticMethodInfo(t, "org.cocos2dx.hellocpp/HelloCpp"
,"setAdmobVisibleJNI"
,"(I)V"))
{
t.env->CallStaticVoidMethod(t.classID,t.methodID,number);
}
}
void setVisibleAdmobJNI(bool visible){
JniMethodInfo t;
if (JniHelper::getStaticMethodInfo(t, "org.cocos2dx.hellocpp/HelloCpp"
,"setVisibleAdmobJNI"
,"(Z)V"))
{
t.env->CallStaticVoidMethod(t.classID,t.methodID,visible);
}
}
void setAdmobVisibilityJNI(const char* name){
JniMethodInfo t;
if (JniHelper::getStaticMethodInfo(t, "org.cocos2dx.hellocpp/HelloCpp"
,"setAdmobVisibilityJNI"
,"(Ljava/lang/String;)V"))
{
jstring StringArg1 = t.env->NewStringUTF(name);
t.env->CallStaticVoidMethod(t.classID,t.methodID, StringArg1);
}
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: