今天没事写了一下二维码的扫描与生成,用的是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