cocos2d-x 3.X 在android 中添加多盟插屏广告
16lz
2021-01-24
效果如下
注册和添加应用就不说了
android部分
1.先将SDK放到libs中
2.AndroidManifest.xml修改如下
[html] view plain copy
- <?xmlversion="1.0"encoding="utf-8"?>
- <manifestxmlns:android="http://schemas.android.com/apk/res/android"
- package="duomengad.crlyn"
- android:versionCode="1"
- android:versionName="1.0">
- <uses-sdkandroid:minSdkVersion="16"/>
- <!--网络访问权限-->
- <uses-permissionandroid:name="android.permission.INTERNET"/>
- <!--获取网络信息状态,如当前的网络连接是否有效-->
- <uses-permissionandroid:name="android.permission.ACCESS_NETWORK_STATE"/>
- <!--读取手机状态-->
- <uses-permissionandroid:name="android.permission.READ_PHONE_STATE"/>
- <!--允许程序写入外部存储,如SD卡上写文件-->
- <uses-permissionandroid:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
- <!--获取错略位置-->
- <uses-permissionandroid:name="android.permission.ACCESS_COARSE_LOCATION"/>
- <!--获取WiFi状态-->
- <uses-permissionandroid:name="android.permission.ACCESS_WIFI_STATE"/>
- <!--以下权限为可选权限,主要是品牌广告会用到,如果您没有添加,需要这些效果的品牌广告将不会投放到您的应用上-->
- <!--震动权限-->
- <uses-permissionandroid:name="android.permission.VIBRATE"/>
- <uses-featureandroid:glEsVersion="0x00020000"/>
- <applicationandroid:label="@string/app_name"
- android:icon="@drawable/icon">
- <!--TellCocos2dxActivitythenameofour.so-->
- <meta-dataandroid:name="android.app.lib_name"
- android:value="cocos2dcpp"/>
- <!--多盟的SDK-->
- <activityandroid:name="cn.domob.android.ads.DomobActivity"
- android:theme="@android :style/Theme.Translucent"></activity>
- <activityandroid:name="org.cocos2dx.cpp.AppActivity"
- android:label="@string/app_name"
- android:screenOrientation="portrait"
- android:theme="@android :style/Theme.NoTitleBar.Fullscreen"
- android:configChanges="orientation">
- <intent-filter>
- <actionandroid:name="android.intent.action.MAIN"/>
- <categoryandroid:name="android.intent.category.LAUNCHER"/>
- </intent-filter>
- </activity>
- </application>
- <supports-screensandroid:anyDensity="true"
- android:smallScreens="true"
- android:normalScreens="true"
- android:largeScreens="true"
- android:xlargeScreens="true"/>
- <uses-permissionandroid:name="android.permission.INTERNET"/>
- </manifest>
3.AppActivity.java 文件修改如下
[java] view plain copy
- /****************************************************************************
- Copyright(c)2008-2010RicardoQuesada
- Copyright(c)2010-2012cocos2d-x.org
- Copyright(c)2011ZyngaInc.
- Copyright(c)2013-2014ChukongTechnologiesInc.
- http://www.cocos2d-x.org
- Permissionisherebygranted,freeofcharge,toanypersonobtainingacopy
- ofthissoftwareandassociateddocumentationfiles(the"Software"),todeal
- intheSoftwarewithoutrestriction,includingwithoutlimitationtherights
- touse,copy,modify,merge,publish,distribute,sublicense,and/orsell
- copiesoftheSoftware,andtopermitpersonstowhomtheSoftwareis
- furnishedtodoso,subjecttothefollowingconditions:
- Theabovecopyrightnoticeandthispermissionnoticeshallbeincludedin
- allcopiesorsubstantialportionsoftheSoftware.
- THESOFTWAREISPROVIDED"ASIS",WITHOUTWARRANTYOFANYKIND,EXPRESSOR
- IMPLIED,INCLUDINGBUTNOTLIMITEDTOTHEWARRANTIESOFMERCHANTABILITY,
- FITNESSFORAPARTICULARPURPOSEANDNONINFRINGEMENT.INNOEVENTSHALLTHE
- AUTHORSORCOPYRIGHTHOLDERSBELIABLEFORANYCLAIM,DAMAGESOROTHER
- LIABILITY,WHETHERINANACTIONOFCONTRACT,TORTOROTHERWISE,ARISINGFROM,
- OUTOFORINCONNECTIONWITHTHESOFTWAREORTHEUSEOROTHERDEALINGSIN
- THESOFTWARE.
- ****************************************************************************/
- packageorg.cocos2dx.cpp;
- importorg.cocos2dx.lib.Cocos2dxActivity;
- importcn.domob.android.ads.DomobAdManager.ErrorCode;
- importcn.domob.android.ads.DomobInterstitialAd;
- importcn.domob.android.ads.DomobInterstitialAdListener;
- importandroid.os.Bundle;
- importandroid.util.Log;
- publicclassAppActivityextendsCocos2dxActivity{
- privateDomobInterstitialAdmInterstitialAd;
- privatestaticAppActivity_AppActivity;
- publicstaticfinalStringPUBLISHER_ID="56OJwdBIuNBzc/kIO9";
- publicstaticfinalStringInterstitialPPID="16TLuqBoApj34NUE2GW-0G9z";
- @Override
- protectedvoidonCreate(BundlesavedIntanceState){
- super.onCreate(savedIntanceState);
- mInterstitialAd=newDomobInterstitialAd(this,PUBLISHER_ID,InterstitialPPID,DomobInterstitialAd.INTERSITIAL_SIZE_300X250);
- mInterstitialAd.setInterstitialAdListener(newDomobInterstitialAdListener(){
- @Override
- publicvoidonInterstitialAdReady(){
- Log.i("DomobSDKDemo","onAdReady");
- }
- @Override
- publicvoidonLandingPageOpen(){
- Log.i("DomobSDKDemo","onLandingPageOpen");
- }
- @Override
- publicvoidonLandingPageClose(){
- Log.i("DomobSDKDemo","onLandingPageClose");
- }
- @Override
- publicvoidonInterstitialAdPresent(){
- Log.i("DomobSDKDemo","onInterstitialAdPresent");
- }
- @Override
- publicvoidonInterstitialAdDismiss(){
- //Requestnewadwhenthepreviousinterstitialadwasclosed.
- mInterstitialAd.loadInterstitialAd();
- Log.i("DomobSDKDemo","onInterstitialAdDismiss");
- }
- @Override
- publicvoidonInterstitialAdFailed(ErrorCodearg0){
- Log.i("DomobSDKDemo","onInterstitialAdFailed");
- }
- @Override
- publicvoidonInterstitialAdLeaveApplication(){
- Log.i("DomobSDKDemo","onInterstitialAdLeaveApplication");
- }
- @Override
- publicvoidonInterstitialAdClicked(DomobInterstitialAdarg0){
- Log.i("DomobSDKDemo","onInterstitialAdClicked");
- }
- });
- mInterstitialAd.loadInterstitialAd();
- _AppActivity=this;
- }
- publicstaticvoidshowAd(){
- _AppActivity.runOnUiThread(newRunnable(){
- @Override
- publicvoidrun(){
- if(_AppActivity.mInterstitialAd.isInterstitialAdReady()){
- _AppActivity.mInterstitialAd.showInterstitialAd(_AppActivity);
- }else{
- Log.i("DomobSDKDemo","InterstitialAdisnotready");
- _AppActivity.mInterstitialAd.loadInterstitialAd();
- }
- }
- });
- }
- }
4.android.mk修改如下
[cpp] view plain copy
- LOCAL_PATH:=$(callmy-dir)
- include$(CLEAR_VARS)
- LOCAL_MODULE:=cocos2dcpp_shared
- LOCAL_MODULE_FILENAME:=libcocos2dcpp
- LOCAL_SRC_FILES:=hellocpp/main.cpp\
- ../../Classes/AppDelegate.cpp\
- ../../Classes/HelloWorldScene.cpp\
- ../../Classes/Admob.cpp
- LOCAL_C_INCLUDES:=$(LOCAL_PATH)/../../Classes
- LOCAL_WHOLE_STATIC_LIBRARIES:=cocos2dx_static
- LOCAL_WHOLE_STATIC_LIBRARIES+=cocosdenshion_static
- #LOCAL_WHOLE_STATIC_LIBRARIES+=box2d_static
- #LOCAL_WHOLE_STATIC_LIBRARIES+=cocosbuilder_static
- #LOCAL_WHOLE_STATIC_LIBRARIES+=spine_static
- #LOCAL_WHOLE_STATIC_LIBRARIES+=cocostudio_static
- #LOCAL_WHOLE_STATIC_LIBRARIES+=cocos_network_static
- #LOCAL_WHOLE_STATIC_LIBRARIES+=cocos_extension_static
- include$(BUILD_SHARED_LIBRARY)
- $(callimport-module,.)
- $(callimport-module,audio/android)
- #$(callimport-module,Box2D)
- #$(callimport-module,editor-support/cocosbuilder)
- #$(callimport-module,editor-support/spine)
- #$(callimport-module,editor-support/cocostudio)
- #$(callimport-module,network)
- #$(callimport-module,extensions)
VS部分
1.新建Admob.h
[cpp] view plain copy
- #pragmaonce
- classAdmob{
- public:
- staticvoidshowAd();
- };
2.新建Admob.cpp
[cpp] view plain copy
- #include"Admob.h"
- #include"cocos2d.h"
- USING_NS_CC;
- #if(CC_TARGET_PLATFORM==CC_PLATFORM_ANDROID)
- #include"platform/android/jni/JniHelper.h"
- #include<jni.h>
- constchar*AppActivityCalssName="org/cocos2dx/cpp/AppActivity";
- voidAdmob::showAd(){
- cocos2d::JniMethodInfot;
- if(cocos2d::JniHelper::getStaticMethodInfo(t,AppActivityCalssName,"showAd","()V")){
- t.env->CallStaticVoidMethod(t.classID,t.methodID);
- t.env->DeleteLocalRef(t.classID);
- }
- }
- #else
- voidAdmob::showAd(){
- log("showAd()called");
- return;
- }
- #endif
3.修改HelloWorldScene.h文件,修改如下
[cpp] view plain copy
- #ifndef__HELLOWORLD_SCENE_H__
- #define__HELLOWORLD_SCENE_H__
- #include"cocos2d.h"
- classHelloWorld:publiccocos2d::Layer
- {
- public:
- //there'sno'id'incpp,sowerecommendreturningtheclassinstancepointer
- staticcocos2d::Scene*createScene();
- //Here'sadifference.Method'init'incocos2d-xreturnsbool,insteadofreturning'id'incocos2d-iphone
- virtualboolinit();
- //aselectorcallback
- voidmenuCloseCallback(cocos2d::Ref*pSender);
- voidadCallback(cocos2d::Ref*pRef);
- //implementthe"staticcreate()"methodmanually
- CREATE_FUNC(HelloWorld);
- };
- #endif//__HELLOWORLD_SCENE_H__
4.修改HelloWorldScene.cpp文件,修改如下
[cpp] view plain copy
- #include"HelloWorldScene.h"
- #include"Admob.h"
- USING_NS_CC;
- Scene*HelloWorld::createScene()
- {
- //'scene'isanautoreleaseobject
- autoscene=Scene::create();
- //'layer'isanautoreleaseobject
- autolayer=HelloWorld::create();
- //addlayerasachildtoscene
- scene->addChild(layer);
- //returnthescene
- returnscene;
- }
- //on"init"youneedtoinitializeyourinstance
- boolHelloWorld::init()
- {
- //////////////////////////////
- //1.superinitfirst
- if(!Layer::init())
- {
- returnfalse;
- }
- SizevisibleSize=Director::getInstance()->getVisibleSize();
- Vec2origin=Director::getInstance()->getVisibleOrigin();
- /////////////////////////////
- //2.addamenuitemwith"X"image,whichisclickedtoquittheprogram
- //youmaymodifyit.
- //adda"close"icontoexittheprogress.it'sanautoreleaseobject
- autocloseItem=MenuItemImage::create(
- "CloseNormal.png",
- "CloseSelected.png",
- CC_CALLBACK_1(HelloWorld::menuCloseCallback,this));
- closeItem->setPosition(Vec2(origin.x+visibleSize.width-closeItem->getContentSize().width/2,
- origin.y+closeItem->getContentSize().height/2));
- autoadItem=MenuItemImage::create(
- "CloseNormal.png",
- "CloseSelected.png",
- CC_CALLBACK_1(HelloWorld::adCallback,this));
- adItem->setPosition(Vec2(origin.x+visibleSize.width/2,origin.y+visibleSize.height/2));
- //createmenu,it'sanautoreleaseobject
- automenu=Menu::create(closeItem,adItem,NULL);
- menu->setPosition(Vec2::ZERO);
- this->addChild(menu,1);
- /////////////////////////////
- //3.addyourcodesbelow...
- //addalabelshows"HelloWorld"
- //createandinitializealabel
- autolabel=LabelTTF::create("HelloWorld","Arial",24);
- //positionthelabelonthecenterofthescreen
- label->setPosition(Vec2(origin.x+visibleSize.width/2,
- origin.y+visibleSize.height-label->getContentSize().height));
- //addthelabelasachildtothislayer
- this->addChild(label,1);
- //add"HelloWorld"splashscreen"
- autosprite=Sprite::create("HelloWorld.png");
- //positionthespriteonthecenterofthescreen
- sprite->setPosition(Vec2(visibleSize.width/2+origin.x,visibleSize.height/2+origin.y));
- //addthespriteasachildtothislayer
- this->addChild(sprite,0);
- returntrue;
- }
- voidHelloWorld::menuCloseCallback(Ref*pSender)
- {
- #if(CC_TARGET_PLATFORM==CC_PLATFORM_WP8)||(CC_TARGET_PLATFORM==CC_PLATFORM_WINRT)
- MessageBox("Youpressedtheclosebutton.WindowsStoreAppsdonotimplementaclosebutton.","Alert");
- return;
- #endif
- Director::getInstance()->end();
- #if(CC_TARGET_PLATFORM==CC_PLATFORM_IOS)
- exit(0);
- #endif
- }
- voidHelloWorld::adCallback(cocos2d::Ref*pRef){
- Admob::showAd();
- }
OK,点击最中央的按钮,
转自:http://blog.csdn.net/wiyun_beijing/article/details/17912471
更多相关文章
- Android(安卓)Media Framework(4): 支持格式的扩展
- Android(安卓)sdcard读写文件(二)
- unity Android(安卓)csv 数据持久化
- Android中对标准内核的按键映射以及按键驱动
- android 遍历assets下的文件
- Android(安卓)数据存储与IO (二)
- ubuntu 删除android studio
- android获取手机内部存储空间和外部存储空间
- Android内存泄露利器(hprof篇)