精华内容
下载资源
问答
  • 动态设置二维码里面的跳转地址

    千次阅读 2018-09-25 14:20:24
    那我动态设置的话,就是通过二维码信息里面的url把下载地址作为参数传到脚本代码,然后脚本取来作为跳转地址。具体代码如下:   <html> <head> <meta http-equiv="...

    一,脚本逻辑代码。

           一般的脚本代码里,写死了IOS和android的下载地址。那我动态设置的话,就是通过二维码信息里面的url把下载地址作为参数传到脚本代码,然后脚本取来作为跳转地址。具体代码如下:

          

    <html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
        <title>Download</title>
        <script type="text/javascript">
                    var browser = {
                        versions: function() {
                            var u = navigator.userAgent,
                                app = navigator.appVersion;
                            return { //移动终端浏览器版本信息
                                ios: !!u.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/), //ios终端
                                android: u.indexOf('Android') > -1 || u.indexOf('Linux') > -1, //android终端或者uc浏览器
                                iPhone: u.indexOf('iPhone') > -1 || u.indexOf('Mac') > -1, //是否为iPhone或者QQHD浏览器
                                iPad: u.indexOf('iPad') > -1
                            };
                        }(),
                        language: (navigator.browserLanguage || navigator.language).toLowerCase()
                    }
    
                    function skip(){
                        if (browser.versions.ios || browser.versions.iPhone || browser.versions.iPad) {
                            window.location = document.getElementById("ios").innerText;
                        } else if (browser.versions.android) {
                            window.location = document.getElementById("android").innerText;
                        } else {
                            document.body.style.display = "block";
                        }
                    }
        </script>
    </head>
    
    <body onload="skip()" style="display: none;">
        <h1>Parameter error</h1>
        <p style="display: none;" id="ios" th:text="${ios}"></p>
        <p style="display: none;" id="android" th:text="${android}"></p>
    </body>
    
    </html>

    二,生成二维码的地址为:服务器地址+'ios='+'IOS下载地址'+'&android='+'android下载地址'。例如:

    http://172.XX.XX.XX:XXXXX/download?ios=https://www.pgyer.com/Aexh&android=https://www.pgyer.com/M5fM

    展开全文
  • 二维码生成PDF文件保存二维码附加文字信息前言一、引入依赖二、创建实体类1.文字信息对象2.创建QRCodeUtil总结如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容...

    生成二维码写入PDF文件


    前言

    1. 生成二维码图片 2. 附带文字信息 3. 调整图片大小以及文字大小、字体、位置等 4. 生成PDF文件,写入图片

    一、引入依赖

    	<dependency>
            <groupId>com.google.zxing</groupId>
            <artifactId>core</artifactId>
            <version>3.3.0</version>
        </dependency>
        <dependency>
            <groupId>com.google.zxing</groupId>
            <artifactId>javase</artifactId>
            <version>3.3.0</version>
        </dependency>
    

    二、生成二维码

    1.创建实体类

    代码如下:

    @Data
    public class QRCodeUser {
        private String userName;
        private String userCode;
        private String url;     //二维码跳转的链接
    }
    
    

    2.创建QRCodeUtil

    代码如下:

    import java.awt.*;
    import java.awt.image.BufferedImage;
    import java.io.File;
    import java.io.OutputStream;
    import java.util.*;
    import java.util.List;
    import javax.imageio.ImageIO;
    
    import com.demo.demo.mapper.AssetsVo;
    import com.google.zxing.BarcodeFormat;
    import com.google.zxing.EncodeHintType;
    import com.google.zxing.MultiFormatWriter;
    import com.google.zxing.common.BitMatrix;
    import com.google.zxing.qrcode.decoder.ErrorCorrectionLevel;
    import org.apache.commons.lang3.StringUtils;
    
    
    
    
    public class QRCodeUtil {
    
        //设置默认参数,可以根据需要进行修改
        private static final int QRCOLOR = 0xFF000000; // 默认是黑色
        private static final int BGWHITE = 0xFFFFFFFF; // 背景颜色
        private static final int WIDTH = 180; // 二维码宽
        private static final int HEIGHT = 180; // 二维码高
    
        //设置高度常量
        private static final int  userNameHigh = 10;
        private static final int userCodehigh = -20;
    
    	//设置字体宽度
        private static final int strWidth = 130; 
    
    
        /**用于设置QR二维码参数
         * com.google.zxing.EncodeHintType:编码提示类型,枚举类型
         * EncodeHintType.CHARACTER_SET:设置字符编码类型
         * EncodeHintType.ERROR_CORRECTION:设置误差校正
         * ErrorCorrectionLevel:误差校正等级,L = ~7% correction、M = ~15% correction、Q = ~25% correction、H = ~30% correction
         * 不设置时,默认为 L 等级,等级不一样,生成的图案不同,但扫描的结果是一样的
         * EncodeHintType.MARGIN:设置二维码边距,单位像素,值越小,二维码距离四周越近
         * */
        private static Map<EncodeHintType, Object> hints = new HashMap<EncodeHintType, Object>() {
            private static final long serialVersionUID = 1L;
            {
                put(EncodeHintType.ERROR_CORRECTION, ErrorCorrectionLevel.H);// 设置QR二维码的纠错级别(H为最高级别)具体级别信息
                put(EncodeHintType.CHARACTER_SET, "utf-8");// 设置编码方式
                put(EncodeHintType.MARGIN, 0);
            }
        };
    
    
        /**
         * 生成二维码和附带字体参数
         */
        private static BufferedImage createQr(QRCodeUser qrCodeUser, Font font) throws WriterException{
            //设置二维码旁边的文字信息
            String userName = "员工姓名:"+qrCodeUser.getUserName();
            String userCode = "員工工號:"+qrCodeUser.getUserName();
            String qrurl = qrCodeUser.getUrl();    //这里以百度为例
    
            /**
             * MultiFormatWriter:多格式写入,这是一个工厂类,里面重载了两个 encode 方法,用于写入条形码或二维码
             *      encode(String contents,BarcodeFormat format,int width, int height,Map<EncodeHintType,?> hints)
             *      contents:条形码/二维码内容
             *      format:编码类型,如 条形码,二维码 等
             *      width:码的宽度
             *      height:码的高度
             *      hints:码内容的编码类型
             * BarcodeFormat:枚举该程序包已知的条形码格式,即创建何种码,如 1 维的条形码,2 维的二维码 等
             * BitMatrix:位(比特)矩阵或叫2D矩阵,也就是需要的二维码
             */
            MultiFormatWriter multiFormatWriter = new MultiFormatWriter();
    
            /**参数顺序分别为:编码内容,编码类型,生成图片宽度,生成图片高度,设置参数
             * BitMatrix 的 get(int x, int y) 获取比特矩阵内容,指定位置有值,则返回true,将其设置为前景色,否则设置为背景色
             * BufferedImage 的 setRGB(int x, int y, int rgb) 方法设置图像像素
             *      x:像素位置的横坐标,即列
             *      y:像素位置的纵坐标,即行
             *      rgb:像素的值,采用 16 进制,如 0xFFFFFF 白色
             */
            BitMatrix bm = multiFormatWriter.encode(qrurl, BarcodeFormat.QR_CODE, WIDTH, HEIGHT, hints);
            //创建一个图片缓冲区存放二维码图片
            BufferedImage image = new BufferedImage(WIDTH, HEIGHT, BufferedImage.TYPE_INT_RGB);
            // 开始利用二维码数据创建Bitmap图片,分别设为黑(0xFFFFFFFF)白(0xFF000000)两色
            for (int x = 0; x < WIDTH; x++) {
                for (int y = 0; y < HEIGHT; y++) {
                    image.setRGB(x, y, bm.get(x, y) ? QRCOLOR : BGWHITE);
                }
            }
            int height = image.getHeight();
    
            // ------------------------------------------自定义文本描述-------------------------------------------------
            if (StringUtils.isNotEmpty(qrCodeUser.getUserCode())) {
                //在内存创建图片缓冲区  这里设置画板的宽高和类型
                BufferedImage outImage = new BufferedImage(600, 350, BufferedImage.TYPE_4BYTE_ABGR);
    
                //创建画布
                Graphics2D outg = outImage.createGraphics();
    
                // 在画布上画上二维码  X轴Y轴,宽度高度
                outg.drawImage(image, 10, 30, image.getWidth(), image.getHeight(), null);
    
                // 画文字到新的面板
                outg.setColor(Color.BLACK);
                 // 字体、字型、字号
                outg.setFont(font);
    
                //获取字体宽度
                int userNameWidth = outg.getFontMetrics().stringWidth(userName);
                int userCodeWidth = outg.getFontMetrics().stringWidth(userCode);
    
    			//drawString(文字信息、x轴、y轴)方法根据参数设置文字的坐标轴 ,根据需要来进行调整
                outg.drawString(userName, 300 - userNameWidth / 2, height - userNameHigh);    //   员工名字
                outg.drawString(userCode, 300 - userCodeWidth / 2, height - userCodehigh);      //   员工工号
                //  例: outg.drawString(depatmentName,  65 - strWidth / 2, height + (outImage.getHeight() - height) / 2 - h3); 根据需求自行计算需要的宽高
    
                outg.dispose();
                outImage.flush();
                image = outImage;
            }
            image.flush();
            return image;
        }
    
    }
    
    此时二维码已经可以生成

    3.生成单条二维码

     /**
        * @author: zyf
        * @date: 2021/4/27
        * Description: 生成单条二维码附带文字信息,导出到指定路径
        **/
        public void drawLogoQRCode(QRCodeUser qrCodeUser) {
    
            FileOutputStream fileOutputStream = null;
    
            try {
                fileOutputStream = new FileOutputStream("D:"+ File.separator+"二维码" + qrCodeUser.getUserCode() + ".png");  //保存路径输出流,将图片输出到指定路径
                Font fontChinese = new Font("黑体",  Font.BOLD, 28);
                BufferedImage image = QRCodeUtil.createQr(qrCodeUser,fontChinese);
    
                boolean crateQRCode = ImageIO.write(image, "png", fileOutputStream);
    
            }catch (WriterException | IOException e) {
                log.error("二维码写入IO流异常",e);
            }finally {
                try {
                    if (null != fileOutputStream){
                        fileOutputStream.flush();
                        fileOutputStream.close();
                    }
                }catch (IOException ioe){
                    log.error("二维码关流异常",ioe);
                }
            }
        }
    	
    

    画板大小可根据需要的二维码大小进行调整

    4.批量生产二维码

     /**
        * @author: zyf
        * @date: 2021/4/27
        * Description: 批量生产二维码,导出到指定路径
        **/
        public void drawLogoQRCode(List<QRCodeUser> qrCodeUserList) {
    
            FileOutputStream fileOutputStream = null;
    		//咱们简单一点,直接循环调用
            try {	
            	for(QRCodeUser qrCodeUser:qrCodeUserList){
    	            fileOutputStream = new FileOutputStream("D:"+ File.separator+"二维码" + qrCodeUser.getUserCode() + ".png");  //保存路径输出流,将图片输出到指定路径
    	            Font fontChinese = new Font("黑体",  Font.BOLD, 28);
    
    		
    	            //返回的image就是二维码图片,可以根据需要进行后续的处理,比如全都写入指定文件夹进行压缩或者写入PDF文件
    	            BufferedImage image = QRCodeUtil.createQr(qrCodeUser,fontChinese);
    	
    				//写出到指定路径
    	            boolean crateQRCode = ImageIO.write(image, "png", fileOutputStream);
    
    			}
            }catch (WriterException | IOException e) {
                log.error("二维码写入IO流异常",e);
            }finally {
                try {
                    if (null != fileOutputStream){
                        fileOutputStream.flush();
                        fileOutputStream.close();
                    }
                }catch (IOException ioe){
                    log.error("二维码关流异常",ioe);
                }
            }
        }
    
    
    
    

    三、生成二维码写入PDF文件

    1.引入依赖

    	<dependency>
          <groupId>com.itextpdf</groupId>
          <artifactId>itextpdf</artifactId>
          <version>5.5.13</version>
        </dependency>
        <!-- https://mvnrepository.com/artifact/com.itextpdf/itext-asian -->
        <dependency>
          <groupId>com.itextpdf</groupId>
          <artifactId>itext-asian</artifactId>
          <version>5.2.0</version>
        </dependency>
    
    

    2.替换工具类中的drawLogoQRCode方法

    public static void drawLogoQRCode(OutputStream outputStream, QrCodeUser qrCodeUser) {
    
            try {
            	Font fontChinese = new Font("黑体",  Font.BOLD, 28);
                BufferedImage image = createQr(qrCodeUser,fontChinese);
                ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();  //字节数组输出流
                boolean createQRCode = ImageIO.write(image, "png", byteArrayOutputStream);
                if(!createQRCode){
    				log.error("二维码写入输出流失败");
    			}
             
                /*生成pdf*/
                Document document = new Document(PageSize.A4, 0, 0, 0, 0);
                PdfWriter.getInstance(document, outputStream);  //写出pdf
                document.open();    //打开文件
    
                /*pdf写入图片*/
                com.lowagie.text.Image image2 = com.lowagie.text.Image.getInstance(byteArrayOutputStream.toByteArray());
                float documentWidth = document.getPageSize().getWidth() - document.leftMargin() - document.rightMargin();
                float documentHeight = documentWidth / 300 * 80;// 重新设置宽高
                image2.scaleAbsolute(documentWidth, documentHeight);// 重新设置宽高
                document.add(image2);
                document.close();   //关闭文件
    
                byteArrayOutputStream.close();
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    

    3.PDF中文乱码解决

    Linux系统或者docker发布的项目中,不包含中文字体,会导致中文乱码,所以PDF中的中文不能显示
    
    Linux系统中路径  /usr/share/fonts/   下是字体文件,复制windows本地的字体文件到这里面就可以,一般使用宋体
    Docker系统中,需要配置
    
    ![在这里插入图片描述](https://img-blog.csdnimg.cn/20210428225743647.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NjAxNDA3NQ==,size_16,color_FFFFFF,t_70)
    
    
    
    
    展开全文
  • 二维码

    千次阅读 2016-02-18 08:38:11
    草料二微码生成器 二微码的三个角是用来确定二维码的方向的 。 有黑的白的,表示0和1, ...只要用到编码和解码就行了。...ZXing 条码和二维码的扫描的功能。...ZXing 现在在GitHub里面也有 https://github/zxing/zxing
    草料二微码生成器
    二微码的三个角是用来确定二维码的方向的 。
    有黑的白的,表示0和1,


    只要用到编码和解码就行了。


    ZXing 条码和二维码的扫描的功能。


    1:摄像头,需要用到自定义的摄像头。内部的预览的接口,
    2:


    新建一个新的activity:


    ZXing 现在在GitHub里面也有
    https://github/zxing/zxing
    支持的非常好。
    需要通过gradle来下载jar包。
    在Android studio 里面导包
    f4,dependecy
    搜索zxing得到
    com.google.zxing:zxing:core:3.2.1
    com.google.zxing:android-core:3.2.1
    同步之后
    现在还不能用。


    现在需要专门的代码:
    ++++++++++++++++++++++++++++
    怎么将一个代码导入进去
    File->New->Import Module
    +++++++++++++++++++++++++++++


    ZXing android 里面的清单文件。
    有一个CaptureActivity
    <Intent-Filter>


    <


    在原本的布局里面添加一个按钮“点击扫描二维码”


    Intent intent = new Intent("com.google.zxing.client.android.SCAN");
    startActivityForResult(intent,998);


    ZXing android 界面内部也导入了那个。jar包了。


    -----------------------------
    下面的两句话,可以做也可以不做
    修改我们自己的 删除哪两个包。
    compile project(':ZXingAndroid');
    这一步 也可以在f4 dependency 里面添加的时候选择model就性了
    -----------------------------------
    二维码:
    1:需要导入ZXing Android 版本,
    2:设置类库的依赖,例如app 依赖ZXingAndroid 模块;
    3:通过ZXingAndroid 提供的隐式意图,就可扫描的,注意这个版本必须要用这个饮食意图。
    com.google.zxing.client.android.SCAN
    4:startActivityForResult
    这个时候它的二维码的扫描是长方形的。
    Intents 类可以直接使用,来设置ACTION,和其余的参数;
    例如,扫描时候的取景框的宽高,都可以设置。


    Intent intent = new Intent("com.google.zxing.client.android.SCAN");
    //Intents.Scan.ACTION,其实就是com.google.zxing.client.android.SCAN
    //Intents.Scan.WIDTH也可以设置
    Intent.putExtra(Intents.Scan.WIDTH,600);
    Intent.putExtra(Intents.Scan.HEIGHT,600);
    startActivityForResult(intent,998);
    扫描的时候特别慢,因为要扫描各种格式,
    Intents.SCAN.MODE 默认情况下检测所有的二维码的信息。
    如果想要只指定一种呢?
    PRODUCT_MODE->条形码
    QR_CODE_MODE->QR码。


    还有一个FORMATS 这个是
    支付宝是QR_CODE/onede CODE


    Intent.putExtra(Intents.Scan.MODE,Intents.SCAN.QR_CODE_MODE);;




    5: 获取结果,通过onActivityResult来获取,内容都在Intent中
    返回的结果都在Intent 中。




    onActivityResult(int requestCode,int resultCode,Intent data){
    if(requestCode=998){
    if(resultCode==RESULT_OK){
    String stringExtra = data.getStringExtra(Intents.Scan.RESULT);//如果是字符串就是RESULT,如果是字节就是RESULT_BYTES
    Log.d("BarCodeActivity","barcode"+stringExtra);
    }


    }
    }
    这个时候自己生成一个带字符的二维码就行了。




    +++++++++++++++++++++++
    如何生成二维码呢?
    添加一个button 点击生成二维码
    最终的是一个图片Bitmap,
    生成的步骤:
    1:准备数据
    2:生成的格式,二维码,
    3:通过编码生成1,0结构,也称为0,1矩阵
    4:通过矩阵,生成Bitmap


    需要找com.google.zxing.MutiFormatWriter这个类


    MultiFormatWriter writer = new MultiFormatWriter();
    //QR_CODE 是国内最常用的。生成一个0,1的矩阵,这个矩阵实际上就是二维码的黑白位置的标注
    BitMatrix bitMatrix = writer.encode(“Hello World”,BarcodeFormat.QR_CODE,128,128);
    需要我们单独的画出来。


    这个矩阵是
    0,0,1,0,1,1,1,1,1------1 width个数子
    0,0,1,0,1,1,1,1,1------1
    0,0,1,0,1,1,1,1,1------1
    0,0,1,0,1,1,1,1,1------1
    |
    0,0,1,0,1,1,1,1,1------1
    Height 行


    需要手动生成Bitmap,按照0,1 进行绘制;


    //生成Bitmap,进行绘制
    //创建空的,可以绘制的bitmap
    Bitmap bitmap =Bitmap.createBitmap(128,128,Bitmap。Config.ARGB_8888);
    //创建bitmap的画布,用于绘制Bitmap,它可以直接这样绘制了,因为上面的bitmap 是空的
    //可以不使用canvas,直接使用setPixel。Canvas canvas = new Canvas(bitmap);




    int width = bitMatrix.getWidth();
    int height = bitMatrix.getHeight();




    for(int i=0;i<height;i++){
    for(int j =0;j<width;j++){
    boolean b =bitMatrix.get(j,i);
    if(b){
    //1 true 代表需要的是黑色
    bitmap.setPixel(j,i,Color.BLACK);
    }else{
    //0 false 代表需要绘制白色
    bitmap.setPixel(j,i,Color.WHITE);
    }
    }


    }


    再设置一个ImageView 用来显示。
    id ->image_code


    mImageView.setImageBitmap(bitmap);


    ----------------------------------------
    ----------------------------------------
    当然 也可以有简单的方法:
    使用Intent 生成二维码
    //使用Intent 来生成二维码
    Intent intent = new Intent(Intents.Encode.ACTION);
    intent.putExtra(Intents.Encode.FORMAT,BarCodeFormat.QR_CODE.name());//如果Intents.Encode.FORMAT没有指定,默认的是QR码
    //一定要注意上面传的是编码的name,一定要有这个name
    intent.putExtra(Intents.Encode.DATA,"Hello World");
    intent.putExtra(Intents.Encode.TYPE,Contents.Type.TEXT);//如果是QR码类型必须要指定。
    startActivity(intent);


    --------------------------------------------
    ---------------------------------------------
    如果想要在二维码中间放一个图片呢?


    明天支付:
    第三方登录,分享 OAuth,




    推送
    统计分析
    加密
    展开全文
  • Xposed hook微信二维码收款信息

    千次阅读 2019-04-17 15:19:07
    这里我只是hook到微信收款信息后显示出来 项目github地址ObtainWXBillInfo 资源地址(里面有xml和json转换工具JASONJava.jar包、apk安装包等等......) 链接:https://pan.baidu.com/s/104DBdsSZHnWqlZ0EMLe49g ...

    学习借鉴Xposed微信支付宝个人免签收款

    这里我只是hook到微信收款信息后显示出来

    显示收款信息

    项目github地址ObtainWXBillInfo

    资源地址(里面有xml和json转换工具JASONJava.jar包、apk安装包等等......)

    链接:https://pan.baidu.com/s/104DBdsSZHnWqlZ0EMLe49g
    提取码:t11r 

    hook代码:

    public class XposedProgram implements IXposedHookLoadPackage {
    
        private Context wxContext;
        @Override
        public void handleLoadPackage(XC_LoadPackage.LoadPackageParam loadPackageParam) throws Throwable
        {
            if(loadPackageParam.packageName.equals("com.tencent.mm"))
            {
                hookWxContext(loadPackageParam.classLoader);
                hookBill(loadPackageParam.classLoader);
                return;
            }
        }
    
        //获取上下文
        private void hookWxContext(final ClassLoader appClassLoader)
        {
            try {
                Class<?> ContextClass = XposedHelpers.findClass("android.content.ContextWrapper", appClassLoader);
                XposedHelpers.findAndHookMethod(ContextClass, "getApplicationContext", new XC_MethodHook() {
                    @Override
                    protected void afterHookedMethod(MethodHookParam param) throws Throwable {
                        super.afterHookedMethod(param);
                        if (wxContext != null)
                            return;
                        wxContext = (Context) param.getResult();
    
                    }
                });
            } catch (Throwable t) {
                XposedBridge.log("获取上下文出错");
                wxContext = null;
            }
        }
    
        //hook 。。。。。。
        private void hookBill(final ClassLoader appClassLoader)
        {
    
            XposedHelpers.findAndHookMethod("com.tencent.wcdb.database.SQLiteDatabase", appClassLoader, "insert", String.class, String.class, ContentValues.class,
                    new XC_MethodHook() {
                        @Override
                        protected void beforeHookedMethod(MethodHookParam param)
                                throws Throwable {
    
                            try {
                                ContentValues contentValues = (ContentValues) param.args[2];
                                String tableName = (String) param.args[0];
                                if (TextUtils.isEmpty(tableName) || !tableName.equals("message")) {
                                    return;
                                }
                                Integer type = contentValues.getAsInteger("type");
                                if (null == type) {
                                    return;
                                }
    
    //                            XposedBridge.log("\n\n\n遍历content里的信息:");
    //                            for(Map.Entry<String, Object> item : contentValues.valueSet())
    //                            {
    //                                XposedBridge.log(item.getKey() + " , " + item.getValue().toString());
    //                            }
    //                            XposedBridge.log("遍历content里的信息完成\n\n\n");
    
    
                                if (type == 318767153) {
                                    String contentStr = contentValues.getAsString("content");
                                    JSONObject msg = XML.toJSONObject(contentStr);
                                    XposedBridge.log("收款信息(json):"+msg);
    
                                    JSONObject mmreader = msg.getJSONObject("msg").getJSONObject("appmsg").getJSONObject("mmreader");
                                    //获取时间
                                    long time = mmreader.getJSONObject("template_header").getLong("pub_time");
                                    Date currentTime = new Date(time);
                                    SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
                                    String dateString = formatter.format(currentTime);
    
    
                                    //获取收款明细
                                    JSONObject billDetail = mmreader.getJSONObject("template_detail").getJSONObject("line_content");
    
                                    //获取收款标题、金额等
                                    JSONObject topLine = billDetail.getJSONObject("topline");
                                    //收款标题
                                    String topLineKey = topLine.getJSONObject("key").getString("word");
                                    //收款金额
                                    String topLineValue = topLine.getJSONObject("value").getString("word");
                                    float money = Float.parseFloat(topLineValue.replace("¥", ""));
    
                                    //获取汇总、备注等信息
                                    JSONArray line = billDetail.getJSONObject("lines").getJSONArray("line");
                                    //获取汇总
                                    JSONObject line0Detail = line.getJSONObject(0);
                                    String line0Title = line0Detail.getJSONObject("key").getString("word");
                                    String line0Msg = line0Detail.getJSONObject("value").getString("word");
                                    //获取备注
                                    JSONObject line1Detail = line.getJSONObject(1);
                                    String line1Title = line1Detail.getJSONObject("key").getString("word");
                                    String line1Msg = line1Detail.getJSONObject("value").getString("word");
    
                                    XposedBridge.log("\n\n\n获取到时间:" + dateString  );
                                    XposedBridge.log(topLineKey + money);
                                    XposedBridge.log(line0Title + " " + line0Msg);
                                    XposedBridge.log(line1Title + " " + line1Msg);
    
                                    XposedBridge.log("开始通知客户端");
                                    XposedBridge.log("--------------------");
                                    String data = "<time>" + dateString + "</time>" +
                                            "<topline>" + "<key>" + topLineKey + "</key>" + "<value>" + money + "</value>" + "</topline>" +
                                            "<line>" + "<key>" + line0Title + "</key>" + "<value>" + line0Msg + "</value>" + "</line>" +
                                            "<line>" + "<key>" + line1Title + "</key>" + "<value>" + line1Msg + "</value>" + "</line>";
                                    //把信息广播出去
                                    Intent intent = new Intent("com.example.a32960.moudletest");
                                    intent.putExtra("xmlData", data);
                                    wxContext.sendBroadcast(intent);
    
                                }
                            } catch (Exception e) {
                                XposedBridge.log("获取信息出错: "+ e.getMessage());
                            }
                        }
    
                    });
        }
    }

    信息获取到了通知后台什么的就不用多说了

    展开全文
  • 虽然没有微信做的那么精致,但是效果还是可以的,所以将自己修改UI的代码和扫描二维码的代码分享给大家,一是自己以后项目遇到同样的功能直接拷贝来用,二是给还没有加入二维码功能的人一个参考,站在巨人的肩膀上,...
  • 怎么生成二维码调用数据库信息。就是自己生成二维码然后调用数据库里的信息资料,就是二维码生成链接,直接链接数据库的东西,用的时候扫描下二维码就能看数据库里的信息了,要怎么弄?要买扫码软件吗?花费大不大?...
  • 了解二维码这个东西还是从微信中,当时微信推出二维码扫描功能,自己感觉挺新颖的,从一张图片中扫一下竟然能直接加好友,不可思议啊,那时候还不了解二维码,呵呵,然后做项目的时候,老板说要加上二维码扫描功能,...
  • 许多施工工程队里面也会用到二维码来展示相关的工程信息,比如施工安全章程、施工进展、通知报告等。 可以将很多的内容都以二维码的形式展示出来, 比如:网址链接二维码;文本二维码;图文二维码;文件二维码等。...
  • Android 修改zxing二维码样式

    千次阅读 2016-11-30 14:26:23
    主要修改onDraw方法里面的属性…… /** * This view is overlaid on top of the camera preview. It adds the viewfinder rectangle and partial * transparency outside it, as well as the laser ...
  • 现在的很多商品标签或者是出厂时的产品标签,除了一些可以明显看到的商品信息,厂家一般还会在旁边做一个二维码,用户扫描二维码时一样可以看到产品信息。那么这种扫描二维码显示产品信息的效果是如何制作的呢?下面...
  • java对二维码个性修改

    千次阅读 2018-11-14 17:25:08
    ​ 最近有一个业务需求,生成微信小程序二维码,中间的logo变成用户上传的logo,下方添加上一行文字 ​ 网上有一些图片覆盖或者添加文字的代码,但是没有两种情况都进行的代码,对找到的代码进行了一些拼凑踩了...
  • 美化二维码

    2020-05-02 16:50:50
    大多数互联网技术使用到二维码生成,都是使用开源的包生成,输入字符信息,即可生成一张包含此字符信息的黑白二维码图片: 上面有两个二维码图片,扫码结果都是访问到同个页面,但是大多数使用二维码的地方...
  • 在一些场景中,需要在二维码底部添加一些相关的信息,例如二维码表示一个设备时,下方显示该设备的位置信息 实现方式 首先,根据需求的长和宽生成一个BufferedImage /** * 描述:建立布景并设置背景色 * @...
  • 在写项目的时候遇到的一个需求,登录和注册都可以通过扫描微信的二维码来实现,但是在做的时候发现微信有一些它自带的样式,并且无法通过CSS直接修改。 通过查微信的开发者文档发现是支持修改的 wxHandle () { var...
  • @[](python生成二维码、动态二维码 和 而二维码解析(20190129)) 就是为了好玩所以想搞一下二维码,“好玩”,少年醒醒,不要骗自己啦,起来干活啦!!! 一、二维码介绍 ...
  • 二维码扫描

    千次阅读 2016-01-20 17:23:43
    首先声明这个二维码扫描是借助于zxing.功能模块都完全封装好了,不过界面合你口味,直接使用就好,如果不合口味,后面告诉你怎么修改.
  • 基于google Zxing实现二维码、条形码扫描,仿微信二维码扫描效果,Android 仿微信二维码名片制作,生成二维码,扫码生成名片表单信息,这里是实例代码,项目详情...
  • Python 二维码制作先介绍python 二维码制作的第三方库QRCode 、MyQRQRCode 生成这个二维码只用三行importqrcodeimg= qrcode.make('hello qrcode !')img.save('test.png')安装导入QRCodepip install qrcodeQRCode ...
  • Zxing二维码

    2018-04-03 17:01:41
    这是项目要导入的library,可以使用里面的功能并且能修改源码,因为博客需要就传到这里了
  • Java生成二维码

    2016-12-02 09:40:28
    场景:将某一段内容加密到二维码里面,如url,用户去扫描,打开网页.... Java如何生成二维码 1.利用google的zxing,来实现 2.依赖jar包:zxing 点击下载所有依赖jar包直接上Codeimport com.google.zxing.*; import ...
  • 【转】修改ZXing二维码扫描为竖屏模式 修改ZXing For Android 为竖屏模式,经过实践,可行方法如下:1、修改AndroidManifest文件,将CaptureActivity设为portrait:代码为:android:configChanges="orientation...
  • java 二维码

    2017-01-16 09:45:00
    在http://www.ostools.net/qr看到了一个生成二维码...为什么自己不做一个二维码的生成和解析工具呢?花了一个多钟的时间,嘿嘿,就做出来啦... 先来看看效果图吧: CODE_QR: CODE_128: PDF_417: 二维码的意...
  • Android 二维码

    2015-11-07 10:45:34
    zxing 哎呀呀,在杭州2015 Hackthon的现场,因为没有二维码签到功能,被吐槽low!这是我近期最丢脸的事啦~ ...一搜索Google和我们SegmentFault,发现在Android上,Google的zxing这个二维码的库比较受欢
  • 方式一:长按识别二维码 #import "LYBLongPressRecognizeEwmVC.h" #import "UIImageView+CreatCode.h" /** 补充的iOS9新特性*/ #import <SafariServices/SafariServices.h> @interface LYBLongPres
  • js关于二维码

    2018-10-24 15:29:28
    一、生成二维码: 简单demo代码包批量生成而二维码 生成步骤:1. 从数据库获取二维码内容数据  2.前端用二维码插件遍历生成二维码  3.获取canvas下的图片数据,通过ajax上传后台php,生成图片文件  1. 从...
  • PHP生成二维码图片

    2016-11-27 16:40:11
    PHP生成二维码图片,放到ThinkPHP的扩展库里面可以直接使用,或者根据需要更改文件名!
  • 二维码实现

    2014-01-23 19:40:58
    我在项目中用到了二维码扫描的技术,用的是Google提供的ZXing开源项目,它提供二维码和条形码的扫描。扫描条形码就是直接读取条形码的内容,扫描二维码是按照自己指定的二维码格式进行编码和解码。 可以到...
  • Java 生成二维码源码

    2013-09-17 14:10:39
    java代码直接生成二维码,生成的二维码图片在F盘里面,可以根据自己的需要进行修改路径即可,否则报错

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 21,953
精华内容 8,781
关键字:

修改二维码里面的信息