• 二维码的生成


     这是一个二维码扫描的教程

    使用的依赖包在这里,http://download.csdn.net/detail/github_35546522/9651725

    下载后需要import 后直接配置下依赖即可

    //布局文件

    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical">
    
        <Button
            android:id="@+id/bt_decode"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:onClick="bt_decode"
            android:text="扫描二维码" />
    
        <TextView
            android:id="@+id/tv_decode"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="扫描结果:" />
        <EditText
            android:id="@+id/et_encode"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:hint="请输入要编译的文字" />
        <Button
            android:id="@+id/bt_encode"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:onClick="bt_encode"
            android:text="生成二維碼" />
    
        <CheckBox
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="是否编译logo"
            android:id="@+id/cb_ishavelogo"
            android:checked="false" />
        <ImageView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:id="@+id/img_encoderesult" />
    </LinearLayout>

    //逻辑的处理

    
    package com.qg.lizhanqi;
    
    import android.content.Intent;
    import android.graphics.Bitmap;
    import android.graphics.BitmapFactory;
    import android.net.Uri;
    import android.os.Bundle;
    import android.support.v7.app.AppCompatActivity;
    import android.text.TextUtils;
    import android.view.View;
    import android.widget.Button;
    import android.widget.CheckBox;
    import android.widget.EditText;
    import android.widget.ImageView;
    import android.widget.TextView;
    import android.widget.Toast;
    
    import com.xys.libzxing.zxing.activity.CaptureActivity;
    import com.xys.libzxing.zxing.encoding.EncodingUtils;
    
    public class MainActivity extends AppCompatActivity {
        private Button btDecode;
        private TextView tvDecode;
        private EditText etEncode;
        private Button btEncode;
        private CheckBox cbIshavelogo;
        private ImageView imgEncoderesult;
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            btDecode = (Button) findViewById(R.id.bt_decode);
            tvDecode = (TextView) findViewById(R.id.tv_decode);
            etEncode = (EditText) findViewById(R.id.et_encode);
            btEncode = (Button) findViewById(R.id.bt_encode);
            cbIshavelogo = (CheckBox) findViewById(R.id.cb_ishavelogo);
            imgEncoderesult = (ImageView) findViewById(R.id.img_encoderesult);
        }
    
        //扫描解码
        public void bt_decode(View view) {
            startActivityForResult(new Intent(this, CaptureActivity.class), 0);
        }
    
        @Override
        protected void onActivityResult(int requestCode, int resultCode, Intent data) {
            super.onActivityResult(requestCode, resultCode, data);
            if (resultCode == RESULT_OK) {
                Bundle bundle = data.getExtras();
                String result = bundle.getString("result");
                //显示到TextView上
                tvDecode.setText(result);
                //处理扫描结果
                lastwork(result);
            }
        }
        //处理扫描结果的方法
        private void lastwork(String result) {
            if(result.startsWith("http://")||result.startsWith("https://")){//网页
                //跳转到浏览器加载网页
                Intent it = new Intent(Intent.ACTION_VIEW);//跳转意图
                it.setData(Uri.parse(result));//设置跳转携带的参数
                startActivity(it);//跳转
                // finish(); //关闭当前页面
            }else if(result.startsWith("tel:")){//电话
                Intent it = new Intent(Intent.ACTION_DIAL);
                it.setData(Uri.parse(result));
                startActivity(it);
            }else if(result.startsWith("smsto:")){//短信
                Intent it = new Intent(Intent.ACTION_SENDTO);
                it.setData(Uri.parse(result));
                startActivity(it);
            }else if(result.startsWith("mailto:")){//邮件
                Intent it = new Intent(Intent.ACTION_SENDTO);
                it.setData(Uri.parse(result));
                startActivity(it);
            }else if(result.startsWith("market://")){//应用市场
                Intent it = new Intent(Intent.ACTION_SENDTO);
                it.setData(Uri.parse(result));
                startActivity(it);
            }else{//其他的弹窗显示
                Toast.makeText(MainActivity.this, result, Toast.LENGTH_SHORT).show();
            }
        }
        //生成二维码图
        public void bt_encode(View view) {
            String text = etEncode.getText().toString().trim();
            if (TextUtils.isEmpty(text)) {
                Toast.makeText(MainActivity.this, "无可编译的字段", Toast.LENGTH_SHORT).show();
            } else {
                //      createQRCode(文本,宽,高,logo图片)
                // Bitmap qrCode = EncodingUtils.createQRCode(text, 500, 500, null);//最基本的
                //使用三目运算符判断选择框是否选中,生成是否带有logo的二维码图片
                Bitmap qrCode = EncodingUtils.createQRCode(text, 500, 500, cbIshavelogo.isChecked() ? BitmapFactory.decodeResource(getResources(), R.drawable.logo) : null);
                imgEncoderesult.setImageBitmap(qrCode);
            }
        }
    }
    
    
  • 相关阅读:
    Running MYSQL 5.7 By Bash On Ubuntu On Windows:ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)
    MiniDao FreeMarker Cache 缓存问题
    Minidao FreeMarker 数组
    插入排序实例
    Binutils工具集中的一些比较常用的工具
    交叉编译工具简介
    TQ2440触摸屏
    对IIC总线时序的一点理解以及ACK和NACK(NAK)
    UART,SPI,IIC的一点理解
    linux中vi显示中文乱码的问题
  • 原文地址:https://www.cnblogs.com/lizhanqi/p/5639826.html
Copyright © 2020-2023  润新知