热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Cocos2d-x3.3RC0实现有米广告平台接入

有米广告平台介绍:有米SDK关于有米的一些信息设置,官网表述的已经非常清楚,此处不再赘述,本教程是针对Android机器。直接上代码1】C部分本教程基于Cocos2d-x的HelloWorld空程序,所以代码非常简单,不需修改C部分代码2】Java代码1、AppActivity.jav

有米广告平台介绍:有米SDK 关于有米的一些信息设置,官网表述的已经非常清楚,此处不再赘述,本教程是针对Android机器。 直接上代码 1】C部分 本教程基于Cocos2d-x的HelloWorld空程序,所以代码非常简单,不需修改C部分代码 2】Java代码 1、AppActivity.jav

有米广告平台介绍:有米SDK

关于有米的一些信息设置,官网表述的已经非常清楚,此处不再赘述,本教程是针对Android机器。

直接上代码

1】C++部分

本教程基于Cocos2d-x的HelloWorld空程序,所以代码非常简单,不需修改C++部分代码

2】Java代码

1、AppActivity.java

/****************************************************************************
Copyright (c) 2008-2010 Ricardo Quesada
Copyright (c) 2010-2012 cocos2d-x.org
Copyright (c) 2011      Zynga Inc.
Copyright (c) 2013-2014 Chukong Technologies Inc.
 
http://www.cocos2d-x.org

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.
****************************************************************************/
package org.cocos2dx.cpp;

import net.youmi.android.AdManager;
import net.youmi.android.banner.AdSize;
import net.youmi.android.banner.AdView;
import net.youmi.android.banner.AdViewListener;
import net.youmi.android.spot.SpotDialogListener;
import net.youmi.android.spot.SpotManager;

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

import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.util.Log;
import android.view.Gravity;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.view.ViewGroup.LayoutParams;
import android.widget.Button;
import android.widget.FrameLayout;
import android.widget.LinearLayout;

import com.yxk.youmi.R;
public class AppActivity extends Cocos2dxActivity {
//	SpotManager.getInstance(sActivity).showSpotAds(sActivity);
	private Cocos2dxGLSurfaceView mGLView;//add
	private static Context mContext;//add
	protected void onCreate(Bundle savedInstanceState)
	{
		super.onCreate(savedInstanceState);
		mCOntext= this; //add
		
		LayoutParams frameLayout_paras = new ViewGroup.LayoutParams(
				ViewGroup.LayoutParams.FILL_PARENT,
				ViewGroup.LayoutParams.FILL_PARENT);
		FrameLayout frameLayout = new FrameLayout(this);
		frameLayout.setLayoutParams(frameLayout_paras);
		
		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);
		frameLayout.addView(editText);
		
		mGLView = new Cocos2dxGLSurfaceView(this);
		frameLayout.addView(mGLView);
		
		mGLView.setEGLContextClientVersion(2);
		mGLView.setCocos2dxRenderer(new Cocos2dxRenderer());
		
		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.BOTTOM | Gravity.CENTER_HORIZONTAL;//这里确定广告的位置    
        this.addContentView(adMiniLayout, lp_mini);    

        LinearLayout miniLayout = new LinearLayout(this);    
        miniLayout.setGravity(Gravity.CENTER_HORIZONTAL);    
        adMiniLayout.addView(miniLayout);
        
        AdManager.getInstance(this).init("937f81391fe278d0", "11f447b520039ceb", false);
		AdView adView = new AdView(this, AdSize.FIT_SCREEN);
		miniLayout.addView(adView);
		
		// 监听广告条接口
		adView.setAdListener(new AdViewListener() {

			@Override
			public void onSwitchedAd(AdView arg0) {
				Log.i("YoumiAdDemo", "广告条切换");
			}

			@Override
			public void onReceivedAd(AdView arg0) {
				Log.i("YoumiAdDemo", "请求广告成功");

			}

			@Override
			public void onFailedToReceivedAd(AdView arg0) {
				Log.i("YoumiAdDemo", "请求广告失败");
			}
		});
		SpotManager.getInstance(this).loadSpotAds();
		SpotManager.getInstance(this).setShowInterval(20);// 设置20秒的显示时间间隔
		SpotManager.getInstance(this).setSpotOrientation(
				SpotManager.ORIENTATION_PORTRAIT);
	}
