zoukankan      html  css  js  c++  java
  • cocos2d-x Android版游戏之中国移动SDK嵌入

    1. 拷贝API
    
    将SDK
    untimeCMBilling20007.jar拷贝至游戏工程的runtime目录下(或其他目录) ,但切记不能放在libs目录下编译,否则编译报错(如:bad range。)(完成)
    
    将SDKlibsarmeabilibmegjb.so拷贝至游戏相同的目录。 (完成,注:每次编译后应该重新拷贝)
    
    2.拷贝资源
    
    将SDKassets,SDK
    es中的所有资源拷贝到游戏相同目录下.(完成,注:assets每次编译后应该重新拷贝)
    
    3.替换游戏厂商logo或游戏logo
    
    将assets/OpeningAnimation 目录下的两个图片:
    
    g_logo_sp.png  g_logo_cp.png 换成自己的.  有格式要求见文档.
    
    SP与CP相同时将其中一个换成游戏logo,避免重复
    
    4.替换游戏名称图片
    
    SDKassetsOpeningAnimationg_game_title.png
    
    有格式要求见文档.
    
    5.添加SDK提供的Activity引用.
    
    A.将SDKAndroidManifest.xml.activity.txt中的文本copy到游戏的AndroidManifest.xml中.
    
    B.android:screenOrientation,设置横竖屏,最好设置成主界面的横竖屏.(完成)
    
    6.添加需要的权限use-permision
    
    将SDKAndroidManifest.xml.activity.txt中的文本copy到游戏的AndroidManifest.xml中(完成)
    
    不要重复添加权限
    
    7.为游戏主入口添加中国移动游戏基地标识(Intent-Filter)
    
    为游戏主入口Activity添加中国移动游戏基地标识
    
    8.游戏计费信息配置文件
    
    assets下面有Charge.xml,ConsumeCodeInfo.xml(必须存在,待游戏提交后会动态替换这两个文件)
    
    9.应用程序加载接口
    
    游戏开发者在集成SDK,务必先自定义全局Application。Application里面代码必须包含:
    
    System.loadLibrary("megjb");
    
    可以直接拷贝SDKDemo中的java.
    
     示例代码如下:
    
    public class CmgameApplication extends Application {
    
      public void onCreate() {
    
        System.loadLibrary("megjb");
    
      }
    
    }
    
    AndroidManifest.xml中配置:
    
     
    
    注意: 该Application类的package路径必须同AndroidManifest.xml中配置的packageName一致
    
    10.游戏初始化接口
    
    游戏的初始化是实现游戏计费的必须操作。(必须在UI线程中调用)
    
    在游戏启动之后先需要调用如下方法,否则无法使用计费功能
    
    1 GameInterface.initializeApp(Activity gmain);
    
     重载方法1,仅用于初始化SDK的基本信息,并不触发计费功能,游戏的计费行为可以通过2.6.2章节的doBilling接口完成,但是:如果游戏只有一个计费点,可以直接调用下面的简化接口,将初始化与试玩计费逻辑一并执行,请参考重载方法3。
    
     如果希望由合作伙伴自己指定计费界面的游戏名称,游戏提供商及客服电话信息(SDK默认采用平台上申报业务时填写的客服电话),可以调用重载接口2实现:
    
    2 GameInterface.initializeApp(Activity main, String gameName, String provider, String serviceTel);
    
    调用示例:
    
    GameInterface.initializeApp(this);
    
    11.游戏的启动画面
    
    方式一:调用SDK中的GameOpenActivity实现(推荐使用)
    
    在AndroidManifest.xml中的主入口Activity配置为GameOpenActivity(即SDK提供的游戏启动画面的Activity)。游戏原来的主入口Activity请添加到res/values/g_strings.xml中的g_class_name字符串中,使得启动画面完成后即启动游戏
    
    例如:
    
    "g_class_name">your.game.ui.Entry
    
    另外:该方式可以通过接口GameInterface.isMusicEnabled()来判断用户是否选择开启背景音效,接口详细定义见(2.9章节)
    
     如果游戏使用的API Level是小于等于3的情况,即:游戏是基于Android 1.5开发的,那么还需要设置一个低版本标识,(API 小于4的情况,Android本身不支持图片自适配,故可能导致SDK中的界面元素被放大,UI效果差)
    
    "gc_billing_islow_version">true,这样SDK会读取该标识,并完成开机界面的自适配。
    
    12.游戏的退出接口
    
    游戏退出时,需调用该接口完成退出逻辑,该接口是与2.2.2章节成对出现,前者用户初始化SDK实例,后者用于释放SDK占用的资源及内存,并实现退出确认界面。
    
    调用接口:
    
    GameInterface.exit(Contextcontex, GameExitCallback callback); 
    
    调用示例:(具体可以参考Demo示例的BillingDemo.java)
    
    GameInterface.exit(BillingDemo.this, new GameExitCallback() {
    
    @Override
    
         public void onConfirmExit() {
    
         // 游戏开发者需要实现该方法,该方法是在用户点击确认退出后的回调实现
    
    // 这里通常是释放游戏资源,关闭会话,finish界面等操作。
    
         }
    
         @Override
    
         public void onCancelExit() {
    
         // 采用第一种方案,该接口方法可以不用添加任何代码,SDK内部会把当前的退出
    
           // 界面finish掉,此处如果游戏开发者有特殊处理需要,可以另加实现代码。
    
         }
    
    });
    
    在这里确定退出中调用2dx中的ene(),时会出现bug:第一次进入正常,第二次闪退,第三次正常,第四次闪退...
    
    看logcat中会有如下错误:
    
    11-15 11:25:08.922: D/cocos2d-x debug info(9466): OpenGL error 0x0501 in /Users/zxtw/Documents/cocos2d-x/cocos2d-2.1rc0-x-2.1.2/cocos2dx/draw_nodes/CCDrawingPrimitives.cpp lazy_init 76
    
    注:结果办法是system.exit(0);
    
    13.更多游戏接口
    
    GameInterface.viewMoreGames(Context context);
    
    14.SDK计费点开发
    
    一.强制计费点时,调用这个计费点之前,必须调用获取付费标志接口,判断游戏是否已付费.
    
    15.计费
    
    通过GameInterface中的doBilling接口,可以直接启动计费Activity进行计费,计费Activity内部已经实现了默认的处理方法,合作伙伴只需要监听计费成功或失败的状态即可.
    
    合作伙伴调用如下接口,完成计费流程,通过不同的参数值完成各种计费要求。
    
    如果游戏希望在计费结束,比如计费成功、失败或用户取消计费后,处理自定义的逻辑,
    
    请实现IPayCallback回调,其他情况可直接传null值。
    
               如果游戏中某个计费点需要重复计费,请将isRepeated参数传true值。
    
    GameInterface.doBilling(Context context, Boolean useSms, Boolean isRepeated,string billingIndex,IPayCallback billingCallback);
    
    中国移动游戏基地游戏平台游戏内容下“激活点信息”中的“激活点计费代码”的后三位示例,计费点“激活游戏”的代码后三位为“001”,计费点“超级弹簧”的代码后三位为“004”。
    
    代码调用示例:
    
     1)采用短信计费模式,对计费代码后三位为”000”的计费点(非重复计费的计费点)进行付费
    
    BillingCallback billingCallback = new BillingCallback() { 
    
    @Override
    
    public void onBillingSuccess(String billingIndex) {
    
    System.out.println(“OK”);
    
    }
    
    @Override
    
    public void onBillingFail(String billingIndex) {
    
    System.out.println(“fail”);
    
    }
    
    @Override
    
    public void onUserOperCancel(String billingIndex) {
    
    System.out.println(“cancel”);
    
    }
    
    };
    
    GameInterface.doBilling(this, true, false, “000”, billingCallback);
    
    或GameInterface.doBilling(this,true, false, “000”, null);
    
    2)采用联网计费,对计费代码后三位为”001”的计费点(可重复计费的计费点)进行付费
    
    GameInterface.doBilling(this,false, true, “001”, billingCallback); 
    
    特别说明:计费接口要在游戏的主线程里调用
    
    16.设置付费标志接口(不会用到)
    
    17.获取付费标志接口(硬计费点时用到,但一般激活会在2dx中控制,不重要,但写上好一点吧)
    
    18.获取游戏背景音乐开关(在sdk之后游戏初始化时调用,来设置游戏初始声音)
    
    19.获取游戏玩家身份标识(不会用到)

     出处:http://blog.sina.com.cn/s/blog_6324d6990101lgjl.html

  • 相关阅读:
    Building Forest CodeForces
    欢迎使用CSDN-markdown编辑器
    Travelling HDU
    Card Collector HDU
    Doing Homework HDU
    Mirror Number SPOJ
    Palindromic Numbers LightOJ
    Magic Numbers CodeForces
    Xor-sequences CodeForces
    Little Elephant and Elections CodeForces
  • 原文地址:https://www.cnblogs.com/vinsonLu/p/4595484.html
Copyright © 2011-2022 走看看