iis服务器助手广告广告
返回顶部
首页 > 资讯 > 精选 >Android 中怎么实现点击生成二维码功能
  • 665
分享到

Android 中怎么实现点击生成二维码功能

android 2023-05-30 17:05:19 665人浏览 独家记忆
摘要

这期内容当中小编将会给大家带来有关Android 中怎么实现点击生成二维码功能,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。QRCodeUtil:package com.example.admi

这期内容当中小编将会给大家带来有关Android 中怎么实现点击生成二维码功能,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。

QRCodeUtil:

package com.example.administrator.zxing;import android.graphics.Bitmap;import android.graphics.canvas;import com.Google.zxing.BarcodeFORMat;import com.google.zxing.EncodeHintType;import com.google.zxing.WriterException;import com.google.zxing.common.BitMatrix;import com.google.zxing.qrcode.QRCodeWriter;import com.google.zxing.qrcode.decoder.ErrorCorrectionLevel;import java.io.FileOutputStream;import java.io.IOException;import java.util.HashMap;import java.util.Map;public class QRCodeUtil {  public static boolean createQRImage(String content, int widthPix, int heightPix, Bitmap logoBm, String filePath) {    try {      if (content == null || "".equals(content)) {        return false;      }      //配置参数      Map<EncodeHintType, Object> hints = new HashMap<>();      hints.put(EncodeHintType.CHARACTER_SET, "utf-8");      //容错级别      hints.put(EncodeHintType.ERROR_CORRECTION, ErrorCorrectionLevel.H);      //设置空白边距的宽度//      hints.put(EncodeHintType.MARGIN, 2); //default is 4      // 图像数据转换,使用了矩阵转换      BitMatrix bitMatrix = new QRCodeWriter().encode(content, BarcodeFormat.QR_CODE, widthPix, heightPix, hints);      int[] pixels = new int[widthPix * heightPix];      // 下面这里按照二维码的算法,逐个生成二维码的图片,      // 两个for循环是图片横列扫描的结果      for (int y = 0; y < heightPix; y++) {        for (int x = 0; x < widthPix; x++) {          if (bitMatrix.get(x, y)) {            pixels[y * widthPix + x] = 0xff000000;          } else {            pixels[y * widthPix + x] = 0xffffffff;          }        }      }      // 生成二维码图片的格式,使用ARGB_8888      Bitmap bitmap = Bitmap.createBitmap(widthPix, heightPix, Bitmap.Config.ARGB_8888);      bitmap.setPixels(pixels, 0, widthPix, 0, 0, widthPix, heightPix);      if (logoBm != null) {        bitmap = addLogo(bitmap, logoBm);      }      //必须使用compress方法将bitmap保存到文件中再进行读取。直接返回的bitmap是没有任何压缩的,内存消耗巨大!      return bitmap != null && bitmap.compress(Bitmap.CompressFormat.JPEG, 100, new FileOutputStream(filePath));    } catch (WriterException | IOException e) {      e.printStackTrace();    }    return false;  }    private static Bitmap addLogo(Bitmap src, Bitmap logo) {    if (src == null) {      return null;    }    if (logo == null) {      return src;    }    //获取图片的宽高    int srcWidth = src.getWidth();    int srcHeight = src.getHeight();    int logoWidth = logo.getWidth();    int logoHeight = logo.getHeight();    if (srcWidth == 0 || srcHeight == 0) {      return null;    }    if (logoWidth == 0 || logoHeight == 0) {      return src;    }    //logo大小为二维码整体大小的1/5    float scaleFactor = srcWidth * 1.0f / 5 / logoWidth;    Bitmap bitmap = Bitmap.createBitmap(srcWidth, srcHeight, Bitmap.Config.ARGB_8888);    try {      Canvas canvas = new Canvas(bitmap);      canvas.drawBitmap(src, 0, 0, null);      canvas.scale(scaleFactor, scaleFactor, srcWidth / 2, srcHeight / 2);      canvas.drawBitmap(logo, (srcWidth - logoWidth) / 2, (srcHeight - logoHeight) / 2, null);      canvas.save(Canvas.ALL_SAVE_FLAG);      canvas.restore();    } catch (Exception e) {      bitmap = null;      e.getStackTrace();    }    return bitmap;  }}

MainActivity:

package com.example.administrator.zxing;import android.content.Context;import android.graphics.BitmapFactory;import android.os.Bundle;import android.os.Environment;import android.support.v7.app.AppCompatActivity;import android.view.View;import android.widget.Button;import android.widget.CheckBox;import android.widget.EditText;import android.widget.ImageView;import java.io.File;public class MainActivity extends AppCompatActivity {  @Override  protected void onCreate(Bundle savedInstanceState) {    super.onCreate(savedInstanceState);    setContentView(R.layout.activity_main);    //内容    final EditText contentET = (EditText) findViewById(R.id.create_qr_content);    //显示二维码图片    final ImageView imageView = (ImageView) findViewById(R.id.create_qr_iv);    //是否添加Logo    final CheckBox addLogoCB = (CheckBox) findViewById(R.id.create_qr_addLogo);    Button createQrBtn = (Button) findViewById(R.id.create_qr_btn);    createQrBtn.setOnClickListener(new View.OnClickListener() {      @Override      public void onClick(View v) {        final String filePath = getFileRoot(MainActivity.this) + File.separator            + "qr_" + System.currentTimeMillis() + ".jpg";        //二维码图片较大时,生成图片、保存文件的时间可能较长,因此放在新线程中        new Thread(new Runnable() {          @Override          public void run() {            boolean success = QRCodeUtil.createQRImage(contentET.getText().toString().trim(), 800, 800,                addLogoCB.isChecked() ? BitmapFactory.decodeResource(getResources(), R.mipmap.qr_logo) : null,                filePath);            if (success) {              runOnUiThread(new Runnable() {                @Override                public void run() {                  imageView.setImageBitmap(BitmapFactory.decodeFile(filePath));                }              });            }          }        }).start();      }    });  }  //文件存储根目录  private String getFileRoot(Context context) {    if (Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)) {      File external = context.getExternalFilesDir(null);      if (external != null) {        return external.getAbsolutePath();      }    }    return context.getFilesDir().getAbsolutePath();  }}

布局:

 activity_main:

<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="Http://schemas.android.com/apk/res/android"  xmlns:app="http://schemas.android.com/apk/res-auto"  xmlns:tools="http://schemas.android.com/tools"  android:layout_width="match_parent"  android:layout_height="match_parent"  android:orientation="vertical"  tools:context="com.example.administrator.zxing.MainActivity">  <EditText    android:id="@+id/create_qr_content"    android:layout_width="match_parent"    android:layout_height="wrap_content" />  <LinearLayout    android:layout_width="match_parent"    android:layout_height="wrap_content"    android:orientation="horizontal">    <Button      android:id="@+id/create_qr_btn"      android:layout_width="wrap_content"      android:layout_height="wrap_content"      android:text="生成二维码" />    <CheckBox      android:id="@+id/create_qr_addLogo"      android:layout_width="wrap_content"      android:layout_height="wrap_content"      android:text="添加logo图案" />  </LinearLayout>  <ImageView    android:id="@+id/create_qr_iv"    android:layout_width="match_parent"    android:layout_height="wrap_content" /></LinearLayout>

上述就是小编为大家分享的Android 中怎么实现点击生成二维码功能了,如果刚好有类似的疑惑,不妨参照上述分析进行理解。如果想知道更多相关知识,欢迎关注编程网精选频道。

--结束END--

本文标题: Android 中怎么实现点击生成二维码功能

本文链接: https://www.lsjlt.com/news/220174.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Android 中怎么实现点击生成二维码功能
    这期内容当中小编将会给大家带来有关Android 中怎么实现点击生成二维码功能,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。QRCodeUtil:package com.example.admi...
    99+
    2023-05-30
    android
  • Java中怎么实现生成二维码功能
    今天就跟大家聊聊有关Java中怎么实现生成二维码功能,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。maven依赖<!--生成二维码-->  <d...
    99+
    2023-06-15
  • 利用Android怎么实现一个二维码生成功能
    利用Android怎么实现一个二维码生成功能?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。在project的build.gradle添加如下代码:allproj...
    99+
    2023-05-31
    android roi
  • 如何在Android应用中实现一个二维码生成功能
    本篇文章为大家展示了如何在Android应用中实现一个二维码生成功能,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。Android 有自带的jar包可以生成二维码core-3.0.0.jar,其中的c...
    99+
    2023-05-31
    android roi
  • Android studio 实现生成二维码和扫描二维码
    效果图 build.gradle(:app)添加依赖 dependencies { implementation 'com.google.zxing:core:3.3.3' imple...
    99+
    2023-09-30
    android studio android ide
  • Android中怎么实现二维码扫描功能
    这期内容当中小编将会给大家带来有关Android中怎么实现二维码扫描功能,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。1 开发准备1.1 android studio 安装&emsp;&e...
    99+
    2023-06-04
  • Qt实现字符串生成二维码功能
    目录前言开发环境实现步骤资源包数据配置属性二维码操作总结前言 最近在整理开发项目中遇到的知识点,发现了一个特别有意思的功能:使用字符串生成二维码操作。 下面是实现的效果图 开发环境...
    99+
    2024-04-02
  • Android中怎么实现点击功能
    在Android中实现点击功能,可以通过以下步骤来实现:1. 在XML布局文件中定义一个视图组件,如Button、ImageView...
    99+
    2023-09-15
    Android
  • Android怎么实现点击功能
    Android中实现点击功能的方法有多种。以下是几种常用的实现方式:1. 使用Button控件:在布局文件中添加Button控件,然...
    99+
    2023-08-18
    Android
  • Qt如何实现字符串生成二维码功能
    这篇文章主要介绍Qt如何实现字符串生成二维码功能,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!前言最近在整理开发项目中遇到的知识点,发现了一个特别有意思的功能:使用字符串生成二维码操作。下面是实现的效果图开发环境WI...
    99+
    2023-06-29
  • 使用微信小程序实现二维码生成功能
    使用微信小程序实现二维码生成功能小程序的盛行使得开发者可以轻松地实现各种功能,而二维码生成功能正是其中之一。二维码作为快速传递信息的一种方式,被广泛应用于各种场景,如支付、活动推广等。在本篇文章中,我们将学习如何使用微信小程序实现二维码生成...
    99+
    2023-11-21
    微信小程序 二维码生成 实现功能
  • Java中如何实现带同步功能的二维码生成器?
    二维码作为一种越来越流行的编码方式,被广泛应用于商业和个人领域。在Java中,我们可以通过使用第三方库来实现二维码的生成,例如zxing。但是,在一些特殊的场景下,我们需要实现一个带同步功能的二维码生成器,以保证多个线程同时生成二维码时不...
    99+
    2023-10-17
    函数 同步 二维码
  • Vue3中怎么实现二维码的生成与解码
    本文小编为大家详细介绍“Vue3中怎么实现二维码的生成与解码”,内容详细,步骤清晰,细节处理妥当,希望这篇“Vue3中怎么实现二维码的生成与解码”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。使用到的库npm&nb...
    99+
    2023-07-05
  • Python 中怎么生成二维码
    这篇文章给大家介绍Python 中怎么生成二维码,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。1 二维码二维码(2-dimensional bar code),是用某种特定的几何图形按一定规律在平面(二维方向上)分布的...
    99+
    2023-06-02
  • 二维码生成器:如何在Go语言中实现实时生成JavaScript二维码?
    二维码已经成为现代生活中不可或缺的一部分,它们被用于广告、宣传、票据、付款等各种场景。二维码的生成和解码已经得到了广泛的支持,因此,越来越多的人开始使用二维码来代替传统的条形码。 在本文中,我们将介绍如何在Go语言中实现实时生成JavaS...
    99+
    2023-11-06
    实时 javascript 二维码
  • .NET中怎么生成二维码
    .NET中怎么生成二维码,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。1、新建一个window应用程序,然后引入.NET二维码类库(开源的类库,可从网上下载):...
    99+
    2023-06-17
  • 二维码生成Java实现代码
    本文实例为大家分享了二维码生成Java实现代码,供大家参考,具体内容如下package com.yihaomen.barcode;import java.awt.BasicStroke;import java.awt.Graphics;im...
    99+
    2023-05-31
    java 二维码 ava
  • android怎么实现自动点击功能
    要实现Android自动点击功能,可以使用Android提供的AccessibilityService服务。步骤如下:1. 创建一个...
    99+
    2023-10-07
    android
  • Android实现生成二维码并保存到相册
    效果图如下 保存的图片效果是: 保存到本地的,是整个视图,不只是单单的二维码的图片, 在了解的一番过程之后,我知道了, 1.首先要去获取保存图片的写入权限;(使用 https:/...
    99+
    2024-04-02
  • Go语言能否实现二维码实时生成?
    二维码已经成为了现代生活中的一个重要元素,它可以用于各种场景,比如商业活动、支付、身份验证等等。在这些场景中,实时生成二维码是非常有必要的。那么,Go语言能否实现二维码实时生成呢?本文将给出答案。 首先,我们需要了解一下什么是二维码。二维...
    99+
    2023-10-26
    二维码 实时 spring
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作