From 64ecbe17f4cb264cfdd5f1e64c69c6ecb9bdc058 Mon Sep 17 00:00:00 2001
From: cebgcontract <99630598+cebgcontract@users.noreply.github.com>
Date: Wed, 31 Aug 2022 16:48:35 +0800
Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E4=BA=8C=E7=BB=B4=E7=A0=81?=
=?UTF-8?q?=E6=89=AB=E7=A0=81?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
app/AndroidManifest.xml | 4 +
app/build.gradle | 4 +
.../fitchgc/headlesscocos/MainActivity.java | 293 +++++++++++++-----
app/src/com/jc/jcfw/JcSDK.java | 10 +-
js/main.js | 18 +-
js/platform.js | 16 +-
res/anim/in.xml | 5 +
res/anim/out.xml | 5 +
res/values/strings.xml | 1 +
9 files changed, 270 insertions(+), 86 deletions(-)
create mode 100644 res/anim/in.xml
create mode 100644 res/anim/out.xml
diff --git a/app/AndroidManifest.xml b/app/AndroidManifest.xml
index cd3ba49..4693a06 100644
--- a/app/AndroidManifest.xml
+++ b/app/AndroidManifest.xml
@@ -22,6 +22,10 @@
+
+
list) {
+ // Some permissions have been granted
+
}
- // Pause Unity
- @Override protected void onPause()
- {
- super.onPause();
- mUnityPlayer.pause();
+ @Override
+ public void onPermissionsDenied(int requestCode, List list) {
+ // Some permissions have been denied
+ // ...
}
- // Resume Unity
- @Override protected void onResume()
- {
- super.onResume();
- mUnityPlayer.resume();
- }
+ // end of easypermissions
- @Override protected void onStart()
- {
- super.onStart();
- mUnityPlayer.start();
- }
-
- @Override protected void onStop()
- {
- super.onStop();
- mUnityPlayer.stop();
- }
-
- // Low Memory Unity
- @Override public void onLowMemory()
- {
- super.onLowMemory();
- mUnityPlayer.lowMemory();
- }
-
- // Trim Memory Unity
- @Override public void onTrimMemory(int level)
- {
- super.onTrimMemory(level);
- if (level == TRIM_MEMORY_RUNNING_CRITICAL)
- {
- mUnityPlayer.lowMemory();
+ // begin of qrcode
+ /**
+ * 检测拍摄权限
+ */
+ @AfterPermissionGranted(RC_CAMERA)
+ private void checkCameraPermissions(){
+ String[] perms = {Manifest.permission.CAMERA};
+ if (EasyPermissions.hasPermissions(this, perms)) {
+ startScan(title);
+ } else {
+ // Do not have permissions, request them now
+ EasyPermissions.requestPermissions(this, getString(R.string.permission_camera),
+ RC_CAMERA, perms);
}
}
- // This ensures the layout will be correct.
- @Override public void onConfigurationChanged(Configuration newConfig)
- {
- super.onConfigurationChanged(newConfig);
- mUnityPlayer.configurationChanged(newConfig);
+ /**
+ * scan qrcode
+ */
+ private void startScan(String title){
+ ActivityOptionsCompat optionsCompat = ActivityOptionsCompat.makeCustomAnimation(this,R.anim.in,R.anim.out);
+ Intent intent = new Intent(this, CaptureActivity.class);
+ intent.putExtra(KEY_TITLE, title);
+ intent.putExtra(KEY_IS_CONTINUOUS, false);
+ this.startActivityForResult(intent, REQUEST_CODE_SCAN, optionsCompat.toBundle());
+// ActivityCompat.startActivityForResult(this, intent, REQUEST_CODE_SCAN, optionsCompat.toBundle());
}
- // Notify Unity of the focus change.
- @Override public void onWindowFocusChanged(boolean hasFocus)
- {
- super.onWindowFocusChanged(hasFocus);
- mUnityPlayer.windowFocusChanged(hasFocus);
+ private void asyncThread(Runnable runnable){
+ new Thread(runnable).start();
}
- // For some reason the multiple keyevent type is not supported by the ndk.
- // Force event injection by overriding dispatchKeyEvent().
- @Override public boolean dispatchKeyEvent(KeyEvent event)
- {
- if (event.getAction() == KeyEvent.ACTION_MULTIPLE)
- return mUnityPlayer.injectEvent(event);
- return super.dispatchKeyEvent(event);
+ private void parsePhoto(Intent data){
+ try {
+ Bitmap bitmap = MediaStore.Images.Media.getBitmap(getContentResolver(),data.getData());
+ asyncThread(() -> {
+ final String result = CodeUtils.parseCode(bitmap);
+ runOnUiThread(() -> {
+ LogUtils.d("result:" + result);
+ Toast.makeText(getContext(),result,Toast.LENGTH_SHORT).show();
+ });
+ });
+
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+
+ }
+
+ public void showQRScan(String title) {
+ this.title = title;
+ checkCameraPermissions();
}
- // Pass any events not handled by (unfocused) views straight to UnityPlayer
- @Override public boolean onKeyUp(int keyCode, KeyEvent event) { return mUnityPlayer.injectEvent(event); }
- @Override public boolean onKeyDown(int keyCode, KeyEvent event) { return mUnityPlayer.injectEvent(event); }
- @Override public boolean onTouchEvent(MotionEvent event) { return mUnityPlayer.injectEvent(event); }
- /*API12*/ public boolean onGenericMotionEvent(MotionEvent event) { return mUnityPlayer.injectEvent(event); }
}
\ No newline at end of file
diff --git a/app/src/com/jc/jcfw/JcSDK.java b/app/src/com/jc/jcfw/JcSDK.java
index 132bcac..c47f91f 100644
--- a/app/src/com/jc/jcfw/JcSDK.java
+++ b/app/src/com/jc/jcfw/JcSDK.java
@@ -27,7 +27,7 @@ public class JcSDK {
commonCB.stringCallback("wallet init success");
}
-// public static void connectwallet(String url){
+// public static void connectWallet(String url){
// Uri uri = Uri.parse(url);
// Log.i(TAG, url);
// Intent intent = new Intent(Intent.ACTION_VIEW, uri);
@@ -46,10 +46,10 @@ public class JcSDK {
*/
public static void toWallet(String url) {
- Uri uri = Uri.parse(url);
+ Intent intent = new Intent(Intent.ACTION_VIEW);
Log.i(TAG, url);
- Intent intent = new Intent(Intent.ACTION_VIEW, uri);
try {
+ intent.setData(Uri.parse(url));
MainActivity.app.startActivity(intent);
} catch (ActivityNotFoundException e) {
Intent i = new Intent(Intent.ACTION_VIEW);
@@ -57,4 +57,8 @@ public class JcSDK {
MainActivity.app.startActivity(i);
}
}
+
+ public static void scanQRCode(String title) {
+ MainActivity.app.showQRScan(title);
+ }
}
diff --git a/js/main.js b/js/main.js
index d3d5085..f50579f 100644
--- a/js/main.js
+++ b/js/main.js
@@ -224,7 +224,6 @@ function sendErc20(funId, address, to, amount) {
function restoreFromMnemonic(funId, mnemonic, password) {
try {
- diameter = parseFloat(diameter);
let result = jc.wallet.restoreFromMnemonic(mnemonic, password);
return JSON.stringify({errcode: 0, data: result});
} catch(err) {
@@ -232,3 +231,20 @@ function restoreFromMnemonic(funId, mnemonic, password) {
}
}
+function scanQRCode(funId, title) {
+ try {
+ jsb.scanQRCode(title);
+ return JSON.stringify({errcode: 0});
+ } catch(err) {
+ return JSON.stringify({errcode: 1, errmsg: err});
+ }
+}
+//function toWalletJNI(funId, url) {
+// try {
+// jsb.toWallet(url);
+// return JSON.stringify({errcode: 0});
+// } catch(err) {
+// return JSON.stringify({errcode: 1, errmsg: err});
+// }
+//}
+
diff --git a/js/platform.js b/js/platform.js
index ae84c3e..43809e0 100644
--- a/js/platform.js
+++ b/js/platform.js
@@ -6,11 +6,13 @@ if (window.JavascriptJavaBridge) {
}
window.jumpToWallet = function(url) {
- console.log(url);
- jsb.reflection.callStaticMethod(
- 'com/jc/jcfw/JcSDK',
- 'toWallet',
- '(Ljava/lang/String;)V',
- url || 'wc://'
- )
+ url = url || 'wc://';
+ console.log('jumpToWallet: ' + url);
+ jsb.toWallet(url);
+// jsb.reflection.callStaticMethod(
+// 'com/jc/jcfw/JcSDK',
+// 'toWallet',
+// '(Ljava/lang/String;)V',
+// url || 'wc://'
+// )
}
\ No newline at end of file
diff --git a/res/anim/in.xml b/res/anim/in.xml
new file mode 100644
index 0000000..620c2ab
--- /dev/null
+++ b/res/anim/in.xml
@@ -0,0 +1,5 @@
+
+
\ No newline at end of file
diff --git a/res/anim/out.xml b/res/anim/out.xml
new file mode 100644
index 0000000..fea8da4
--- /dev/null
+++ b/res/anim/out.xml
@@ -0,0 +1,5 @@
+
+
\ No newline at end of file
diff --git a/res/values/strings.xml b/res/values/strings.xml
index 2486a46..3ced31a 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -1,4 +1,5 @@
HeadlessCocos
Game view
+ Scan QRCode need camera permission
\ No newline at end of file