/*		
		Button spotBtn = (Button) findViewById(R.id.showSpot);
		spotBtn.setOnClickListener(new OnClickListener() {
			@Override
			public void onClick(View v) {

				// 展示插播广告,可以不调用loadSpot独立使用
				SpotManager.getInstance(AppActivity.this).showSpotAds(
						AppActivity.this, new SpotDialogListener() {
							@Override
							public void onShowSuccess() {
								Log.i("YoumiAdDemo", "展示成功");
							}

							@Override
							public void onShowFailed() {
								Log.i("YoumiAdDemo", "展示失败");
							}

							@Override
							public void onSpotClosed() {
								Log.e("YoumiAdDemo", "插屏关闭");
							}

						}); // //

				// 可以根据需要设置Theme,如下调用,如果无特殊需求,直接调用上方的接口即可
				// SpotManager.getInstance(YoumiAdDemo.this).showSpotAds(YoumiAdDemo.this,
				// android.R.style.Theme_Translucent_NoTitleBar);
				// //
			}
		});

		Button diyBtn = (Button) findViewById(R.id.diy);
		diyBtn.setOnClickListener(new OnClickListener() {
			@Override
			public void onClick(View view) {
				Intent intent = new Intent();
				intent.setClass(AppActivity.this, DiyDemo.class);
				startActivity(intent);
			}
		});
	}
	*/
//		setContentView(R.layout.main);//del
		
		
/*
		AdManager.getInstance(this).init("937f81391fe278d0", "11f447b520039ceb", false);
		FrameLayout.LayoutParams layoutParams = new FrameLayout.LayoutParams(FrameLayout.LayoutParams.FILL_PARENT,
				FrameLayout.LayoutParams.WRAP_CONTENT);
		// 设置广告条的悬浮位置
		layoutParams.gravity = Gravity.BOTTOM | Gravity.RIGHT; // 这里示例为右下角
		// 实例化广告条
		AdView adView = new AdView(this, AdSize.FIT_SCREEN);
		// 调用Activity的addContentView函数
		this.addContentView(adView, layoutParams);

		// 监听广告条接口
		adView.setAdListener(new AdViewListener() {

			@Override
			public void onSwitchedAd(AdView arg0) {
				Log.i("YoumiAdDemo", "广告条切换");
			}

			@Override
			public void onReceivedAd(AdView arg0) {
				Log.i("YoumiAdDemo", "请求广告成功");

			}

			@Override
			public void onFailedToReceivedAd(AdView arg0) {
				Log.i("YoumiAdDemo", "请求广告失败");
			}
		});
		SpotManager.getInstance(this).loadSpotAds();
		SpotManager.getInstance(this).setShowInterval(20);// 设置20秒的显示时间间隔
		SpotManager.getInstance(this).setSpotOrientation(
				SpotManager.ORIENTATION_PORTRAIT);

		Button spotBtn = (Button) findViewById(R.id.showSpot);
		spotBtn.setOnClickListener(new OnClickListener() {
			@Override
			public void onClick(View v) {

				// 展示插播广告,可以不调用loadSpot独立使用
				SpotManager.getInstance(AppActivity.this).showSpotAds(
						AppActivity.this, new SpotDialogListener() {
							@Override
							public void onShowSuccess() {
								Log.i("YoumiAdDemo", "展示成功");
							}

							@Override
							public void onShowFailed() {
								Log.i("YoumiAdDemo", "展示失败");
							}

							@Override
							public void onSpotClosed() {
								Log.e("YoumiAdDemo", "插屏关闭");
							}

						}); // //

				// 可以根据需要设置Theme,如下调用,如果无特殊需求,直接调用上方的接口即可
				// SpotManager.getInstance(YoumiAdDemo.this).showSpotAds(YoumiAdDemo.this,
				// android.R.style.Theme_Translucent_NoTitleBar);
				// //
			}
		});

		Button diyBtn = (Button) findViewById(R.id.diy);
		diyBtn.setOnClickListener(new OnClickListener() {
			@Override
			public void onClick(View view) {
				Intent intent = new Intent();
				intent.setClass(AppActivity.this, DiyDemo.class);
				startActivity(intent);
			}
		});
	}
*/
	@Override
	public void onBackPressed() {
		// 如果有需要,可以点击后退关闭插播广告。
		if (!SpotManager.getInstance(AppActivity.this).disMiss(true)) {
			super.onBackPressed();
		}
	}

	@Override
	protected void onStop() {
		// 如果不调用此方法,则按home键的时候会出现图标无法显示的情况。
		SpotManager.getInstance(AppActivity.this).disMiss(false);
		super.onStop();
	}

	@Override
	protected void onDestroy() {
		SpotManager.getInstance(this).unregisterSceenReceiver();
		super.onDestroy();
	}	
}

