diff --git a/app/build.gradle b/app/build.gradle
index 7698449..d5d7b0e 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -37,6 +37,6 @@ android {
dependencies {
implementation fileTree(include: ['*.jar','*.aar'], dir: 'libs')
implementation 'androidx.legacy:legacy-support-v4:1.0.0'
- implementation 'com.android.volley:volley:1.1.1'
implementation 'org.greenrobot:eventbus:3.2.0'
+ implementation 'com.android.volley:volley:1.1.1'
}
diff --git a/app/libs/gamesdk-20190910.aar b/app/libs/gamesdk-20190910.aar
new file mode 100644
index 0000000..a4243de
Binary files /dev/null and b/app/libs/gamesdk-20190910.aar differ
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index d5882f7..1ff9e8f 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -38,19 +38,12 @@
android:theme="@android:style/Theme.NoTitleBar.Fullscreen">
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
diff --git a/app/src/main/java/com/hnjc/wjtx/JCApplication.java b/app/src/main/java/com/hnjc/wjtx/JCApplication.java
index e040a76..1ba9280 100644
--- a/app/src/main/java/com/hnjc/wjtx/JCApplication.java
+++ b/app/src/main/java/com/hnjc/wjtx/JCApplication.java
@@ -3,10 +3,14 @@ package com.hnjc.wjtx;
import android.app.Application;
import android.util.Log;
+import com.nearme.game.sdk.GameCenterSDK;
+
public class JCApplication extends Application {
@Override
public void onCreate() {
super.onCreate();
Log.i("JCApplication", "JCApplication onCreate");
+ String appSecret = "4225d8b8b9fa49ed8686c9e325a05d7b";
+ GameCenterSDK.init(appSecret, this);
}
}
diff --git a/app/src/main/java/com/hnjc/wjtx/MainActivity.java b/app/src/main/java/com/hnjc/wjtx/MainActivity.java
index 64eadec..f5260d5 100755
--- a/app/src/main/java/com/hnjc/wjtx/MainActivity.java
+++ b/app/src/main/java/com/hnjc/wjtx/MainActivity.java
@@ -1,7 +1,6 @@
package com.hnjc.wjtx;
import android.app.Activity;
-import android.app.AlertDialog;
import android.content.Context;
import android.content.SharedPreferences;
import android.content.res.Resources;
@@ -19,6 +18,13 @@ import android.widget.Toast;
import com.hnjc.wjtx.util.AssetsUtil;
import com.hnjc.wjtx.util.StorageUtil;
import com.hnjc.wjtx.util.StringUtil;
+import com.nearme.game.sdk.GameCenterSDK;
+import com.nearme.game.sdk.callback.ApiCallback;
+import com.nearme.game.sdk.callback.GameExitCallback;
+import com.nearme.game.sdk.callback.SinglePayCallback;
+import com.nearme.game.sdk.common.model.biz.PayInfo;
+import com.nearme.game.sdk.common.util.AppUtil;
+import com.nearme.platform.opensdk.pay.PayResponse;
import org.egret.egretnativeandroid.EgretNativeAndroid;
import org.json.JSONException;
@@ -58,7 +64,7 @@ public class MainActivity extends Activity {
nativeAndroid.config.preloadPath = preloadPath;
setExternalInterfaces();
-
+
if (!nativeAndroid.initialize(gameUrl)) {
Toast.makeText(this, "Initialize native failed.",
Toast.LENGTH_LONG).show();
@@ -86,18 +92,25 @@ public class MainActivity extends Activity {
public boolean onKeyDown(final int keyCode, final KeyEvent keyEvent) {
if (keyCode == KeyEvent.KEYCODE_BACK) {
//声明并初始化弹出对象
- AlertDialog.Builder builder=new AlertDialog.Builder(this);
- builder.setTitle("提示:");
- builder.setMessage("是否退出");
- //设置确认按钮
- builder.setNegativeButton("确定", (dialog, which) -> {
- nativeAndroid.exitGame();
- finish();//退出程序
+// AlertDialog.Builder builder = new AlertDialog.Builder(this);
+// builder.setTitle("提示:");
+// builder.setMessage("是否退出");
+// //设置确认按钮
+// builder.setNegativeButton("确定", (dialog, which) -> {
+// nativeAndroid.exitGame();
+// finish();//退出程序
+// });
+// //设置取消按钮
+// builder.setPositiveButton("取消", null);
+// //显示弹框
+// builder.show();
+ GameCenterSDK.getInstance().onExit(this, new GameExitCallback() {
+ public void exitGame() {
+ AppUtil.exitGameProcess(MainActivity.this);
+ nativeAndroid.exitGame();
+ finish();
+ }
});
- //设置取消按钮
- builder.setPositiveButton("取消",null);
- //显示弹框
- builder.show();
}
return super.onKeyDown(keyCode, keyEvent);
@@ -114,14 +127,13 @@ public class MainActivity extends Activity {
});
nativeAndroid.setExternalInterface("setLocalStorage", message -> {
Log.d(TAG, "setLocalStorage: " + message);
- try{
+ try {
JSONObject jsonObject = new JSONObject(message);
String key = jsonObject.getString("key");
String val = jsonObject.getString("val");
SharedPreferences sharedPref = getPreferences(Context.MODE_PRIVATE);
StorageUtil.writeString(sharedPref, key, val);
- }
- catch (JSONException e) {
+ } catch (JSONException e) {
Log.e(TAG, " onState message failed to analyze");
}
@@ -160,16 +172,25 @@ public class MainActivity extends Activity {
Toast.makeText(MainActivity.this, message, Toast.LENGTH_LONG).show();
});
nativeAndroid.setExternalInterface("getUid", message -> {
- //TODO: 平台的登陆
+ GameCenterSDK.getInstance().doLogin(this, new ApiCallback() {
+ @Override
+ public void onSuccess(String arg0) {
+ doGetTokenAndSsoid();
+ }
+
+ @Override
+ public void onFailure(String arg0, int arg1) {
+ nativeAndroid.callExternalInterface("loginCancel", "");
+ }
+ });
});
nativeAndroid.setExternalInterface("@onState", message -> {
Log.e(TAG, "Get @onState: " + message);
- try{
+ try {
JSONObject jsonObject = new JSONObject(message);
String state = jsonObject.getString("state");
handleStateEvent(state);
- }
- catch (JSONException e) {
+ } catch (JSONException e) {
Log.e(TAG, " onState message failed to analyze");
}
@@ -183,10 +204,62 @@ public class MainActivity extends Activity {
String cpOrderId = jsonObject.getString("orderId");
String productCode = jsonObject.getString("productCode");
int count = jsonObject.getInt("count");
+ int money = jsonObject.getInt("money"); // 未传
+ String notifyUrl = jsonObject.getString("notifyUrl"); // 未传
+ String productName = jsonObject.getString("productName"); // 未传
+ String productDesc = jsonObject.getString("productDesc"); //未传
+ String sign = jsonObject.getString("sign"); // 未传
//TODO: 平台的支付
+ PayInfo payInfo = new PayInfo(cpOrderId, productCode, money );
+ payInfo.setProductDesc(productDesc);
+ payInfo.setProductName(productName);
+ // payInfo.setType(PayInfo.TYPE_AUTO_ORDER_WXPAY);
+ payInfo.setUseCachedChannel(false);
+ // 支付结果服务器回调地址,不通过服务端回调发货的应用可以不用填写~
+ payInfo.setCallbackUrl(notifyUrl);
+ JSONObject obj = new JSONObject();
+
+ GameCenterSDK.getInstance().doSinglePay(this, payInfo,
+ new SinglePayCallback() {
+
+ @Override
+ public void onSuccess(String resultMsg) {
+ // add OPPO 支付成功处理逻辑~
+ try {
+ obj.put("errcode", 0);
+ obj.put("errmsg", "");
+ nativeAndroid.callExternalInterface("payResult", obj.toString());
+ } catch (JSONException e) {
+ e.printStackTrace();
+ }
+ }
+
+ @Override
+ public void onFailure(String resultMsg, int resultCode) {
+ // add OPPO 支付失败处理逻辑~
+ try {
+ if (PayResponse.CODE_CANCEL != resultCode) {
+ obj.put("errmsg", "支付失败");
+ } else {
+ // 取消支付处理
+ obj.put("errmsg", "支付取消");
+ }
+ obj.put("errcode", resultCode);
+ nativeAndroid.callExternalInterface("payResult", obj.toString());
+ } catch (JSONException e) {
+ e.printStackTrace();
+ }
+ }
+
+ @Override
+ public void onCallCarrierPay(PayInfo payInfo, boolean bySelectSMSPay) {
+ // TODO Auto-generated method stub
+// Toast.makeText(this, "运营商支付", Toast.LENGTH_SHORT).show();
+ }
+ });
} catch (JSONException e) {
e.printStackTrace();
- } catch ( Exception e ) {
+ } catch (Exception e) {
e.printStackTrace();
}
});
@@ -210,6 +283,31 @@ public class MainActivity extends Activity {
});
}
+ public void doGetTokenAndSsoid() {
+ GameCenterSDK.getInstance().doGetTokenAndSsoid(new ApiCallback() {
+
+ @Override
+ public void onSuccess(String resultMsg) {
+ try {
+ JSONObject json = new JSONObject(resultMsg);
+ String token = json.getString("token");
+ String ssoid = json.getString("ssoid");
+ JSONObject obj = new JSONObject();
+ obj.put("openid", ssoid);
+ obj.put("token", token);
+ nativeAndroid.callExternalInterface("sendUidToJS", obj.toString());
+ } catch (JSONException e) {
+ e.printStackTrace();
+ }
+ }
+
+ @Override
+ public void onFailure(String content, int resultCode) {
+ nativeAndroid.callExternalInterface("loginCancel", "");
+ }
+ });
+ }
+
@Override
protected void onDestroy() {
super.onDestroy();
@@ -226,6 +324,7 @@ public class MainActivity extends Activity {
FrameLayout.LayoutParams.MATCH_PARENT);
rootLayout.addView(launchScreenImageView, params);
}
+
private void handleStateEvent(String state) {
switch (state) {
case "running":
@@ -235,6 +334,7 @@ public class MainActivity extends Activity {
Log.i(TAG, state);
}
}
+
private void hideLoadingView() {
rootLayout.removeView(launchScreenImageView);
Drawable drawable = launchScreenImageView.getDrawable();
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index a7cdc02..10528f8 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -9,4 +9,5 @@
获取游戏版本
正在更新游戏资源
正在解压游戏资源
+ 30414659
diff --git a/assets/nearme/oppo_game_service_202306.so b/assets/nearme/oppo_game_service_202306.so
new file mode 100644
index 0000000..9860f69
Binary files /dev/null and b/assets/nearme/oppo_game_service_202306.so differ