admin 管理员组文章数量: 887021
多盟 sdk android,cocos2dx
接着上篇继续:
1、在jni下的android.mk里面添加
LOCAL_SRC_FILES := hellocpp/main.cpp \
../../Classes/AppDelegate.cpp \
../../Classes/DomobAd.cpp \
../../Classes/HelloWorldScene.cpp2、在AppActivity下添加如下代码:
/****************************************************************************
Copyright (c) 2008-2010 Ricardo Quesada
Copyright (c) 2010-2012 cocos2d-x
Copyright (c) 2011 Zynga Inc.
Copyright (c) 2013-2014 Chukong Technologies Inc.
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 org.cocos2dx.lib.Cocos2dxActivity;
import org.cocos2dx.lib.Cocos2dxGLSurfaceView;
import cn.domob.android.ads.AdEventListener;
import cn.domob.android.ads.AdView;
import cn.domob.android.ads.InterstitialAd;
import cn.domob.android.ads.InterstitialAdListener;
import cn.domob.android.ads.AdManager.ErrorCode;
import android.annotation.SuppressLint;
import android.content.Context;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.util.Log;
import android.view.View;
import android.widget.RelativeLayout;
import android.widget.Toast;
@SuppressLint("HandlerLeak")
public class AppActivity extends Cocos2dxActivity {
public static final String PUBLISHER_ID = "xxxxxxx";//你自己应用的ID,之前说过
public static final String InlinePPID = "xxxxxxxx";
public static final String InterstitialPPID = "16xxxxxxxx";
private static Handler handler;
private static RelativeLayout bannerLayout;
private AdView adView;
private InterstitialAd mInterstitialAd;
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
bannerLayout = new RelativeLayout(this);
RelativeLayout.LayoutParams parentLayputParams = new RelativeLayout.LayoutParams(
RelativeLayout.LayoutParams.MATCH_PARENT,RelativeLayout.LayoutParams.MATCH_PARENT);
this.addContentView(bannerLayout,parentLayputParams);
if (mInterstitialAd != null) {
return;
}
mInterstitialAd = new InterstitialAd(AppActivity.this,PUBLISHER_ID,InterstitialPPID);
mInterstitialAd.setInterstitialAdListener(new InterstitialAdListener() {
@Override
public void onInterstitialAdReady() {
Log.i("DomobSDKCocos2d-xDemo","onAdReady");
//Toast.makeText(getApplicationContext(),"",Toast.LENGTH_SHORT).show();
}
@Override
public void onLandingPageOpen() {
Log.i("DomobSDKCocos2d-xDemo","onLandingPageOpen");
}
@Override
public void onLandingPageClose() {
Log.i("DomobSDKCocos2d-xDemo","onLandingPageClose");
}
@Override
public void onInterstitialAdPresent() {
Log.i("DomobSDKCocos2d-xDemo","onInterstitialAdPresent");
}
@Override
public void onInterstitialAdDismiss() {
// Request new ad when the prevIoUs interstitial ad
// was closed.
mInterstitialAd.loadInterstitialAd();
Log.i("DomobSDKCocos2d-xDemo","onInterstitialAdDismiss");
}
@Override
public void onInterstitialAdFailed(ErrorCode errorCode) {
Log.i("DomobSDKCocos2d-xDemo","onInterstitialAdFailed");
}
@Override
public void onInterstitialAdLeaveApplication() {
Log.i("DomobSDKCocos2d-xDemo","onInterstitialAdLeaveApplication");
}
@Override
public void onInterstitialAdClicked(InterstitialAd interstitialAd) {
Log.i("DomobSDKCocos2d-xDemo","onInterstitialAdClicked");
}
});
mInterstitialAd.loadInterstitialAd();
handler = new Handler() {
@Override
public void handleMessage(Message msg) {
switch (msg.what) {
/*case 0:// showBanner
if (bannerLayout.getChildCount() == 0) {
adView = new AdView(AppActivity.this,InlinePPID);
// set banner size
adView.setAdSize(AdView.INLINE_SIZE_320X50);
adView.setKeyword("game");
adView.setUserGender("male");
adView.setUserBirthdayStr("2000-08-08");
adView.setUserPostcode("123456");
adView.setAdEventListener(new AdEventListener() {
@Override
public void onAdOverlayPresented(AdView adView) {
Log.i("DomobSDKCocos2d-xDemo","overlayPresented");
}
@Override
public void onAdOverlayDismissed(AdView adView) {
Log.i("DomobSDKCocos2d-xDemo","Overrided be dismissed");
}
@Override
public void onAdClicked(AdView adView) {
Log.i("DomobSDKCocos2d-xDemo","onDomobAdClicked");
}
@Override
public void onLeaveApplication(AdView adView) {
Log.i("DomobSDKCocos2d-xDemo","onDomobLeaveApplication");
}
@Override
public Context onAdRequiresCurrentContext() {
return null;
}
@Override
public void onAdFailed(AdView adView,ErrorCode errorCode) {
Log.i("DomobSDKCocos2d-xDemo","onDomobAdFailed");
}
@Override
public void onEventAdReturned(AdView adView) {
Log.i("DomobSDKCocos2d-xDemo","onDomobAdReturned");
}
});
RelativeLayout.LayoutParams layoutParams = new RelativeLayout.LayoutParams(
RelativeLayout.LayoutParams.WRAP_CONTENT,RelativeLayout.LayoutParams.WRAP_CONTENT);
layoutParams.addRule(RelativeLayout.ALIGN_PARENT_BOTTOM,RelativeLayout.TRUE);
layoutParams.addRule(RelativeLayout.CENTER_HORIZONTAL,RelativeLayout.TRUE);
bannerLayout.addView(adView,layoutParams);
} else {
if (adView != null) {
adView.setVisibility(View.VISIBLE);
adView.requestRefreshAd();
}
}
break;
case 1:
if (adView != null) {
adView.setVisibility(View.GONE);
}
break;*/
//case 2:
//break;
case 3:
if (mInterstitialAd != null) {
if (mInterstitialAd.isInterstitialAdReady()) {
mInterstitialAd.showInterstitialAd(AppActivity.this);
} else {
Log.i("DomobSDKCocos2d-xDemo","Interstitial Ad is not ready");
mInterstitialAd.loadInterstitialAd();
}
} else {
Log.i("DomobSDKCocos2d-xDemo","Interstitial Ad is not init");
}
break;
default:
break;
}
}
};
}
public Cocos2dxGLSurfaceView onCreateView() {
Cocos2dxGLSurfaceView glSurfaceView = new Cocos2dxGLSurfaceView(this);
glSurfaceView.setEGLConfigChooser(5,6,5,16,8);
return glSurfaceView;
}
//public static void showBannerStatic() {
//handler.sendEmptyMessage(0);
//}
//public static void hideBannerStatic() {
//handler.sendEmptyMessage(1);
//}
//public static void initInterstitialStatic() {
//handler.sendEmptyMessage(2);
//}
public static void showInterstitialStatic() {
handler.sendEmptyMessage(3);
}
static {
System.loadLibrary("cocos2dcpp");
}
}到现在,代码添加完毕,也可以运行代码了,。。。也许途中你会遇见各种问题,比如,程序异常退出,比如调试不进,都要靠自己耐心的去解决。
下面简单介绍一些代码:
在java代码中,你会看见private static Handler handler;代码。handler是java中处理异步消息的机制,之所以接入广告平台会用到handler,是因为,接入广告后,会联网,如果这个操作放入主线程中,界面就会出现假死现象,最后导致android系统“强制关闭”,所以对于这样一个耗时操作,我们把他放在子线程中,但是子线程又设计到UI更新,而对于Android而言,主线程是不安全的,所以handler就是解决这个问题的利器。handler运行在主线程中,它与子线程可以通过消息对象来传递数据。
至于jni,主要调用代码在这:boolret = JniHelper::getStaticMethodInfo(info,"org/cocos2dx/cpp/TestJni",248)">"func1""()V");其中要注意你的路径,函数类型,传递参数类型。其他没什么了。我要继续加油,吃午饭了。
总结
如果觉得编程之家网站内容还不错,欢迎将编程之家网站推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
小编个人微信号 jb51ccc
喜欢与人分享编程技术与工作经验,欢迎加入编程之家官方交流群!
本文标签: 多盟 sdk android cocos2dx
版权声明:本文标题:多盟 sdk android,cocos2dx 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.freenas.com.cn/jishu/1715237542h639924.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论