二维码现在越来越火爆,使用的越发广泛,对于二维码二维码的生成与解析,有多种途径,这里我选择用google老大的ZXing。
1.要导入架包,添加依赖
2.写简单的布局
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context="com.bwie.erweima.MainActivity">
<Button
android:text="开始扫描"
android:onClick="start"
android:id="@+id/btn"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
<TextView
android:id="@+id/tv"
android:text="扫描的结果是:"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
<EditText
android:ems="20"
android:id="@+id/ed"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
<Button
android:onClick="sc"
android:text="生成二维码"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
<ImageView
android:id="@+id/iv"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
</LinearLayout>
3.代码
[java] view plain copy
public class MainActivity extends AppCompatActivity {
private TextView tv;
private EditText ed;
private ImageView iv;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
tv = findViewById(R.id.tv);
ed = findViewById(R.id.ed);
iv = findViewById(R.id.iv);
}
public void start(View v){
Intent intent = new Intent(MainActivity.this, CaptureActivity.class);
startActivityForResult(intent,1);
}
public void sc(View v){
String s = ed.toString();
Resources res = getResources();
Bitmap b = BitmapFactory.decodeResource(res,R.drawable.a_07);
Bitmap bitmap = EncodingUtils.createQRCode(s, 200, 200, b);
iv.setImageBitmap(bitmap);
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if(requestCode==1){
Bundle bundle = data.getExtras();
if (bundle == null) {
return;
}
String result = bundle.getString("result");
tv.setText("扫描的结果是:"+result);
}
}
}