您的位置:首页 > 其它

二维码的 扫描和生成

2016-08-18 12:10 232 查看
这里要引用一个第三方开源库,真的功能太强大了。

先看一下在手机上模拟的图片:

这是扫描之后的结果:







这是看了徐大神eclipse_xu的视频之后,总结的,希望以后能在以后用的上。

activity_main.xml

<?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:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
android:orientation="vertical"
tools:context="com.example.myscan.MainActivity">
<Button
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/mstart"
android:text="START SCAN"
android:textSize="18sp"
android:onClick="start"/>
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Result:"
android:textSize="20sp"
android:layout_marginTop="10dp"
/>
<TextView
android:layout_width="match_parent"
android:layout_height="30dp"
android:id="@+id/mshowText"
android:background="#9FA8DA"
android:textSize="20dp"
android:gravity="center"
android:text="hello"
android:textColor="#ee0000"
/>

</LinearLayout>


create_code.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center"
android:orientation="vertical">

<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:text="制作自己的二维码"
android:textSize="20sp" />

<EditText
android:id="@+id/inputText"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="请在这里输入文字"
android:textColorHint="#aaee00"
android:textSize="18sp" />

<Button
android:id="@+id/markCode"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:onClick="MarkYourCode"
android:text="生成二维码"
android:textSize="16sp" />

<CheckBox
android:id="@+id/addLogo"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="left"
android:text="Logo" />

<ImageView
android:id="@+id/showImg"
android:layout_width="280dp"
android:layout_height="280dp"
android:gravity="center" />
</LinearLayout>


MainActivity.java

package com.example.myscan;

import android.content.Intent;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
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 TextView mshowText;
private EditText inputtring;
private ImageView showImg;
private CheckBox addLogo;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//setContentView(R.layout.activity_main);这是扫描二维码的布局
setContentView(R.layout.create_code);//这是生成二维码的布局
mshowText = (TextView) findViewById(R.id.mshowText);
inputtring = (EditText) findViewById(R.id.inputText);
showImg = (ImageView) findViewById(R.id.showImg);
addLogo = (CheckBox) findViewById(R.id.addLogo);

}

/**
* 点击扫描二维码,CaptureActivity是一个封装好的类
*
* @param v
*/
public void start(View v) {
startActivityForResult(new Intent(MainActivity.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");
mshowText.setText(result);
}
}

/**
* 点击生成二维码
*/
public void MarkYourCode(View v) {
//libzxing这个第三方开源库中encoding包里有一个类EncodingUtils里面封装了生成二维码的方法
//二维码是一张图片,这里用BitMap接受这里传入四个参数,第一个是输入的字符串,第二个和第三个是生成二维码的长度和宽度,第四个是中间的logo图片
String inputdata = inputtring.getText().toString();
if (inputdata == null) {
Toast.makeText(MainActivity.this, "输入不能为空", Toast.LENGTH_SHORT).show();
} else {
Bitmap bitmap = EncodingUtils.createQRCode(inputdata, 300, 300, addLogo.isChecked() ? BitmapFactory.decodeResource(getResources(), R.mipmap.ic_launcher) : null);
showImg.setImageBitmap(bitmap);
}
}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: