unity3d android工程加入最新的有米廣告

來源:互聯網
上載者:User

標籤:unity3d   有米   廣告   android開發   

開此貼的原因是,我用unity3d做了一個小遊戲,老闆讓我加上廣告。但是我本人不會java,更不會寫android,最後折騰了好幾天,查了亂七八糟的好多文章,要麼是使用老的有米SDK,要麼是說的不詳細,誤人子弟。最後我使用此方法,終於成功加上了廣告條。按照我的方法,即使不會android開發也沒問題。感興趣的可以看一下。</span>

準備:

1、首先需要有android開發環境:eclipse+android sdk+java,這個就不用我說了,網上有很多詳細的文章;

2、其次要有unity3d 軟體;

3、有米SDK:

有了上面的環境,下面就可以正式開始:

1、開啟unity3d,建立一個工程,為了示範簡單,我建了一個情境,加了一個指令檔,


2、building:注意中紅色部分


然後export到英文路徑下。比如我的是:D:\test\testYouMi\try

好了,現在我們用unity3d 做的android工程已經完成了,已經沒有unity3d 的事情了,下面開始給這個工程加有米廣告;

3、開啟eclipse,import我們剛才的工程,然後finishing

4、加入有米的SDK,匯入jar,直接將YoumiSdk_v5.00_2015-01-08.jar拖到lib檔案夾下,copy files ->OK;然後build path->add to path

5、修改UnityPlayerNativeActivity.java;

首先匯入包:添加以下代碼

import net.youmi.android.AdManager;import net.youmi.android.banner.AdSize;import net.youmi.android.banner.AdView;import net.youmi.android.spot.SpotManager;import android.app.Activity;import android.os.Bundle;import android.view.Gravity;import android.view.Menu;import android.view.MenuItem;import android.widget.FrameLayout;
然後添加代碼:

AdManager.getInstance(this).init("da4217c86b4902f1", "1f1d3f0007343c71", false);// 載入插播資源SpotManager.getInstance(this).loadSpotAds();// 插屏出現動畫效果,0:ANIM_NONE為無動畫,1:ANIM_SIMPLE為簡單動畫效果,2:ANIM_ADVANCE為進階動畫效果SpotManager.getInstance(this).setAnimationType(SpotManager.ANIM_ADVANCE);// 設定插屏動畫的橫豎屏展示方式,如果設定了橫屏,則在有廣告資源的情況下會是優先使用橫屏圖。SpotManager.getInstance(this).setSpotOrientation(SpotManager.ORIENTATION_PORTRAIT);FrameLayout.LayoutParams layoutParams = new FrameLayout.LayoutParams(FrameLayout.LayoutParams.WRAP_CONTENT,FrameLayout.LayoutParams.WRAP_CONTENT);// 設定廣告條的懸浮位置layoutParams.gravity = Gravity.BOTTOM | Gravity.END; // 這裡樣本為右下角// 執行個體化廣告條AdView adView = new AdView(this, AdSize.FIT_SCREEN);// 調用Activity的addContentView函數this.addContentView(adView, layoutParams);

最終UnityPlayerNativeActivity.java代碼如下,我們只添加了兩個部分:

