Android集成有米广告,简单几步就可以让app为你赚钱!

一:介绍

今天心血来潮,在安卓巴士上逛的时候下载了一个开源代码,然后运行起来看到有米的广告,想想自己也做一个集成有米广告的demo吧,然后我就做了有开屏广告,插屏广告和广告条三种形式的广告demo,不含有积分广告.

二:demo运行效果图

1.启动界面的广告,如网易云音乐启动界面3秒的广告



2.然后就是主界面的广告图



三:集成有米的步骤

1.首先进入有米官网点击进入有米官网,如果还没用开发者账号,就注册一个,注册完成之后就进入有米的管理后台,添加应用



2.之后点击下一步,先去下载有米的sdk,Android要和客服联系,然后客服发压缩包给你,解压之后的目录如下图


libs目录里面就是有米的sdk,导入到你的项目的libs目录下,addaslibrary即可,doc里面有集成的官方文档,文档里面提供链接,大家用浏览器打开即可,demo里面就是官方的eclipse工程的demo了,大家可以导入eclipse

3.官方的demo导入eclipse之后,复制里面的清单文件里的这些部分

(1)权限部分

[java]  view plain  copy
  1. <!-- 配置权限 -->  
  2.     <uses-permission android:name="android.permission.INTERNET" />  
  3.     <uses-permission android:name="android.permission.READ_PHONE_STATE" />  
  4.     <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />  
  5.     <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />  
  6.     <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />  
  7.     <uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" />  
  8.     <!-- 如果使用积分墙广告,还需要配置下面权限 -->  
  9.     <!-- <uses-permission android:name="android.permission.GET_TASKS" /> -->  
  10.     <!-- <uses-permission -->  
  11.     <!-- android:name="android.permission.PACKAGE_USAGE_STATS" -->  
  12.     <!-- tools:ignore="ProtectedPermissions" /> -->  
  13.     <!-- 以下为可选权限 -->  
  14.     <uses-permission android:name="com.android.launcher.permission.INSTALL_SHORTCUT" />  
  15.     <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />  
(2)组件部分

[java]  view plain  copy
  1. <!-- 视频组件 -->  
  2.         <activity  
  3.             android:name="er.kj.iy.video.VideoActivity"  
  4.             android:configChanges="keyboard|keyboardHidden|screenSize|orientation"  
  5.             android:screenOrientation="landscape"  
  6.             android:theme="@android:style/Theme.NoTitleBar" />  
  7.   
  8.         <!-- 其他组件 -->  
  9.         <activity  
  10.             android:name="er.kj.iy.SD"  
  11.             android:configChanges="keyboard|keyboardHidden|orientation|screenSize"  
  12.             android:theme="@android:style/Theme.NoTitleBar" />  
  13.   
  14.         <service  
  15.             android:name="er.kj.iy.QW"  
  16.             android:exported="false" />  
  17.   
  18.         <receiver android:name="er.kj.iy.VB">  
  19.             <intent-filter>  
  20.                 <action android:name="android.intent.action.PACKAGE_ADDED" />  
  21.                 <action android:name="android.intent.action.PACKAGE_INSTALL" />  
  22.   
  23.                 <data android:scheme="package" />  
  24.             </intent-filter>  
  25.         </receiver>  
  26.   
  27.         <!-- 有米渠道号(可选配置) 渠道号不能带空格,类型为整数 -->  
  28.         <meta-data  
  29.             android:name="YOUMI_CHANNEL"  
  30.             android:value="0" />  

3.就是初始化有米sdk,这里初始化放在第一次启动的activity中,你也可以放在项目的自定义application中,同时别忘了在清单文件里引入你定义的application

[java]  view plain  copy
  1. //请务必在应用第一个 Activity(启动的第一个类)的 onCreate 中调用以下代码,初始化sdk  
  2.         AdManager.getInstance(context).init(appId, appSecret, true);  
appId和appSecret是你再 有米后台管理添加应用的时候获取到的,第三个布尔类型的参数表示是否打印日志,处于开发模式的时候设为true


4.在程序的启动activity中加入开屏广告,效果是上面的第一张效果图

