今天沒事寫了一下二維碼的掃描與生成,用的是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