Cocos2d-x3.1中使用万普平台实现Android平台广告添加

本文使用万普广告平台往Cocos2d-x3.1项目中添加广告。万普的SDK for Cocos2d-x功能挺全的,只是官方文档的使用说明中使用的Cocos2d-x引擎是2.0.1,平台是Windows下的,年代有点久远,本文主要介绍Mac10.9.5+XCode6.0.1+Cocos2d-x使用万普添加广告。首先赞一下万普的工作人员,头一天晚上注册使用,第二天就打电话问候有没有问题~

1、注册万普账号

http://www.waps.cn,万普其实可以不用登陆注册,同样可以下载相关SDK。

2、下载SDK

下载在新闻公告右边SDK下载,根据要测试的手机系统选择相应SDK,我使用的是Android版For Cocos2dx,100多M的东西。下载下来解压,会出现libs、demo、开发手册和一个更新文档。

3、万普官网创建应用

很简单,输入应用名称和应用平台,点击下一步即可获得APP_ID,不需要再点SDK下载。

4、创建Cocos2d-x工程

这个无需解释,控制台下的cocos new 命令创建。

5、拷贝Jar包

WapsOffer_ForCocos2dx_1.1目录下libs中的AppOffer_2.1.1.jar到上一步创建的Cocos工程Android目录下,此时proj.android目录下没有libs目录,我们需新建libs目录,并将拷贝的jar包放在该目录下。

6、ADT打开proj.android工程

首先出现两个问题:1)Unable to resolve target ‘android-10‘。解决办法:修改project.properties中的target属性为你ADT存在的。其次,修改AndroidManifest.xml为android:minSdkVersion=‘11‘  android:maxSdkVersion=‘18‘,同样改为你ADT中存在的。2)org.cocos2dx.cpp下的AppActivity.java报错。解决方案:点击工程目录->Properties->Java
Build Path->Source/Link Source/Browse。选择引擎目录下cocos/platform/android/java/src。OK,修改Folder name,随便写一个即可。OK。

7、修改AppActivity.java代码

此处只添加一个迷你广告,来说明平台的配置

<span style="font-size:14px;">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("</span><span style="font-family: Arial, 微软雅黑; "><strong><span style="font-size:12px;color:#cc0000;">510a67751f53b4c4d05ed9f56373cc92</span></strong></span><span style="font-size:14px;">",  //APP_ID
                    "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");
    }
}  </span>

8、AndroidManifest.xml加权限

<uses-permission android:name="android.permission.INTERNET" /> //允许程序打开网络套接字
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> //允许程序访问有关GSM网络信息
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /> //允许程序访问wifi网络信息
<uses-permission android:name="android.permission.READ_PHONE_STATE" /> //读取手机状态权限
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />//手机SD卡写入权限
<uses-permission android:name="android.permission.GET_TASKS" />//允许一个程序获取信息相关当前或最近运行的任务。一个缩略的任务状态,是否活动等待


9、编译真机测试

编译过程中可能会遇到各种问题。

1)CDT问题:点击项目名称->Properties->Builders,去掉CDT Builder的勾选。

2)NDK路径问题:ADT置于屏幕最前端,ADT->Preferences->Android->NDK->NDK Location框中添加NDK的相对路径。

3)NDK命令问题:点击项目名称->Properties->C/C++ Build->Environment,Add,添加name:NDK_ROOT,value:NDK相对路径,获取可以通过命令行获取。

4)NDK模块问题:点击项目名称->Properties->Java Build Path/Source/Link Source。实质上这一步的问题在第6步解决了。

5)其他问题:如果还是提示target问题,提高AndroidManifest.xml的最小NDK值,或者重启一下ADT就好了。

10、效果图

时间: 2024-12-17 03:16:24

Cocos2d-x3.1中使用万普平台实现Android平台广告添加的相关文章

4412开发板Android教程——Android平台简介

本文转自迅为开发板论坛:http://www.topeetboard.com Android和IOS Android的历史 Android公司 2005年Google收购成立22个月的Android公司 Android操作系统 2007年正式展示Android操作系统 2007年11月,Google与84家硬件制造商.软件开发商及电信营运商组建开放手机联盟共同研发改良Android系统. 第一部Android智能手机发布于2008年10月 2011年第一季度,Android在全球的市场份额首次超