[java]  view plain  copy
  1. /** 
  2.      * 设置开屏广告 
  3.      */  
  4.     private void setupSplashAd() {  
  5.         /** 
  6.          * 自定义模式 
  7.          */  
  8.         SplashView splashView = new SplashView(thisnull);  
  9.         // 设置是否显示倒计时,默认显示  
  10.         splashView.setShowReciprocal(true);  
  11.         // 设置是否显示关闭按钮,默认不显示  
  12.         splashView.hideCloseBtn(true);  
  13.         //传入跳转的intent,若传入intent,初始化时目标activity应传入null  
  14.         Intent intent = new Intent(this, MainActivity.class);  
  15.         splashView.setIntent(intent);  
  16.         //展示失败后是否直接跳转,默认直接跳转  
  17.         splashView.setIsJumpTargetWhenFail(true);  
  18.         //获取开屏视图  
  19.         View splash = splashView.getSplashView();  
  20.   
  21.         final RelativeLayout splashLayout = (RelativeLayout) findViewById(R.id.rl_splash);  
  22.         splashLayout.setVisibility(View.GONE);  
  23.         //添加开屏视图到布局中  
  24.         RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT);  
  25.         params.addRule(RelativeLayout.ABOVE, R.id.view_divider);  
  26.         splashLayout.addView(splash, params);  
  27.         //显示开屏  
  28.         SpotManager.getInstance(context).showSplashSpotAds(context, splashView, new SpotDialogListener() {  
  29.   
  30.             @Override  
  31.             public void onShowSuccess() {  
  32.                 Log.i(TAG, "开屏展示成功");  
  33.                 splashLayout.setVisibility(View.VISIBLE);  
  34.                 splashLayout.startAnimation(AnimationUtils.loadAnimation(context, R.anim.anim_splash_enter));  
  35.             }  
  36.   
  37.             @Override  
  38.             public void onShowFailed() {  
  39.                 Log.i(TAG, "开屏展示失败");  
  40.             }  
  41.   
  42.             @Override  
  43.             public void onSpotClosed() {  
  44.                 Log.i(TAG, "开屏被关闭");  
  45.             }  
  46.   
  47.             @Override  
  48.             public void onSpotClick(boolean isWebPath) {  
  49.                 Log.i(TAG, "开屏被点击");  
  50.             }  
  51.         });  
  52.   
  53.         /** 
  54.          * 默认模式 
  55.          */  
  56.         // SpotManager.getInstance(this).showSplashSpotAds(this,  
  57.         // MainActivity.class);  
  58.     }  

5.上面的开屏广告在5秒之后会自动进入主activity,或者用户点击关闭立刻进入主activity,主activity展示的是广告条和插屏广告,下面是完整的主activity的代码