2、DiyDemo.java

package org.cocos2dx.cpp;

import java.util.List;
import com.yxk.youmi.R;
import net.youmi.android.diy.AdObject;
import net.youmi.android.diy.DiyManager;
import net.youmi.android.diy.banner.DiyAdSize;
import net.youmi.android.diy.banner.DiyBanner;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.RelativeLayout; 
public class DiyDemo extends Activity{
	private Button showRecommendWallBtn, showRecommendAppWallBtn, showRecommendGameWallBtn;
    private List adList;

    public void onCreate(Bundle bundle){
        super.onCreate(bundle);
        setContentView(R.layout.activity_diydemo);


        //普通布局,适用于应用
        //获取要嵌入迷你广告条的布局
        RelativeLayout adLayout=(RelativeLayout)findViewById(R.id.adLayout);
        //demo 1 迷你Banner : 宽满屏,高32dp
        DiyBanner banner = new DiyBanner(this, DiyAdSize.SIZE_MATCH_SCREENx32);//传入高度为32dp的AdSize来定义迷你Banner    
        //demo 2 迷你Banner : 宽320dp,高32dp
        //DiyBanner banner = new DiyBanner(this, DiyAdSize.SIZE_320x32);//传入高度为32dp的AdSize来定义迷你Banner 
        //将积分Banner加入到布局中
        adLayout.addView(banner);

        
        //悬浮布局,适用于游戏
        /*
	        //实例化LayoutParams(重要)
	        FrameLayout.LayoutParams layoutParams = new FrameLayout.LayoutParams(
	            FrameLayout.LayoutParams.FILL_PARENT,
	            FrameLayout.LayoutParams.WRAP_CONTENT);     
	        //设置迷你Banner的悬浮位置
	        layoutParams.gravity = Gravity.BOTTOM | Gravity.RIGHT; // 这里示例为右下角  
	        //实例化迷你Banner
	        DiyBanner banner = new DiyBanner(this, DiyAdSize.SIZE_MATCH_SCREENx32);//传入高度为32dp的DiyAdSize来定义迷你Banner
	        //调用Activity的addContentView函数
	        this.addContentView(banner, layoutParams);
        */

        showRecommendWallBtn = (Button) findViewById(R.id.showRecommendWall);
        showRecommendWallBtn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
            	// 展示所有应用推荐墙
            	DiyManager.showRecommendWall(DiyDemo.this);
            }
        });
        
        showRecommendAppWallBtn = (Button) findViewById(R.id.showRecommendAppWall);
        showRecommendAppWallBtn.setOnClickListener(new View.OnClickListener() {
        	@Override
        	public void onClick(View view) {
        		// 展示应用推荐墙
        		DiyManager.showRecommendAppWall(DiyDemo.this);
        	}
        });
        
        showRecommendGameWallBtn = (Button) findViewById(R.id.showRecommendGameWall);
        showRecommendGameWallBtn.setOnClickListener(new View.OnClickListener() {
        	@Override
        	public void onClick(View view) {
        		// 展示游戏推荐墙
        		DiyManager.showRecommendGameWall(DiyDemo.this);
        	}
        });


}

}

3、AndroidManifest.xml




    
    

    
					 
        
        

        
                  
            
                
                
            
        
        
        
        

        
        

        
            
                
                
            
        
        
        
        
        
        
        
        
        
 	
    

    
	
	
	
	
	
	
	
	
	
 
运行效果




