• 二维码的生成


    我们目前用的是谷歌的zxing来生成二维码;下面呢我分别为大家介绍一下简单的二维码,中间有log的二维码,和彩色二维码;

    需要两个权限;

    <uses-permission android:name="android.permission.CAMERA"/>
    <uses-permission android:name="android.permission.VIBRATE"/>

    简单的二维码

    首先你点击的按钮去扫一扫二维码

    main.xml,这个页面可以自定义

    <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:gravity="center_horizontal"
        android:orientation="vertical"
        tools:context=".MainActivity" >
    
        <Button
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:onClick="Create2QR"
            android:text="生成二维码" />
    
        <EditText
            android:id="@+id/ednaem"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:hint="请输入要生成的文字" />
    
        <ImageView
            android:id="@+id/image"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content" />
    
    </LinearLayout>
    

      camera.xml;直接沾

    <?xml version="1.0" encoding="utf-8"?>
    <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent" >
    
        <SurfaceView
            android:id="@+id/preview_view"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center" />
    
        <com.zxing.view.ViewfinderView
            android:id="@+id/viewfinder_view"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content" />
    
        <RelativeLayout
            android:layout_width="fill_parent"
            android:layout_height="fill_parent"
            android:layout_gravity="center"
            android:orientation="vertical" >
    
            <TextView
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:layout_alignParentTop="true"
                android:layout_centerInParent="true"
                android:background="#b0e0e6"
                android:gravity="center"
                android:paddingBottom="10dp"
                android:paddingTop="10dp"
                android:text="开始扫描"
                android:textColor="@android:color/white"
                android:textSize="24sp"
                android:textStyle="bold" />
            
            
            <Button 
                android:id="@+id/openLight"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginTop="80dp"
                android:layout_centerHorizontal="true"
                android:text="开启闪光灯"
                android:textColor="@android:color/white"
                android:onClick="IfOpenLight"
                android:background="#00000000"
                android:textSize="16sp"/>
            
            <Button 
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginTop="40dp"
                android:layout_below="@id/openLight"
                android:layout_centerHorizontal="true"
                android:text="从相册中选取照片"
                android:textColor="@android:color/white"
                android:onClick="pickPictureFromAblum"
                android:background="#00000000"
                android:textSize="16sp"/>
    
            <Button
                android:id="@+id/btn_cancel_scan"
                android:layout_width="200dp"
                android:layout_height="60dp"
                android:layout_alignParentBottom="true"
                android:layout_centerInParent="true"
                android:layout_marginBottom="75dp"
                android:background="#FFA500"
                android:text="取    消"
                android:textSize="24sp"
                android:textStyle="bold" />
        </RelativeLayout>
    
    </FrameLayout>
    

      Mainactivity.java

    package com.exaple.day09rikao;
    
    import com.google.zxing.WriterException;
    import com.zxing.zxingframe.BitmapUtil;
    
    import android.os.Bundle;
    import android.app.Activity;
    import android.graphics.Bitmap;
    import android.graphics.BitmapFactory;
    import android.graphics.Canvas;
    import android.view.Menu;
    import android.view.View;
    import android.widget.EditText;
    import android.widget.ImageView;
    
    public class MainActivity extends Activity {
    
    	private ImageView image;
    	private EditText edname;
    
    	@Override
    	protected void onCreate(Bundle savedInstanceState) {
    		super.onCreate(savedInstanceState);
    		setContentView(R.layout.activity_main);
    		image = (ImageView) findViewById(R.id.image);
    		edname = (EditText) findViewById(R.id.ednaem);
    	}
    
    	@Override
    	public boolean onCreateOptionsMenu(Menu menu) {
    		// Inflate the menu; this adds items to the action bar if it is present.
    		getMenuInflater().inflate(R.menu.activity_main, menu);
    		return true;
    	}
    	// 鐢熸垚浜岀淮鐮�
    	public void Create2QR(View v) {
    		String uri = edname.getText().toString();
    		// Bitmap bitmap = BitmapUtil.create2DCoderBitmap(uri, mScreenWidth/2,
    		// mScreenWidth/2);
    		Bitmap bitmap;
    		try {
    			bitmap = BitmapUtil.createQRCode(uri, 400);
    			//鐢熸垚浜岀淮鐮乴og
    			//bitmap = addLogo(bitmap, BitmapFactory.decodeResource(getApplicationContext().getResources(), R.drawable.ke));
    
    			if (bitmap != null) {
    				image.setImageBitmap(bitmap);
    			}
    
    		} catch (WriterException e) {
    			// TODO Auto-generated catch block
    			e.printStackTrace();
    		}
    
    	}
    	
    	/**
         * 鍦ㄤ簩缁寸爜涓�棿娣诲姞Logo鍥炬�
         */
        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澶у皬涓轰簩缁寸爜鏁翠綋澶у皬鐨�/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;
            
        }
    
    
    }
    

      

  • 相关阅读:
    nyoj 16 矩形嵌套
    nyoj 44 子串和
    nyoj 448 寻找最大数
    nyoj 14 会场安排问题
    hdoj 1008 Elevator
    bzoj1588
    bzoj3224
    bzoj1503
    bzoj1834
    bzoj1066
  • 原文地址:https://www.cnblogs.com/jsonfan/p/5406991.html
Copyright © 2020-2023  润新知