帮助文档

1     Constructs2 android Java工程准备

1)      Constructs2工程导出Android工程。

2)      创建Crosswalk cordova工程。

3)      将第2步创建的Crosswalk cordova工程中的cordova.js文件(路径为assets/www)复制到第1步创建的工程的根目录下。

4)      Constructs2 导出的Android工程复制到前面创建的Crosswalk cordova工程的assets目录下,

5)      移除原来的www文件夹,并将Constructs2 导出的Android工程的目录名修改为www

经过以上步骤,则将成功创建一个Android Java app工程。

2        易接Java SDK使用准备

请参考Java SDK的使用前准备

3     游戏接口

以下接口可以参考yijieconstructs2demo

3.1 易接android Java部分初始化

找到由Crosswalk cordova自动创建的游戏工程的主Activity

Activity是继承自org.apache.cordova.CordovaActivityActivity

并在主ActivityonCreate()方法中增加如下代码来初始化易接SDK

比如,src/com/yijie/ghostshooter/GhotstShooterActivity.java文件:

@Override

public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

super.init();

SFCommonSDKInterface.onInit(this);

boolean b = SFCommonSDKInterface.isMusicEnabled(this);

appView.addJavascriptInterface(new SFJsInterface(this, appView), "SFJsInterface");

    // Set by <content src="/index.html" /> in config.xml

super.loadUrl(Config.getStartUrl());

    // super.loadUrl("file:///android_asset/www/index.html");

}

@Override

public void onResume() {

super.onResume();

}

@Override

public booleanonKeyDown(intkeyCode, KeyEvent event) {

    if (keyCode == KeyEvent.KEYCODE_BACK) {

SFCommonSDKInterface.onExit(this, new SFGameExitListener() {

        @Override

        public void onGameExit(boolean flag) {

            if (flag) {

System.exit(0);

            }

        }

    });

    // System.exit(0);

    return true;

}

return super.onKeyDown(keyCode, event);

}

3.2 易接Java SDK接口说明

请参易接Java SDK接口

3.3 添加JS接口

需要创建一个连通JSJava层的接口,以便于在Constructs2html代码中可以执行支付、退出等功能。

并需要在游戏工程主ActivityonCreate()方法中,super.loadUrl(Config.getStartUrl())执行之前,

通过调用appView.addJavascriptInterface(new SFJsInterface(this, appView), "SFJsInterface")注册该接口。

JS接口的一个示例实现如下:

public class SFJsInterface {

    private static final String TAG = "SFJsInterface";

    private Activity mActivity;

    private CordovaWebViewmAppView;

    public SFJsInterface(Activity activity, CordovaWebViewappView) {

mActivity = activity;

mAppView = appView;

    }

    @JavascriptInterface

    public void pay(String billingIndex) {

Log.i(TAG, "billingIndex = " + billingIndex);

SFCommonSDKInterface.pay(mActivity, billingIndex, new PayListener());

    }

    @JavascriptInterface

    public void exit() {

SFCommonSDKInterface.onExit(mActivity, new SFGameExitListener() {

            @Override

            public void onGameExit(boolean flag) {

                if (flag) {

System.exit(0);

                }

            }

        });

    }

    class PayListener extends SFIPayResultListener {

        @Override

        public void onCanceled(String remain) {

mAppView.evaluateJavascript(

            "(function() { return { var1: \"variable3\", var2: \"variable4\" }; })();",

            new ValueCallback<String>() {

                @Override

                public void onReceiveValue(String value) {

Log.i(TAG, "receive in failed, value = " + value);

                }

            });

        }

        @Override

        public void onFailed(String remain) {

mAppView.evaluateJavascript(

            "(function() { return { var1: \"variable3\", var2: \"variable4\" }; })();",

            new ValueCallback<String>() {

                @Override

                public void onReceiveValue(String value) {

Log.i(TAG, "receive in failed, value = " + value);

                }

            });

        }

        @Override

        public void onSuccess(String remain) {

mAppView.post(new Runnable() {

                @Override

                public void run() {

mAppView.evaluateJavascript(

                    "(function() { return { var1: \"variable1\", var2: \"variable2\" }; })();",

                    new ValueCallback<String>() {

                        @Override

                        public void onReceiveValue(String value) {

Log.i(TAG, "receive in success, value = " + value);

                        }

                    });

                }

            });

         }

    }

}

3.4 Cosntructs2 JS代码中执行支付、退出动作

JS层,可以通过前面注册的JS接口,来执行支付、退出等动作。如采用类似下面的方法:

<a href="#" onclick="pay0()">Pay billing index 0</a>

<a href="#" onclick="pay1()">Pay billing index 1</a>

<a href="#" onclick="pay2()">Pay billing index 2</a>

<a href="#" onclick="exit()">Exit</a>

<script>

function pay0() {

SFJsInterface.pay("0");

}

function pay1() {

SFJsInterface.pay("1");

}

function pay2() {

SFJsInterface.pay("2");

}

function exit() {

SFJsInterface.exit();

}

</script>