推荐阅读
  • RecyclerView初步学习(一)
    RecyclerView初步学习(一)ReCyclerView提供了一种插件式的编程模式,除了提供ViewHolder缓存模式,还可以自定义动画,分割符,布局样式,相比于传统的ListVi ... [详细]
  • 优化ListView性能
    本文深入探讨了如何通过多种技术手段优化ListView的性能,包括视图复用、ViewHolder模式、分批加载数据、图片优化及内存管理等。这些方法能够显著提升应用的响应速度和用户体验。 ... [详细]
  • Android 九宫格布局详解及实现:人人网应用示例
    本文深入探讨了人人网Android应用中独特的九宫格布局设计,解析其背后的GridView实现原理,并提供详细的代码示例。这种布局方式不仅美观大方,而且在现代Android应用中较为少见,值得开发者借鉴。 ... [详细]
  • 本文详细介绍了如何在Linux系统上安装和配置Smokeping,以实现对网络链路质量的实时监控。通过详细的步骤和必要的依赖包安装,确保用户能够顺利完成部署并优化其网络性能监控。 ... [详细]
  • 在Linux系统中配置并启动ActiveMQ
    本文详细介绍了如何在Linux环境中安装和配置ActiveMQ,包括端口开放及防火墙设置。通过本文,您可以掌握完整的ActiveMQ部署流程,确保其在网络环境中正常运行。 ... [详细]
  • Python自动化处理:从Word文档提取内容并生成带水印的PDF
    本文介绍如何利用Python实现从特定网站下载Word文档,去除水印并添加自定义水印,最终将文档转换为PDF格式。该方法适用于批量处理和自动化需求。 ... [详细]
  • 在当前众多持久层框架中,MyBatis(前身为iBatis)凭借其轻量级、易用性和对SQL的直接支持,成为许多开发者的首选。本文将详细探讨MyBatis的核心概念、设计理念及其优势。 ... [详细]
  • 360SRC安全应急响应:从漏洞提交到修复的全过程
    本文详细介绍了360SRC平台处理一起关键安全事件的过程,涵盖从漏洞提交、验证、排查到最终修复的各个环节。通过这一案例,展示了360在安全应急响应方面的专业能力和严谨态度。 ... [详细]
  • 本文介绍如何通过Windows批处理脚本定期检查并重启Java应用程序,确保其持续稳定运行。脚本每30分钟检查一次,并在需要时重启Java程序。同时,它会将任务结果发送到Redis。 ... [详细]
  • Android LED 数字字体的应用与实现
    本文介绍了一种适用于 Android 应用的 LED 数字字体(digital font),并详细描述了其在 UI 设计中的应用场景及其实现方法。这种字体常用于视频、广告倒计时等场景,能够增强视觉效果。 ... [详细]
  • 本章将深入探讨移动 UI 设计的核心原则,帮助开发者构建简洁、高效且用户友好的界面。通过学习设计规则和用户体验优化技巧,您将能够创建出既美观又实用的移动应用。 ... [详细]
  • 非公版RTX 3080显卡的革新与亮点
    本文深入探讨了图形显卡的进化历程,重点介绍了非公版RTX 3080显卡的技术特点和创新设计。 ... [详细]
  • Valve 发布 Steam Deck 的新版 Windows 驱动程序
    Valve 最新发布了针对 Steam Deck 掌机的 Windows 驱动程序,旨在提升其在 Windows 环境下的兼容性、安全性和性能表现。 ... [详细]
  • 本文详细介绍了 GWT 中 PopupPanel 类的 onKeyDownPreview 方法,提供了多个代码示例及应用场景,帮助开发者更好地理解和使用该方法。 ... [详细]
  • 如何在WPS Office for Mac中调整Word文档的文字排列方向
    本文将详细介绍如何使用最新版WPS Office for Mac调整Word文档中的文字排列方向。通过这些步骤,用户可以轻松更改文本的水平或垂直排列方式,以满足不同的排版需求。 ... [详细]
author-avatar
陈佩儒61473
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有