[java]  view plain  copy
  1. package com.zidiv.youmidemo;  
  2.   
  3. import android.app.Activity;  
  4. import android.content.Context;  
  5. import android.support.v7.app.AppCompatActivity;  
  6. import android.os.Bundle;  
  7. import android.util.Log;  
  8. import android.view.Gravity;  
  9. import android.view.View;  
  10. import android.widget.Button;  
  11. import android.widget.FrameLayout;  
  12.   
  13. import er.kj.iy.br.AdSize;  
  14. import er.kj.iy.br.AdView;  
  15. import er.kj.iy.br.AdViewListener;  
  16. import er.kj.iy.st.SpotDialogListener;  
  17. import er.kj.iy.st.SpotManager;  
  18.   
  19. public class MainActivity extends AppCompatActivity {  
  20.     private static final String TAG = "youmi-demo";  
  21.     private Context context = this;  
  22.   
  23.     @Override  
  24.     protected void onCreate(Bundle savedInstanceState) {  
  25.         super.onCreate(savedInstanceState);  
  26.         setContentView(R.layout.activity_main);  
  27.         //设置插屏  
  28.         setupSpotAd();  
  29.         //设置广告条  
  30.         setupBannerAd();  
  31.     }  
  32.   
  33.   
  34.     /** 
  35.      * 设置插屏广告 
  36.      */  
  37.     private void setupSpotAd() {  
  38.         // 预加载插屏广告数据  
  39.         SpotManager.getInstance(context).loadSpotAds();  
  40.         // 设置插屏动画的横竖屏展示方式,如果设置了横屏,则在有广告资源的情况下会是优先使用横屏图  
  41.         SpotManager.getInstance(context)  
  42.                 .setSpotOrientation(SpotManager.ORIENTATION_LANDSCAPE);  
  43.         // 插屏动画效果,0:ANIM_NONE为无动画,1:ANIM_SIMPLE为简单动画效果,2:ANIM_ADVANCE为高级动画效果  
  44.         SpotManager.getInstance(context).setAnimationType(SpotManager.ANIM_ADVANCE);  
  45.   
  46.         Button btnShowSpot = (Button) findViewById(R.id.btn_show_spot);  
  47.         if (btnShowSpot.getVisibility() == View.GONE) {  
  48.             btnShowSpot.setVisibility(View.VISIBLE);  
  49.         }  
  50.   
  51.         btnShowSpot.setOnClickListener(new View.OnClickListener() {  
  52.             @Override  
  53.             public void onClick(View v) {  
  54.                 // 展示插屏广告,可以不调用预加载方法独立使用  
  55.                 SpotManager.getInstance(context)  
  56.                         .showSpotAds(context, new SpotDialogListener() {  
  57.                             @Override  
  58.                             public void onShowSuccess() {  
  59.                                 Log.i(TAG, "插屏展示成功");  
  60.                             }  
  61.   
  62.                             @Override  
  63.                             public void onShowFailed() {  
  64.                                 Log.i(TAG, "插屏展示失败");  
  65.                             }  
  66.   
  67.                             @Override  
  68.                             public void onSpotClosed() {  
  69.                                 Log.i(TAG, "插屏被关闭");  
  70.                             }  
  71.   
  72.                             @Override  
  73.                             public void onSpotClick(boolean isWebPath) {  
  74.                                 Log.i(TAG, "插屏被点击,isWebPath = " + isWebPath);  
  75.                             }  
  76.                         });  
  77.             }  
  78.         });  
  79.     }  
  80.   
  81.     /** 
  82.      * 设置广告条广告 
  83.      */  
  84.     private void setupBannerAd() {  
  85.         //      /**  
  86.         //       * 普通布局  
  87.         //       */  
  88.         //      // 实例化广告条  
  89.         //      AdView adView = new AdView(context, AdSize.FIT_SCREEN);  
  90.         //      LinearLayout bannerLayout = (LinearLayout) findViewById(R.id.ll_banner);  
  91.         //      bannerLayout.addView(adView);  
  92.         /** 
  93.          * 悬浮布局 
  94.          */  
  95.         // 实例化LayoutParams(重要)  
  96.         FrameLayout.LayoutParams layoutParams =  
  97.                 new FrameLayout.LayoutParams(FrameLayout.LayoutParams.WRAP_CONTENT, FrameLayout.LayoutParams.WRAP_CONTENT);  
  98.         // 设置广告条的悬浮位置,这里示例为右下角  
  99.         layoutParams.gravity = Gravity.BOTTOM | Gravity.RIGHT;  
  100.         // 实例化广告条  
  101.         AdView adView = new AdView(context, AdSize.FIT_SCREEN);  
  102.         // 监听广告条接口  
  103.         adView.setAdListener(new AdViewListener() {  
  104.   
  105.             @Override  
  106.             public void onSwitchedAd(AdView arg0) {  
  107.                 Log.i(TAG, "广告条切换");  
  108.             }  
  109.   
  110.             @Override  
  111.             public void onReceivedAd(AdView arg0) {  
  112.                 Log.i(TAG, "请求广告成功");  
  113.             }  
  114.   
  115.             @Override  
  116.             public void onFailedToReceivedAd(AdView arg0) {  
  117.                 Log.i(TAG, "请求广告失败");  
  118.             }  
  119.         });  
  120.         // 调用Activity的addContentView函数  
  121.         ((Activity) context).addContentView(adView, layoutParams);  
  122.     }  
  123.   
  124.     @Override  
  125.     public void onBackPressed() {  
  126.         // 如果有需要,可以点击后退关闭插播广告。  
  127.         if (!SpotManager.getInstance(context).disMiss()) {  
  128.             super.onBackPressed();  
  129.         }  
  130.     }  
  131.   
  132.     @Override  
  133.     protected void onStop() {  
  134.         // 如果不调用此方法,则按home键的时候会出现图标无法显示的情况  
  135.         SpotManager.getInstance(context).onStop();  
  136.         super.onStop();  
  137.     }  
  138.   
  139.     @Override  
  140.     protected void onDestroy() {  
  141.         // 调用插屏,开屏,退屏时退出  
  142.         SpotManager.getInstance(context).onDestroy();  
  143.         super.onDestroy();  
  144.     }  
  145. }  

6.布局文件其实用的就是官方demo中的布局文件,这里就不展示了,大家下载到官方的压缩包之后解压demo中就有,或者下载我的demo也是可以的,大家根据项目需要调整布局文件即可


四.本文章转载于:   lzyang朝阳

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值