Android平台实现SSL单双向验证

环境:服务器:apache服务器,openssl. 客户端:PC.java平台.android平台. 思路: 1.先搞定ssl单向验证,再解决双向. 2.先PC,再java平台,再android,不一定非得这样,自由选择,个人是为了弄清整个流程,多走了些路. 过程步骤: 1.在pc上用apache搭建了一个http服务器,用openssl建立自签名的CA证书ca.crt,签发服务器证书server.crt,签发客户端证书client.crt.(apache+openssl配置ssl通信网上资料很

【转帖】android平台ssl单双向验证

原文出自:http://blog.csdn.net/hfeng101/article/details/10163627http://blog.csdn.net/hfeng101/article/details/10163627 android平台ssl单双向验证 分类:             JAVA             android开发              2013-08-21 23:51     4672人阅读     评论(16)     收藏     举报 AndroidS

针对Android平台我们需要学习如何在Unity中调用Android的JAVA代码。

Unity for Android 比较特殊,Unity for IOS 打包是将XCODE工程直接交给开发者,开发者可以在工程的基础上继续添加新的视图,最后由开发者自行打包生成IPA包,发布程序.而Unity for Android打包直接生成APK包,等于说源代码开发者是看不到的,但是Unity的自身确实有些局限,针对Android平台我们需要学习如何在Unity中调用Android的JAVA代码.本章我们的目标是使用Unity的脚本打开Activity.首先我们创建一个普通的Android

Android平台中关于音频播放

Android平台中关于音频播放有以下三种方式: 1.SoundPool ---- 适合短促且对反应速度比较高的情况(游戏音效或按键声等) 2.MediaPlayer ---- 适合比较长且时间要求不高的情况 3.AudioTrack ---- 播放解码后的PCM码流 方法一:SoundPool 1)SoundPool简介 SoundPool类是Android用于管理和播放应用程序的音频资源的类.一个SoundPool对象可以看作是一个可以从APK中导入资源或者从文件系统中载入文件的样本集合.它

【Android平台中的安全编程】の #00-不要在外部存储(SD卡)中存放未加密的敏感信息

本文翻译自https://www.securecoding.cert.org/confluence/display/java/DRD00-J.+Do+not+store+sensitive+information+on+external+storage+%28SD+card%29+unless+encrypted+first,有增删改. Android提供了几种保存持久化应用数据的选择,其中之一就是外部存储(/sdcard, /mnt/sdcard).外部存储包括设备内部的微型或标准大小的SD卡

【Android平台中的安全编程】の #01-限制app的敏感ContentProvider的可访问性

本文翻译自https://www.securecoding.cert.org/confluence/display/java/DRD01-J.+Limit+the+accessibility+of+an+app%27s+sensitive+content+provider,有增删改. ContentProvider类提供了与其他app管理和共享数据的机制.当与其他app共享provider的数据时,必须小心的实现访问控制,防止对敏感数据的非法访问. 限制ContentProvider的访问有三种

JniHelper调用java静态和非静态方法总结(即cocos2dx中调用android平台下显示第三方广告)

调用非静态方法首先就是调用的静态方法得到要调用的java的类对象然后通过调用minfo.env->CallVoidMethod(activityObj, minfo.methodID);方法把对象和要调用的方法以及参数(如果有 )传递个java类对象中的非静态方法: java类: // c++中調用的方法public static Object rtnActivity() {System.out.println("----------rtnActivity");return ma

Android平台中实现翻页特效

Android平台中的二种翻页效果实现.第一种翻页效果如下: 实现原理:当前手指触摸点为a,则 a点坐标为(ax,ay), 由三角形acb与三角形cmb为对称三角形并且直线cp为am垂直平分线,则 B点坐标为(ax/2,ay/2).作gf垂直于om且cb垂直于am, 三角形cfg与gfm相似,则 cf:gf = gf:mf cf=(gf * gf) / mf gf长度为g点纵坐标 mf长度为g点横坐标cf长度可求 c点坐标可求 由c点.g点可确定过两点间的直线, 当该直线中x=0时求出与y足交点