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

  • 相关阅读:
    HDU 1058 Humble Numbers
    HDU 1160 FatMouse's Speed
    HDU 1087 Super Jumping! Jumping! Jumping!
    HDU 1003 Max Sum
    HDU 1297 Children’s Queue
    UVA1584环状序列 Circular Sequence
    UVA442 矩阵链乘 Matrix Chain Multiplication
    DjangoModels修改后出现You are trying to add a non-nullable field 'download' to book without a default; we can't do that (the database needs something to populate existing rows). Please select a fix:
    opencv做的简单播放器
    c++文件流输入输出
  • 原文地址:https://www.cnblogs.com/vinsonLu/p/4595484.html
Copyright © 2011-2022 走看看