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

cocos2dx 3.x Android环境下添加广告

2014-09-28 22:11 465 查看
最近两天想研究下怎么在cocos2dx的程序中加入广告,在网上看了下这类的文章说的都不是太仔细,所以特地写下这篇博客与需要的同学分享。 我使用的是cocos2dx3.2,广告平台用的是万普,网上看了下这个平台口碑还算不错,其它平台的暂时还没有试,有空再研究一下吧。

一、注册、下载SDK

地址: http://www.waps.cn/?f=HouDelong,注册后选择For Cocos2dx这一项下载下来,解压后会看到libs,demo和一个开发者手册。

二、创建应用

1.给应用起个名字,选择平台,这里是Android然后直接下一步啦.



2.然后它会给我们一个APP_ID,记住这个ID,我们程序中要用到,然后应用详情先不管,我们就先做个简单的例子感受一下。



三、添加迷你广告

大家先创建一个空的工程,然后把android工程导入到Eclipse(这个不难吧。)。然后我们把WapsOffer_ForCocos2dx_1.1的libs目录下的AppOffer_2.1.1.jar复制到我们Andorid工程下的libs目录下。还需要把cocos2d\cocos\platform\android\java目录下的库复制到src目录下。

然后回到eclipse,在scr下找到AppActivity.java,我们的代码主要添加到这里。在这之前,需要先修改下AndroidManifest.xml,按照参考文档里面说的来就可以了。

参考demo中AppActivity.java的代码,我们精简一下,只添加一个迷你广告。

package org.cocos2dx.cpp;

import org.cocos2dx.lib.Cocos2dxActivity;

import org.cocos2dx.lib.Cocos2dxEditText;
import org.cocos2dx.lib.Cocos2dxGLSurfaceView;
import org.cocos2dx.lib.Cocos2dxRenderer;

import android.app.ActivityManager;
import android.content.Context;
import android.content.pm.ConfigurationInfo;
import android.os.Bundle;
import android.util.Log;
import android.view.Gravity;
import android.view.ViewGroup;
import android.widget.FrameLayout;
import android.widget.LinearLayout;
import cn.waps.AppConnect;

public class AppActivity extends Cocos2dxActivity {
private Cocos2dxGLSurfaceView mGLView;
private static Context mContext;
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
mContext = this;

if (detectOpenGLES20()) {
// 第一个参数就是应用的id,第二个参数是渠道标识,参考手册里面有渠道标识的对照表
AppConnect.getInstance("7bca0bb25fdb0c0c0640feba849ace2b",
"default", this);
// FrameLayout
ViewGroup.LayoutParams framelayout_params = new ViewGroup.LayoutParams(
ViewGroup.LayoutParams.FILL_PARENT,
ViewGroup.LayoutParams.FILL_PARENT);
FrameLayout framelayout = new FrameLayout(this);
framelayout.setLayoutParams(framelayout_params);

// Cocos2dxEditText layout
ViewGroup.LayoutParams edittext_layout_params = new ViewGroup.LayoutParams(
ViewGroup.LayoutParams.FILL_PARENT,
ViewGroup.LayoutParams.WRAP_CONTENT);
Cocos2dxEditText edittext = new Cocos2dxEditText(this);
edittext.setLayoutParams(edittext_layout_params);

// ...add to FrameLayout
framelayout.addView(edittext);

// Cocos2dxGLSurfaceView
mGLView = new Cocos2dxGLSurfaceView(this);

// ...add to FrameLayout
framelayout.addView(mGLView);

mGLView.setEGLContextClientVersion(2);
mGLView.setCocos2dxRenderer(new Cocos2dxRenderer());
// mGLView.setTextField(edittext);

// Set framelayout as the content view
setContentView(framelayout);
//迷你广告
LinearLayout adMiniLayout = new LinearLayout(this);
adMiniLayout.setOrientation(LinearLayout.VERTICAL);
FrameLayout.LayoutParams lp_mini = new FrameLayout.LayoutParams(
FrameLayout.LayoutParams.FILL_PARENT,
FrameLayout.LayoutParams.WRAP_CONTENT);
//设置adMiniLayout的悬浮位置,具体的位置开发者根据需要设置
lp_mini.gravity = Gravity.TOP | Gravity.CENTER_HORIZONTAL;
this.addContentView(adMiniLayout, lp_mini);

LinearLayout miniLayout = new LinearLayout(this);
miniLayout.setGravity(Gravity.CENTER_HORIZONTAL);
adMiniLayout.addView(miniLayout);
// 添加迷你广告
AppConnect.getInstance(this).showMiniAd(this, miniLayout, 10);
} else {
Log.d("activity", "don't support gles2.0");
finish();
}

}
private boolean detectOpenGLES20() {
ActivityManager am = (ActivityManager) getSystemService(Context.ACTIVITY_SERVICE);
ConfigurationInfo info = am.getDeviceConfigurationInfo();
return (info.reqGlEsVersion >= 0x20000);
}

static {
System.loadLibrary("cocos2dcpp");
}

}




OK,如果上面的步骤没问题的话,会看到下面的结果



四、其它

上面说的是迷你广告,运行程序的时候自己就出现了,但是我们在应用中经常需要根据某个按钮事件来添加按钮,比如说退出屏幕的时候弹出一个退屏广告。这就需要用到JNI技术了,不明白的同学可以找资料研究一下,这里先不必深究这些了。demo里面有两个文件WapsAd.cpp和WaspsAd.h,这两个文件实现了JNI的调用,我们可以直接拿来用。把这两个文件放到我们的工程,然后参考demo的程序应该很容易可以实现各种广告了,大家琢磨一下吧,代码就不贴了,有问题可以交流。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: