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);
}
}
}