Android - 二维码扫一扫
1、教学视频:慕课网 http://www.imooc.com/note/648?sort=last
2、第三方包ZXing实现二维码扫描解析与生成功能;
3、Android Studio 项目目录:1、app 2、libzxing,app引用libzxing Module;

4、源代码:
解析二维码: startActivityForResult(new Intent(MainActivity.this, CaptureActivity.class), 0); //0:requestCode
protected void onActivityResult(int requestCode, int resultCode, Intent data) {...}
生成二维码: EncodingUtils.createQRCode("codeText", 500, 500, logoBitmap) ;
public class MainActivity extends AppCompatActivity {
private TextView qrCodeResult;
private EditText qrCodeEditText;
private ImageView qrCodeImageView;
private CheckBox useLogo;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
qrCodeResult = (TextView) findViewById(R.id.qrCodeResult);
qrCodeEditText = (EditText) findViewById(R.id.qrCodeText);
qrCodeImageView = (ImageView) findViewById(R.id.qrCodeImageView);
useLogo = (CheckBox) findViewById(R.id.chk_useLogo);
}
public void scan(View view) {
startActivityForResult(new Intent(MainActivity.this, CaptureActivity.class), 0); //0:requestCode
}
public void make(View view) {
String qrcodeText = qrCodeEditText.getText().toString();
if (qrcodeText.equals("")) {
Toast.makeText(MainActivity.this, "输入不能为空", Toast.LENGTH_SHORT).show();
return;
}
Bitmap qrcodeBitmap = EncodingUtils.createQRCode(qrcodeText, 500, 500,
useLogo.isChecked() ? BitmapFactory.decodeResource(getResources(), R.mipmap.ic_launcher) : null);
qrCodeImageView.setImageBitmap(qrcodeBitmap);
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (resultCode == RESULT_OK && requestCode == 0) {
Bundle bundle = data.getExtras();
qrCodeResult.setText(bundle.getString("result"));
}
}
}
<?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:orientation="vertical"
tools:context="com.yizhui.qrcode.MainActivity">
<Button
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="@string/scan_qrcode"
android:onClick="scan"/>
<TextView
android:id="@+id/qrCodeResult"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="10dp"
/>
<EditText
android:id="@+id/qrCodeText"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
<Button
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="@string/make_qrcode"
android:onClick="make"/>
<CheckBox
android:id="@+id/chk_useLogo"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="@string/use_logo"/>
<ImageView
android:id="@+id/qrCodeImageView"
android:layout_gravity="center_horizontal"
android:layout_margin="20dp"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
</LinearLayout>
浙公网安备 33010602011771号