【原生功能接入】扫描二维码功能

前提:论坛没有找到接二维码的方案,因为项目遇到了,分享一下,我是鸦哥的弟弟,所以比较菜

二维码的安卓库:
1.zxing这个不懂安卓的人,应该搞不定。。。
2.git上找到一个yipianfengye封装好的zxing的几行代码接入的教程,可是年代过于古老,我没有跑起来,莫名其妙的错误一堆。(我是安卓彩笔)
3. HMS Scankit 华为的二维码sdk(这个很简单我喜欢)

步骤如下

1)引用接入华为的sdk,文档在这个 自己看吧。。。
https://developer.huawei.com/consumer/cn/doc/development/HMS-Guides/scan-introduction-4

2)调用android
if (cc.sys.isNative && cc.sys.os == cc.sys.OS_ANDROID) {
jsb.reflection.callStaticMethod(“org/cocos2dx/javascript/AppActivity”, “scan”, “()V”);
}

3)编写安卓部分内容
// 这个用于赋值当前的activity
private static Activity mContext;
// 这个用于判断二维码activity关闭时候的返回值
private static int REQUEST_CODE_SCAN_ONE = 111;
/**扫描二维码 */
public static void scan() {
Intent intent = new Intent(mContext, ScanKitActivity.class);
mContext.startActivityForResult(intent, REQUEST_CODE_SCAN_ONE);
}

// activity关闭的结果
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if ((requestCode == REQUEST_CODE_SCAN_ONE) && (resultCode == Activity.RESULT_OK)) {
HmsScan obj = data.getParcelableExtra(ScanUtil.RESULT);
if (obj != null && obj.getOriginalValue() != null) {
String res = obj.getOriginalValue();
Log.d(“ddd”, “onActivityResult: 扫描结果:” + res);
RCODE = res;
this.callJs();
}
}
}

/*返回结果/
public void callJs() {
this.runOnGLThread(new Runnable() {
@Override
public void run() {
String js = “NativeHelper.message({name:”;
js += “’” + “scan” + “’,”;
js += “value:’” + RCODE + “’})”;
Log.d(“ddd”, "run: " + js);
Cocos2dxJavascriptJavaBridge.evalString(js);
}
});
}

4) cocos监听返回的结果
window.NativeHelper = {
message: function(msg) {
if(msg) {
console.log(JSON.stringify(msg))
}
}
}

有需要的
https://github.com/uer7e67/cocos-creator-QRcode // 地址在这个
小提示:.gitignore 删除build就可以吧build提交到git上

7赞

给大佬点赞!


划重点,打起来!打起来!

安卓,ios啥的没有问题是sdk解决不了的

楼主,建议将正文中的代码用markdwon格式化一下,不然太费眼了!

有机会将完整Demo上架一个到Cocos Store吧 :kissing_heart:

:joy: 哈哈 鸦哥是我老大 鸦哥确实在带人上我遇到最好的

嗯嗯 就是得找一个靠谱的 :grin:

:stuck_out_tongue:重点只有鸦哥嘛?不!重点还有你的名字,会挨打

mark!

真不错!给大佬点赞
引入sdk的文档在csdn上有一篇简单点的,带你彻底弄明白!Android---教你如何开发扫二维码功能_Web小甜甜的博客-CSDN博客_android二维码扫描开发

1赞

安卓,iOS有封装好的,3秒之内就能扫描成功