ccc android 生成二维码

2019-11-30  本文已影响0人  应届毕业生_18

参考链接:https://www.jianshu.com/p/b275e818de6a

思路:

    1. 通过 ZXing 库获得二维码的Bitmap

    2. 将Bitmap 保存到本地图片(注意存储路径)

    3. jsb读取路径替换spriteFrame

Android关键代码:

public static int saveBitmapToLocal(String url){

    String savePath =app.getFilesDir().getAbsolutePath() +"/QRCodeImg.png";

    Bitmap img =createQRCodeBitmap(url,480,480);

    File filePic;

    try {

        filePic =new File(savePath);

        if (!filePic.exists()) {

            filePic.getParentFile().mkdirs();

            filePic.createNewFile();

        }

        FileOutputStream fos =new FileOutputStream(filePic);

        img.compress(Bitmap.CompressFormat.PNG,100, fos);

        fos.flush();

        fos.close();

    }catch (IOException e) {

        return -1;

    }

return  0;

}

ccc关键代码:

refreshQrCode:function(){

        let spriteFrame = null;

        let fileName = "QRCodeImg";

        let url = jsb.fileUtils.getWritablePath() + fileName + ".png";

        if (jsb.fileUtils.isFileExist(url)){

            spriteFrame = new cc.SpriteFrame(url);

            this.qrCodeSprite.spriteFrame = spriteFrame;

        }else{

            if (cc.sys.OS_ANDROID == cc.sys.os) {

                console.log("android creator: current platform is cc.sys.OS_ANDROID");

                let url = "https://www.baidu.com";

                let result = jsb.reflection.callStaticMethod("org/cocos2dx/javascript/AppActivity", "saveBitmapToLocal", "(Ljava/lang/String;)I",url);

                if (result === 0){

                    console.log("android save qrCoede success");

                    this.refreshQrCode();

                }else if (result === -1){

                    console.log("android save qrCoede failure");

                }else{

                    console.log("i can't understand");

                }

            }

        }

    }

ps: 

    ①    ZXing简介:ZXing全称zebra crossing,翻译过来就是『斑马线』的意思。ZXing是一个采用Java实现的、开源的、支持多格式(一维/二维)的条形码图像处理库。

    ②    jsb.fileUtils.getWritablePath() 在android平台下获取的路径为/data/user/0/org.cocos2d.scratchCard/files,

    ③    android平台需要使用app.getFilesDir().getAbsolutePath()获取路径;

上一篇下一篇

猜你喜欢

热点阅读