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

 最近两天想研究下怎么在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的程序应该很容易可以实现各种广告了,大家琢磨一下吧,代码就不贴了,有问题可以交流。

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值