package com.chuji.test;import com.unity3d.player.*;import android.app.NativeActivity;import android.content.res.Configuration;import android.graphics.PixelFormat;import android.os.Bundle;import android.view.KeyEvent;import android.view.MotionEvent;import android.view.View;import android.view.Window;import android.view.WindowManager;import net.youmi.android.AdManager;import net.youmi.android.banner.AdSize;import net.youmi.android.banner.AdView;import net.youmi.android.spot.SpotManager;import android.app.Activity;import android.os.Bundle;import android.view.Gravity;import android.view.Menu;import android.view.MenuItem;import android.widget.FrameLayout;public class UnityPlayerNativeActivity extends NativeActivity{protected UnityPlayer mUnityPlayer;// don't change the name of this variable; referenced from native code// Setup activity layout@Override protected void onCreate (Bundle savedInstanceState){requestWindowFeature(Window.FEATURE_NO_TITLE);super.onCreate(savedInstanceState);getWindow().takeSurface(null);setTheme(android.R.style.Theme_NoTitleBar_Fullscreen);getWindow().setFormat(PixelFormat.RGB_565);mUnityPlayer = new UnityPlayer(this);if (mUnityPlayer.getSettings ().getBoolean ("hide_status_bar", true))getWindow ().setFlags (WindowManager.LayoutParams.FLAG_FULLSCREEN,                       WindowManager.LayoutParams.FLAG_FULLSCREEN);setContentView(mUnityPlayer);mUnityPlayer.requestFocus();AdManager.getInstance(this).init("da4217c86b4902f1", "1f1d3f0007343c71", false);// 載入插播資源SpotManager.getInstance(this).loadSpotAds();// 插屏出現動畫效果,0:ANIM_NONE為無動畫,1:ANIM_SIMPLE為簡單動畫效果,2:ANIM_ADVANCE為進階動畫效果SpotManager.getInstance(this).setAnimationType(SpotManager.ANIM_ADVANCE);// 設定插屏動畫的橫豎屏展示方式,如果設定了橫屏,則在有廣告資源的情況下會是優先使用橫屏圖。SpotManager.getInstance(this).setSpotOrientation(SpotManager.ORIENTATION_PORTRAIT);FrameLayout.LayoutParams layoutParams = new FrameLayout.LayoutParams(FrameLayout.LayoutParams.WRAP_CONTENT,FrameLayout.LayoutParams.WRAP_CONTENT);// 設定廣告條的懸浮位置layoutParams.gravity = Gravity.BOTTOM | Gravity.END; // 這裡樣本為右下角// 執行個體化廣告條AdView adView = new AdView(this, AdSize.FIT_SCREEN);// 調用Activity的addContentView函數this.addContentView(adView, layoutParams);}// Quit Unity@Override protected void onDestroy (){mUnityPlayer.quit();super.onDestroy();}// Pause Unity@Override protected void onPause(){super.onPause();mUnityPlayer.pause();}// Resume Unity@Override protected void onResume(){super.onResume();mUnityPlayer.resume();}// This ensures the layout will be correct.@Override public void onConfigurationChanged(Configuration newConfig){super.onConfigurationChanged(newConfig);mUnityPlayer.configurationChanged(newConfig);}// Notify Unity of the focus change.@Override public void onWindowFocusChanged(boolean hasFocus){super.onWindowFocusChanged(hasFocus);mUnityPlayer.windowFocusChanged(hasFocus);}// For some reason the multiple keyevent type is not supported by the ndk.// Force event injection by overriding dispatchKeyEvent().@Override public boolean dispatchKeyEvent(KeyEvent event){if (event.getAction() == KeyEvent.ACTION_MULTIPLE)return mUnityPlayer.injectEvent(event);return super.dispatchKeyEvent(event);}// Pass any events not handled by (unfocused) views straight to UnityPlayer@Override public boolean onKeyUp(int keyCode, KeyEvent event)     { return mUnityPlayer.injectEvent(event); }@Override public boolean onKeyDown(int keyCode, KeyEvent event)   { return mUnityPlayer.injectEvent(event); }@Override public boolean onTouchEvent(MotionEvent event)          { return mUnityPlayer.injectEvent(event); }/*API12*/ public boolean onGenericMotionEvent(MotionEvent event)  { return mUnityPlayer.injectEvent(event); }}
6、修改AndroidMainfest.xml檔案:記住

<application android:icon="@drawable/app_icon" android:label="@string/app_name" android:debuggable="false">

這句話不允許修改代碼,所以我們要刪掉android:debuggable="false",成為這樣:

<application android:icon="@drawable/app_icon" android:label="@string/app_name" >

加入代碼:

<!-- 配置許可權 -->    <uses-permission android:name="android.permission.INTERNET" />    <uses-permission android:name="android.permission.READ_PHONE_STATE" />    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />    <uses-permission android:name="android.permission.GET_TASKS" />    <uses-permission android:name="com.android.launcher.permission.INSTALL_SHORTCUT" />    <uses-permission android:name="android.permission.CHANGE_CONFIGURATION" />

再繼續加入代碼:

<!-- 添加必須的組件 -->        <service android:name="net.youmi.android.AdService" >        </service>        <activity            android:name="net.youmi.android.AdBrowser"            android:theme="@android:style/Theme.NoTitleBar" >        </activity>        <receiver android:name="net.youmi.android.AdReceiver" >            <intent-filter>                <action android:name="android.intent.action.PACKAGE_ADDED" />                <action android:name="android.intent.action.PACKAGE_INSTALL" />                <data android:scheme="package" />            </intent-filter>        </receiver>

最後AndroidMainfest.xml代碼如下

<?xml version="1.0" encoding="utf-8"?><manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.chuji.test" android:theme="@android:style/Theme.NoTitleBar" android:versionName="1.0" android:versionCode="1" android:installLocation="preferExternal">  <supports-screens android:smallScreens="true" android:normalScreens="true" android:largeScreens="true" android:xlargeScreens="true" android:anyDensity="true" />   <!-- 配置許可權 -->    <uses-permission android:name="android.permission.INTERNET" />    <uses-permission android:name="android.permission.READ_PHONE_STATE" />    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />    <uses-permission android:name="android.permission.GET_TASKS" />    <uses-permission android:name="com.android.launcher.permission.INSTALL_SHORTCUT" />    <uses-permission android:name="android.permission.CHANGE_CONFIGURATION" />    <application android:icon="@drawable/app_icon" android:label="@string/app_name" >    <activity android:label="@string/app_name" android:screenOrientation="fullSensor" android:launchMode="singleTask" android:configChanges="mcc|mnc|locale|touchscreen|keyboard|keyboardHidden|navigation|orientation|screenLayout|uiMode|screenSize|smallestScreenSize|fontScale" android:name="com.chuji.test.UnityPlayerNativeActivity">      <intent-filter>        <action android:name="android.intent.action.MAIN" />        <category android:name="android.intent.category.LAUNCHER" />      </intent-filter>      <meta-data android:name="unityplayer.UnityActivity" android:value="true" />      <meta-data android:name="unityplayer.ForwardNativeEventsToDalvik" android:value="false" />    </activity>        <!-- 添加必須的組件 -->        <service android:name="net.youmi.android.AdService" >        </service>        <activity            android:name="net.youmi.android.AdBrowser"            android:theme="@android:style/Theme.NoTitleBar" >        </activity>        <receiver android:name="net.youmi.android.AdReceiver" >            <intent-filter>                <action android:name="android.intent.action.PACKAGE_ADDED" />                <action android:name="android.intent.action.PACKAGE_INSTALL" />                <data android:scheme="package" />            </intent-filter>        </receiver>      </application>  <uses-sdk android:minSdkVersion="9" android:targetSdkVersion="20" />  <uses-feature android:glEsVersion="0x00020000" /></manifest>

7:、拿真機測試如下:


unity3d android工程加入最新的有米廣告

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.