二维码简介
二维条码/二维码(2-dimensional bar code)是用某种特定的几何图形按一定规律在平面(二维方向上)分布的黑白相间的图形记录数据符号信息的;
在代码编制上巧妙地利用构成计算机内部逻辑基础的“0”、“1”比特流的概念,使用若干个与二进制相对应的几何形体来表示文字数值信息,通过图象输入设备或光电扫描设备自动识读以实现信息自动处理
它具有条码技术的一些共性:每种码制有其特定的字符集;每个字符占有一定的宽度;具有一定的校验功能等。同时还具有对不同行的信息自动识别功能、及处理图形旋转变化点。
二维码原理
二维码本质上是一段字符串,可以是一个网页的链接,也可以是一句话,电话号码,名片等
分析返回结果,对结果进行相应处理
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
//扫一扫按钮点击
public void startScan(View view) {
//跳到扫描二维码页面
Intent intent = new Intent(this, CaptureActivity.class);
//startActivity(intent);
//跳液面需要返回一个结果
startActivityForResult(intent, 0);
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (resultCode == RESULT_OK) {
//获取解析的数据
String text = data.getStringExtra("text");
System.out.println("MainActivity:" + text);
handleResult(text);
}
}
//处理扫描结果
private void handleResult(String text) {
//网址: http://www.baidu.com; https://www.xxx.com
//tel:110
//smsto:13512345678
//mailto:xx@163.com
//market://
//普通字符串
if (TextUtils.isEmpty(text)) {
return;
}
if (text.startsWith("http://") || text.startsWith("https://")) {
//网址
//跳到浏览器加载网页
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setData(Uri.parse(text));
startActivity(intent);
} else if (text.startsWith("tel:")) {
//跳到打电话页面
Intent intent = new Intent(Intent.ACTION_DIAL);
intent.setData(Uri.parse(text));
startActivity(intent);
} else if (text.startsWith("smsto:")) {
//跳到发短信页面
Intent intent = new Intent(Intent.ACTION_SENDTO);
intent.setData(Uri.parse(text));
startActivity(intent);
} else if (text.startsWith("mailto:")) {
//跳到发邮件页面
Intent intent = new Intent(Intent.ACTION_SENDTO);
intent.setData(Uri.parse(text));
startActivity(intent);
} else if (text.startsWith("market://")) {
//跳到应用市场页面
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setData(Uri.parse(text));
startActivity(intent);
} else {
//用弹窗展示信息
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setTitle("扫描结果:");//标题
builder.setMessage(text);//内容
builder.setPositiveButton("确定", null);
builder.show();
}
}
}
制作带有图片生成二维码
/**
* 制作带有图片生成二维码
*
*