/****************************************************************************
Copyright (c) 2015-2016 Chukong Technologies Inc.
Copyright (c) 2017-2018 Xiamen Yaji Software Co., Ltd.
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.javascript;
import org.cocos2dx.lib.Cocos2dxActivity;
import org.cocos2dx.lib.Cocos2dxGLSurfaceView;
import org.cocos2dx.lib.Cocos2dxJavascriptJavaBridge;
import android.graphics.PixelFormat;
import android.os.Bundle;
import android.content.Intent;
import android.content.res.Configuration;
import android.support.annotation.MainThread;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.view.WindowManager;
import android.widget.FrameLayout;
import android.widget.RelativeLayout;
import com.bytedance.sdk.openadsdk.AdSlot;
import com.bytedance.sdk.openadsdk.TTAdConstant;
import com.bytedance.sdk.openadsdk.TTAdManager;
import com.bytedance.sdk.openadsdk.TTAdNative;
import com.bytedance.sdk.openadsdk.TTAdSdk;
import com.bytedance.sdk.openadsdk.TTAppDownloadListener;
import com.bytedance.sdk.openadsdk.TTFullScreenVideoAd;
import com.bytedance.sdk.openadsdk.TTInteractionAd;
import com.bytedance.sdk.openadsdk.TTNativeExpressAd;
import com.bytedance.sdk.openadsdk.TTRewardVideoAd;
import com.bytedance.sdk.openadsdk.TTSplashAd;
import java.util.List;
public class AppActivity extends Cocos2dxActivity {
private TTAdNative mTTAdNative;
static public AppActivity activity;
//inline
private static String inLine_id = "945273297";
private TTNativeExpressAd mTTAd;
private long startTime = 0;
private static String fullVideo_id = "945273298";
private TTFullScreenVideoAd mttFullVideoAd;
//rewardVideo
private static String rewardVideo_id = "945273299";
private TTRewardVideoAd mttRewardVideoAd;
private static String banner_id = "945273296";
private RelativeLayout mExpressContainer;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// Workaround in https://stackoverflow.com/questions/16283079/re-launch-of-activity-on-home-button-but-only-the-first-time/16447508
if (!isTaskRoot()) {
// Android launched another instance of the root activity into an existing task
// so just quietly finish and go away, dropping the user back into the activity
// at the top of the stack (ie: the last state of this task)
// Don't need to finish it again since it's finished in super.onCreate .
return;
}
// DO OTHER INITIALIZATION BELOW
SDKWrapper.getInstance().init(this);
mTTAdNative = TTAdManagerHolder.get().createAdNative(this);
activity = this;
//提前加载激励视频;
loadRewardVideo();
//banner
createBannerView();
}
static public void showSplash(){
}
public void createBannerView(){
Log.e("cocos","显示banner广告-createBannerView");
View layout = LayoutInflater.from(this).inflate(com.orgngt.cyboss.yyh.R.layout.activity_native_express, null);
mFrameLayout.addView(layout);
mExpressContainer = (RelativeLayout) findViewById(com.orgngt.cyboss.yyh.R.id.express_container);
getGLSurfaceView().getHolder().setFormat(PixelFormat.TRANSLUCENT);
getWindow().addFlags(WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED
| WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON);
TTAdManagerHolder.get().requestPermissionIfNecessary(this);
}
static public void showBanner(){
Log.e("cocos","显示banner广告-showBanner");
activity.runOnUiThread(new Runnable() {
@Override
public void run() {
//显示
activity.mExpressContainer.setVisibility(View.VISIBLE);
}
});
float expressViewWidth = 600;
float expressViewHeight = 90;
AdSlot adSlot = new AdSlot.Builder()
.setCodeId(banner_id)
.setSupportDeepLink(true)
.setAdCount(1) //请求广告数量为1到3条
.setExpressViewAcceptedSize(expressViewWidth,expressViewHeight) //期望模板广告view的size,单位dp
.setImageAcceptedSize(600,150 )//这个参数设置即可,不影响模板广告的size
.build();
activity.mTTAdNative.loadBannerExpressAd(adSlot, new TTAdNative.NativeExpressAdListener() {
@Override
public void onError(int i, String s) {
}
@Override
public void onNativeExpressAdLoad(List<TTNativeExpressAd> ads) {
Log.e("cocos","banner广告-onNativeExpressAdLoad");
if (ads == null || ads.size() == 0){
return;
}
activity.mTTAd = ads.get(0);
bindBannerListener(activity.mTTAd);
activity.mTTAd.render();
}
});
}
//关闭广告销毁banner 如果你不需要广告显示,可以在想关闭的地方调用,也就是隐藏掉
public static void closeBanner(){
activity.runOnUiThread(new Runnable() {
@Override
public void run() {
activity.mExpressContainer.setVisibility(View.GONE);
}
});
if (activity.mTTAd != null) {
activity.mTTAd.destroy();
}
}
private static void bindBannerListener(TTNativeExpressAd ad) {
ad.setExpressInteractionListener(new TTNativeExpressAd.ExpressAdInteractionListener() {
@Override
public void onAdClicked(View view, int i) {
}
@Override
public void onAdShow(View view, int i) {
}
@Override
public void onRenderFail(View view, String s, int i) {
}
@Override
public void onRenderSuccess(View view, float v, float v1) {
activity.mExpressContainer.addView(view);
}
});
}
static public void showFullScreenVideo_in(){
//结算页面弹出视频
Log.e("cocos","显示定时全屏视频广告");
AdSlot adSlot = new AdSlot.Builder()
.setCodeId(fullVideo_id)
//模板广告需要设置期望个性化模板广告的大小,单位dp,全屏视频场景,只要设置的值大于0即可
.setExpressViewAcceptedSize(500,500)
.setSupportDeepLink(true)
.setOrientation(TTAdConstant.VERTICAL)//必填参数,期望视频的播放方向:TTAdConstant.HORIZONTAL 或 TTAdConstant.VERTICAL
.build();
activity.mTTAdNative.loadFullScreenVideoAd(adSlot, new TTAdNative.FullScreenVideoAdListener() {
@Override
public void onError(int i, String s) {
}
@Override
public void onFullScreenVideoAdLoad(TTFullScreenVideoAd ad) {
activity.mttFullVideoAd = ad;
activity.runOnUiThread(new Runnable() {
@Override
public void run() {
activity.mttFullVideoAd.showFullScreenVideoAd(activity, TTAdConstant.RitScenes.GAME_GIFT_BONUS, null);
activity. mttFullVideoAd = null;
}
});
//activity.mttFullVideoAd.showFullScreenVideoAd(activity, TTAdConstant.RitScenes.GAME_GIFT_BONUS, null);
//activity. mttFullVideoAd = null;
activity.mttFullVideoAd.setFullScreenVideoAdInteractionListener(new TTFullScreenVideoAd.FullScreenVideoAdInteractionListener() {
@Override
public void onAdShow() {
}
@Override
public void onAdVideoBarClick() {
}
@Override
public void onAdClose() {
Log.e("cocos","显示视频广告-onAdClose");
}
@Override
public void onVideoComplete() {
}
@Override
public void onSkippedVideo() {
}
});
}
@Override
public void onFullScreenVideoCached() {
}
});
}
static public void showInline_in(){
//启动播放
Log.e("cocos","显示定时插屏广告");
AdSlot adSlot = new AdSlot.Builder()
.setCodeId(inLine_id) //广告位id
.setSupportDeepLink(true)
.setAdCount(1) //请求广告数量为1到3条
.setExpressViewAcceptedSize(300, 450) //期望模板广告view的size,单位dp
.build();
activity.mTTAdNative.loadInteractionExpressAd(adSlot, new TTAdNative.NativeExpressAdListener(){
@Override
public void onError(int i, String s) {
}
@Override
public void onNativeExpressAdLoad(List<TTNativeExpressAd> ads) {
if (ads == null || ads.size() == 0) {
return;
}
activity.mTTAd = ads.get(0);
activity.bindAdListener(activity.mTTAd);
activity.startTime = System.currentTimeMillis();
activity.mTTAd.render();
}
});
}
static public void showInline(){
//启动播放
Log.e("cocos","显示插屏广告");
AdSlot adSlot = new AdSlot.Builder()
.setCodeId(inLine_id) //广告位id
.setSupportDeepLink(true)
.setAdCount(1) //请求广告数量为1到3条
.setExpressViewAcceptedSize(300, 450) //期望模板广告view的size,单位dp
.build();
activity.mTTAdNative.loadInteractionExpressAd(adSlot, new TTAdNative.NativeExpressAdListener(){
@Override
public void onError(int i, String s) {
}
@Override
public void onNativeExpressAdLoad(List<TTNativeExpressAd> ads) {
if (ads == null || ads.size() == 0) {
return;
}
activity.mTTAd = ads.get(0);
activity.bindAdListener(activity.mTTAd);
activity.startTime = System.currentTimeMillis();
activity.mTTAd.render();
}
});
}
private void bindAdListener(TTNativeExpressAd ad) {
ad.setExpressInteractionListener(new TTNativeExpressAd.AdInteractionListener() {
@Override
public void onAdClicked(View view, int i) {
}
@Override
public void onAdShow(View view, int i) {
}
@Override
public void onRenderFail(View view, String s, int i) {
}
@Override
public void onRenderSuccess(View view, float v, float v1) {
mTTAd.showInteractionExpressAd(activity);
}
@Override
public void onAdDismiss() {
}
});
}
//激励视频先加载好
private void loadRewardVideo(){
//TTAdConstant.VERTICAL
AdSlot adSlot = new AdSlot.Builder()
.setCodeId(rewardVideo_id)
.setSupportDeepLink(true)
.setRewardName("双倍经验值") //奖励的名称
.setRewardAmount(1) //奖励的数量
//模板广告需要设置期望个性化模板广告的大小,单位dp,激励视频场景,只要设置的值大于0即可
.setExpressViewAcceptedSize(500,500)
.setUserID("user123")//用户id,必传参数
//.setMediaExtra("media_extra") //附加参数,可选
.setOrientation(TTAdConstant.VERTICAL) //必填参数,期望视频的播放方向:TTAdConstant.HORIZONTAL 或 TTAdConstant.VERTICAL
.build();
mTTAdNative.loadRewardVideoAd(adSlot, new TTAdNative.RewardVideoAdListener() {
@Override
public void onError(int i, String s) {
}
@Override
public void onRewardVideoAdLoad(TTRewardVideoAd ad) {
mttRewardVideoAd = ad;
mttRewardVideoAd.setRewardAdInteractionListener(new TTRewardVideoAd.RewardAdInteractionListener() {
@Override
public void onAdShow() {
}
@Override
public void onAdVideoBarClick() {
}
@Override
public void onAdClose() {
Log.e("cocos", "视频播放完成关闭");
sendMyReward();
}
//视频播放完成回调
@Override
public void onVideoComplete() {
Log.e("cocos", "视频播放完成回调");
}
@Override
public void onVideoError() {
}
@Override
public void onRewardVerify(boolean b, int i, String s) {
Log.e("cocos", "视频播放完成验证奖励");
}
@Override
public void onSkippedVideo() {
}
});
}
@Override
public void onRewardVideoCached() {
}
});
}
//调用js发放奖励方法
public void sendMyReward() {
activity.runOnGLThread(new Runnable() {
@Override
public void run() {
Log.e("cocos", "java调用视频发放奖励方法");
String js = "foo.sendRewardByJava()";
Cocos2dxJavascriptJavaBridge.evalString(js);
Log.e("视频","rewardVideoAd evalString");
}
});
}
static public void showRewardedVideo(){
Log.e("cocos","显示激励视频广告");
activity.runOnUiThread(new Runnable() {
@Override
public void run() {
if (activity.mttRewardVideoAd != null) {
//step6:在获取到广告后展示
//该方法直接展示广告
activity.mttRewardVideoAd.showRewardVideoAd(activity);
//展示广告,并传入广告展示的场景
activity.mttRewardVideoAd = null;
//加载下次
activity.loadRewardVideo();
} else {
Log.e("cocos", "请先加载广告");
}
}
});
}
public static void closeMyVideo() {
activity.runOnGLThread(new Runnable() {
@Override
public void run() {
Log.e("cocos", "java调用关闭视频方法");
String js = "foo2.closeVideoByJava()";
Cocos2dxJavascriptJavaBridge.evalString(js);
//Log.e("视频","rewardVideoAd evalString");
}
});
}
public static void closeMyVideo1() {
activity.runOnGLThread(new Runnable() {
@Override
public void run() {
Log.e("cocos", "java调用关闭视频方法");
String js = "foo3.closeVideoByJava2()";
Cocos2dxJavascriptJavaBridge.evalString(js);
//Log.e("视频","rewardVideoAd evalString");
}
});
}
public static void closeMyVideo2() {
activity.runOnGLThread(new Runnable() {
@Override
public void run() {
Log.e("cocos", "java调用结算页面关闭视频方法");
String js = "foo4.closeVideoByJava3()";
Cocos2dxJavascriptJavaBridge.evalString(js);
//Log.e("视频","rewardVideoAd evalString");
}
});
}
public static void closeMyVideo3() {
activity.runOnGLThread(new Runnable() {
@Override
public void run() {
Log.e("cocos", "java调用重玩页面关闭视频方法");
String js = "foo5.closeVideoByJava4()";
Cocos2dxJavascriptJavaBridge.evalString(js);
//Log.e("视频","rewardVideoAd evalString");
}
});
}
static public void showFullScreenVideo3(){
//结算页面弹出视频
Log.e("cocos","显示全屏视频广告");
AdSlot adSlot = new AdSlot.Builder()
.setCodeId(fullVideo_id)
//模板广告需要设置期望个性化模板广告的大小,单位dp,全屏视频场景,只要设置的值大于0即可
.setExpressViewAcceptedSize(500,500)
.setSupportDeepLink(true)
.setOrientation(TTAdConstant.VERTICAL)//必填参数,期望视频的播放方向:TTAdConstant.HORIZONTAL 或 TTAdConstant.VERTICAL
.build();
activity.mTTAdNative.loadFullScreenVideoAd(adSlot, new TTAdNative.FullScreenVideoAdListener() {
@Override
public void onError(int i, String s) {
}
@Override
public void onFullScreenVideoAdLoad(TTFullScreenVideoAd ad) {
activity.mttFullVideoAd = ad;
activity.runOnUiThread(new Runnable() {
@Override
public void run() {
activity.mttFullVideoAd.showFullScreenVideoAd(activity, TTAdConstant.RitScenes.GAME_GIFT_BONUS, null);
activity. mttFullVideoAd = null;
}
});
//activity.mttFullVideoAd.showFullScreenVideoAd(activity, TTAdConstant.RitScenes.GAME_GIFT_BONUS, null);
//activity. mttFullVideoAd = null;
activity.mttFullVideoAd.setFullScreenVideoAdInteractionListener(new TTFullScreenVideoAd.FullScreenVideoAdInteractionListener() {
@Override
public void onAdShow() {
}
@Override
public void onAdVideoBarClick() {
}
@Override
public void onAdClose() {
Log.e("cocos","显示视频广告-onAdClose");
closeMyVideo3();
}
@Override
public void onVideoComplete() {
}
@Override
public void onSkippedVideo() {
}
});
}
@Override
public void onFullScreenVideoCached() {
}
});
}
static public void showFullScreenVideo2(){
//结算页面弹出视频
Log.e("cocos","显示全屏视频广告");
AdSlot adSlot = new AdSlot.Builder()
.setCodeId(fullVideo_id)
//模板广告需要设置期望个性化模板广告的大小,单位dp,全屏视频场景,只要设置的值大于0即可
.setExpressViewAcceptedSize(500,500)
.setSupportDeepLink(true)
.setOrientation(TTAdConstant.VERTICAL)//必填参数,期望视频的播放方向:TTAdConstant.HORIZONTAL 或 TTAdConstant.VERTICAL
.build();
activity.mTTAdNative.loadFullScreenVideoAd(adSlot, new TTAdNative.FullScreenVideoAdListener() {
@Override
public void onError(int i, String s) {
}
@Override
public void onFullScreenVideoAdLoad(TTFullScreenVideoAd ad) {
activity.mttFullVideoAd = ad;
activity.runOnUiThread(new Runnable() {
@Override
public void run() {
activity.mttFullVideoAd.showFullScreenVideoAd(activity, TTAdConstant.RitScenes.GAME_GIFT_BONUS, null);
activity. mttFullVideoAd = null;
}
});
//activity.mttFullVideoAd.showFullScreenVideoAd(activity, TTAdConstant.RitScenes.GAME_GIFT_BONUS, null);
//activity. mttFullVideoAd = null;
activity.mttFullVideoAd.setFullScreenVideoAdInteractionListener(new TTFullScreenVideoAd.FullScreenVideoAdInteractionListener() {
@Override
public void onAdShow() {
}
@Override
public void onAdVideoBarClick() {
}
@Override
public void onAdClose() {
Log.e("cocos","显示视频广告-onAdClose");
closeMyVideo2();
}
@Override
public void onVideoComplete() {
}
@Override
public void onSkippedVideo() {
}
});
}
@Override
public void onFullScreenVideoCached() {
}
});
}
static public void showFullScreenVideo1(){
Log.e("cocos","显示全屏视频广告");
AdSlot adSlot = new AdSlot.Builder()
.setCodeId(fullVideo_id)
//模板广告需要设置期望个性化模板广告的大小,单位dp,全屏视频场景,只要设置的值大于0即可
.setExpressViewAcceptedSize(500,500)
.setSupportDeepLink(true)
.setOrientation(TTAdConstant.VERTICAL)//必填参数,期望视频的播放方向:TTAdConstant.HORIZONTAL 或 TTAdConstant.VERTICAL
.build();
activity.mTTAdNative.loadFullScreenVideoAd(adSlot, new TTAdNative.FullScreenVideoAdListener() {
@Override
public void onError(int i, String s) {
}
@Override
public void onFullScreenVideoAdLoad(TTFullScreenVideoAd ad) {
activity.mttFullVideoAd = ad;
activity.runOnUiThread(new Runnable() {
@Override
public void run() {
activity.mttFullVideoAd.showFullScreenVideoAd(activity, TTAdConstant.RitScenes.GAME_GIFT_BONUS, null);
activity. mttFullVideoAd = null;
}
});
//activity.mttFullVideoAd.showFullScreenVideoAd(activity, TTAdConstant.RitScenes.GAME_GIFT_BONUS, null);
//activity. mttFullVideoAd = null;
activity.mttFullVideoAd.setFullScreenVideoAdInteractionListener(new TTFullScreenVideoAd.FullScreenVideoAdInteractionListener() {
@Override
public void onAdShow() {
}
@Override
public void onAdVideoBarClick() {
}
@Override
public void onAdClose() {
closeMyVideo1();
}
@Override
public void onVideoComplete() {
}
@Override
public void onSkippedVideo() {
}
});
}
@Override
public void onFullScreenVideoCached() {
}
});
}
static public void showFullScreenVideo(){
Log.e("cocos","显示全屏视频广告");
AdSlot adSlot = new AdSlot.Builder()
.setCodeId(fullVideo_id)
//模板广告需要设置期望个性化模板广告的大小,单位dp,全屏视频场景,只要设置的值大于0即可
.setExpressViewAcceptedSize(500,500)
.setSupportDeepLink(true)
.setOrientation(TTAdConstant.VERTICAL)//必填参数,期望视频的播放方向:TTAdConstant.HORIZONTAL 或 TTAdConstant.VERTICAL
.build();
activity.mTTAdNative.loadFullScreenVideoAd(adSlot, new TTAdNative.FullScreenVideoAdListener() {
@Override
public void onError(int i, String s) {
}
@Override
public void onFullScreenVideoAdLoad(TTFullScreenVideoAd ad) {
activity.mttFullVideoAd = ad;
activity.runOnUiThread(new Runnable() {
@Override
public void run() {
activity.mttFullVideoAd.showFullScreenVideoAd(activity, TTAdConstant.RitScenes.GAME_GIFT_BONUS, null);
activity. mttFullVideoAd = null;
}
});
//activity.mttFullVideoAd.showFullScreenVideoAd(activity, TTAdConstant.RitScenes.GAME_GIFT_BONUS, null);
//activity. mttFullVideoAd = null;
activity.mttFullVideoAd.setFullScreenVideoAdInteractionListener(new TTFullScreenVideoAd.FullScreenVideoAdInteractionListener() {
@Override
public void onAdShow() {
}
@Override
public void onAdVideoBarClick() {
}
@Override
public void onAdClose() {
closeMyVideo();
}
@Override
public void onVideoComplete() {
}
@Override
public void onSkippedVideo() {
}
});
}
@Override
public void onFullScreenVideoCached() {
}
});
}
@Override
public Cocos2dxGLSurfaceView onCreateView() {
Cocos2dxGLSurfaceView glSurfaceView = new Cocos2dxGLSurfaceView(this);
// TestCpp should create stencil buffer
glSurfaceView.setEGLConfigChooser(5, 6, 5, 0, 16, 8);
SDKWrapper.getInstance().setGLSurfaceView(glSurfaceView, this);
return glSurfaceView;
}
@Override
protected void onResume() {
super.onResume();
SDKWrapper.getInstance().onResume();
}
@Override
protected void onPause() {
super.onPause();
SDKWrapper.getInstance().onPause();
}
@Override
protected void onDestroy() {
super.onDestroy();
SDKWrapper.getInstance().onDestroy();
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
SDKWrapper.getInstance().onActivityResult(requestCode, resultCode, data);
}
@Override
protected void onNewIntent(Intent intent) {
super.onNewIntent(intent);
SDKWrapper.getInstance().onNewIntent(intent);
}
@Override
protected void onRestart() {
super.onRestart();
SDKWrapper.getInstance().onRestart();
}
@Override
protected void onStop() {
super.onStop();
SDKWrapper.getInstance().onStop();
}
@Override
public void onBackPressed() {
SDKWrapper.getInstance().onBackPressed();
super.onBackPressed();
}
@Override
public void onConfigurationChanged(Configuration newConfig) {
SDKWrapper.getInstance().onConfigurationChanged(newConfig);
super.onConfigurationChanged(newConfig);
}
@Override
protected void onRestoreInstanceState(Bundle savedInstanceState) {
SDKWrapper.getInstance().onRestoreInstanceState(savedInstanceState);
super.onRestoreInstanceState(savedInstanceState);
}
@Override
protected void onSaveInstanceState(Bundle outState) {
SDKWrapper.getInstance().onSaveInstanceState(outState);
super.onSaveInstanceState(outState);
}
@Override
protected void onStart() {
SDKWrapper.getInstance().onStart();
super.onStart();
}
}
转载请注明原文地址:https://ipadbbs.8miu.com/read-63248.html