今天没事写了一下二维码的扫描与生成,用的是google的ZXing
首先要把依赖包导入项目里面,
然后生成依赖包
首页的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:id="@+id/activity_main"
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"
tools:context="com.test.wjy.testzxing.MainActivity"
android:orientation="vertical">
<Button
android:id="@+id/btn_scan"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="扫描二维码" />
<TextView
android:id="@+id/tv_scanResult"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
<Button
android:id="@+id/btn_create"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="20dp"
android:text="生成二维码" />
</LinearLayout>
MainActivity.class类文件 主要为二维码的扫描
public class CreateEWMActivity extends AppCompatActivity {
private EditText et_input;//输入框
private Button btn_normal;//生成普通二维码
private Button btn_logo;//生成带LOGO的二维码
private ImageView image_content;//生成的二维码图片
private Bitmap bitmap;
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_create);
initView();
}
private void initView(){
et_input = (EditText) findViewById(R.id.et_input);//输入框
btn_normal = (Button) findViewById(R.id.btn_normal);//生成普通二维码
btn_normal.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
String content = et_input.getText().toString();
if (TextUtils.isEmpty(content)){
Toast.makeText(CreateEWMActivity.this,"您输入的内容为空!",Toast.LENGTH_SHORT).show();
return;
}
et_input.setText("");
bitmap = CodeUtils.createImage(content,400,400,null);
image_content.setImageBitmap(bitmap);
}
});
btn_logo = (Button) findViewById(R.id.btn_logo);//生成带LOGO的二维码
btn_logo.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
String content = et_input.getText().toString();
if (TextUtils.isEmpty(content)){
Toast.makeText(CreateEWMActivity.this,"您输入的内容为空!",Toast.LENGTH_SHORT).show();
return;
}
et_input.setText("");
bitmap = CodeUtils.createImage(content,400,400, BitmapFactory.decodeResource(getResources(),R.mipmap.logo));
image_content.setImageBitmap(bitmap);
}
});
image_content = (ImageView) findViewById(R.id.image_content);//生成的二维码图片
}
}
生成二维码的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:orientation="vertical">
<EditText
android:id="@+id/et_input"
android:layout_width="match_parent"
android:layout_height="40dp" />
<Button
android:id="@+id/btn_normal"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="20dp"
android:text="生成普通二维码"
android:textSize="14sp"/>
<Button
android:id="@+id/btn_logo"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="20dp"
android:text="生成带Logo二维码"
android:textSize="14sp"/>
<ImageView
android:id="@+id/image_content"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:layout_marginTop="20dp" />
</LinearLayout>
生成二维码的类文件
public class CreateEWMActivity extends AppCompatActivity {
private EditText et_input;//输入框
private Button btn_normal;//生成普通二维码
private Button btn_logo;//生成带LOGO的二维码
private ImageView image_content;//生成的二维码图片
private Bitmap bitmap;
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_create);
initView();
}
private void initView(){
et_input = (EditText) findViewById(R.id.et_input);//输入框
btn_normal = (Button) findViewById(R.id.btn_normal);//生成普通二维码
btn_normal.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
String content = et_input.getText().toString();
if (TextUtils.isEmpty(content)){
Toast.makeText(CreateEWMActivity.this,"您输入的内容为空!",Toast.LENGTH_SHORT).show();
return;
}
et_input.setText("");
bitmap = CodeUtils.createImage(content,400,400,null);
image_content.setImageBitmap(bitmap);
}
});
btn_logo = (Button) findViewById(R.id.btn_logo);//生成带LOGO的二维码
btn_logo.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
String content = et_input.getText().toString();
if (TextUtils.isEmpty(content)){
Toast.makeText(CreateEWMActivity.this,"您输入的内容为空!",Toast.LENGTH_SHORT).show();
return;
}
et_input.setText("");
bitmap = CodeUtils.createImage(content,400,400, BitmapFactory.decodeResource(getResources(),R.mipmap.logo));
image_content.setImageBitmap(bitmap);
}
});
image_content = (ImageView) findViewById(R.id.image_content);//生成的二维码图片
}
}
除了这些还需要在Application的
public void onCreate()方法里加一句
ZXingLibrary.initDisplayOpinion(this);
还需要加上下面的权限
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.VIBRATE" />
以上的过程就很容易的完成了二维码的生成与扫描。
源码下载地址:http://download.csdn.net/detail/u013184970/9700375