<1>

布局只有2个按钮,实现生成二维码和解析二维码

    <Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:onClick="create"
android:text="生成二維碼"
android:id="@+id/button" />
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:onClick="parse"
android:text="解析二维码"
android:id="@+id/button2" />

2.

package myapplication.com.myapplication;

import android.content.Intent;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.net.Uri;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View; import com.google.zxing.BarcodeFormat;
import com.google.zxing.Binarizer;
import com.google.zxing.BinaryBitmap;
import com.google.zxing.LuminanceSource; import com.google.zxing.RGBLuminanceSource;
import com.google.zxing.Result;
import com.google.zxing.common.BitMatrix;
import com.google.zxing.common.HybridBinarizer;
import com.google.zxing.qrcode.QRCodeReader;
import com.google.zxing.qrcode.QRCodeWriter; import org.json.JSONObject; import java.io.FileOutputStream; public class MainActivity extends AppCompatActivity { @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
public void create(View v){
//构建二维码内容的结构的对象
QRCodeWriter writer=new QRCodeWriter();
//构造内存空间
String url="http://www.baidu.com"; int width=;
int height=;
try {
JSONObject value=new JSONObject();
value.put("url","http://www.baidu.com");
value.put("tel","");
value.put("account","");
url=value.toString();
BitMatrix matrix = writer.encode(url, BarcodeFormat.QR_CODE, width, height);
//数组
int ms[]=new int[width*height];
//给数组元素赋值
for(int y=;y<height;y++){
for(int x=;x<width;x++){
if (matrix.get(x,y)){
ms[y*width+x]=0xff000000;
}else{
ms[y*width+x]=0xffffffff;
}
}
}
//缓冲区
Bitmap bitmap = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888);
bitmap.setPixels(ms,,width,,,width,height);
FileOutputStream out=new FileOutputStream("/sdcard/abcd.png");
//压缩并保存
bitmap.compress(Bitmap.CompressFormat.PNG,,out);
} catch (Exception e) {
e.printStackTrace();
}
}
//解析二维码
public void parse(View v){
Bitmap map= BitmapFactory.decodeFile("/sdcard/abcd.png");
int width = map.getWidth();
int height = map.getHeight();
int ps[]=new int[width*height];
map.getPixels(ps,,width,,,width,height);
LuminanceSource src=new RGBLuminanceSource(width,height,ps);
Binarizer rizer=new HybridBinarizer(src);
BinaryBitmap bbmap=new BinaryBitmap(rizer);
QRCodeReader read=new QRCodeReader();
try {
Result result = read.decode(bbmap);
//根据获取到的文本内容进行下一步处理,这里是打开网址
String value=result.getText();
JSONObject msg=new JSONObject(value);
System.out.println("--"+msg.getString("account"));
Intent it=new Intent(Intent.ACTION_VIEW);
it.setData(Uri.parse(msg.getString("url")));
startActivity(it);
} catch (Exception e) {
e.printStackTrace();
}
}
}

3. 加入的jar包和权限

jar包地址:链接:http://pan.baidu.com/s/1crGxL8 密码:f1kp

  <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.INTERNET"/>

<2> 实现扫描二维码功能

1.加入权限

 <uses-permission android:name="android.permission.CAMERA"/>
<uses-permission android:name="android.permission.INTERNET"/>

2.ScannerActivity

package myapplication.com.myerweima;

import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle; import com.google.zxing.Result; import me.dm7.barcodescanner.zxing.ZXingScannerView; public class ScannerActivity extends AppCompatActivity implements ZXingScannerView.ResultHandler {
private ZXingScannerView mZXingScannerView; @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
mZXingScannerView = new ZXingScannerView(this); // 将ZXingScannerView作为布局
setContentView(mZXingScannerView);
} @Override
protected void onResume() {
super.onResume();
mZXingScannerView.setResultHandler(this); // 设置处理结果回调
mZXingScannerView.startCamera(); // 打开摄像头
} @Override
protected void onPause() {
super.onPause();
mZXingScannerView.stopCamera(); // 活动失去焦点的时候关闭摄像头
} @Override
public void handleResult(Result result) { // 实现回调接口,将数据回传并结束活动
Intent data = new Intent();
data.putExtra("text", result.getText());
setResult(RESULT_OK, data);
finish();
}
}

3. 主布局,一个button一个textview点击btn扫描,扫描后显示在textView上

 <Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="扫描"
android:id="@+id/bt"
android:textColor="#000000"
/>
<TextView
android:id="@+id/text"
android:layout_marginTop="30dp"
android:layout_below="@+id/bt"
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:textColor="#000000"
android:text="11"/>

4.

package myapplication.com.myerweima;

import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TextView; public class MainActivity extends AppCompatActivity {
TextView textView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button bt= (Button) findViewById(R.id.bt);
textView= (TextView) findViewById(R.id.text);
bt.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
scanCode();
}
});
} public void scanCode(){
startActivityForResult(new Intent(this, ScannerActivity.class), 1);
} @Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (resultCode == RESULT_OK){
textView.setText(data.getStringExtra("text")); // 显示识别到的文字 }
}
}

5.gradle

  compile fileTree(include: ['*.jar'], dir: 'libs')
testCompile 'junit:junit:4.12'
compile 'com.android.support:appcompat-v7:23.3.0'
compile 'com.google.zxing:zxing-parent:3.3.0'
compile 'me.dm7.barcodescanner:zxing:1.9'

Android二维码的生成,解析以及扫描功能的更多相关文章

  1. Android zxing 解析二维码,生成二维码极简demo

    zxing 官方的代码很多,看起来很费劲,此demo只抽取了有用的部分,实现了相机预览解码,解析本地二维码,生成二维码三个功能. 简化后的结构如下: 废话少说直接上代码: BaseDecodeHand ...

  2. Android 二维码 生成和识别(附Demo源码)

    今天讲一下目前移动领域很常用的技术——二维码.现在大街小巷.各大网站都有二维码的踪迹,不管是IOS. Android.WP都有相关支持的软件.之前我就想了解二维码是如何工作,最近因为工作需要使用相关技 ...

  3. Android 二维码 生成和识别(转)

    原博客地址 :http://www.cnblogs.com/weixing/archive/2013/08/28/3287120.html 还有几个写的也可以参考一下:http://www.itnos ...

  4. Android实例-实现扫描二维码并生成二维码(XE8+小米5)

    相关资料: 第三方资料太大没法写在博文上,请下载CSDN的程序包. 程序包下载: http://download.csdn.net/detail/zhujianqiangqq/9657186 注意事项 ...

  5. 【转】Android 二维码 生成和识别(附Demo源码)--不错

    原文网址:http://www.cnblogs.com/mythou/p/3280023.html 今天讲一下目前移动领域很常用的技术——二维码.现在大街小巷.各大网站都有二维码的踪迹,不管是IOS. ...

  6. Java 条形码 二维码 的生成与解析

    Barcode简介 Barcode是由一组按一定编码规则排列的条,空符号,用以表示一定的字符,数字及符号组成的,一种机器可读的数据表示方式. Barcode的形式多种多样,按照它们的外观分类: Lin ...

  7. ZXing二维码的生成和解析

    Zxing是Google提供的关于条码(一维码.二维码)的解析工具,提供了二维码的生成与解析的方法, 现在我简单介绍一下使用Java利用Zxing生成与解析二维码 注意: 二维码的生成需要借助辅助类( ...

  8. android 二维码生成+扫描

    android 二维码生成+扫描 1.在Android应用当中,很多时候都要用到二维码扫描,来避免让用户手动输入的麻烦. Google官方自己推出了一个二维码开源项目:ZXing库. 2.这里简单介绍 ...

  9. Android二维码开源项目zxing用例简化和生成二维码、条形码

    上一篇讲到:Android二维码开源项目zxing编译,编译出来后有一个自带的測试程序:CaptureActivity比較复杂,我仅仅要是把一些不用的东西去掉,用看起来更方便,二维码和条形码的流行性自 ...

随机推荐

  1. Socket通信综合示例

    1用户注册客户单选择'用户注册',提示要输入用户名,密码,确认密码,校验成功后将用户信息保存到数据库,并提示数据库注册成功,请登录2用户登录客户端选择'登录以后'后,提示输入用户名和密码,验证成功则提 ...

  2. NC6开发配置流程

    1.功能注册 2.菜单注册 3.单据类型管理 4.单据模板初始化 5.查询模板初始化 6.功能节点默认模板设置 7.编码对象注册.编码规则定义

  3. 在 Sublime Text 3 中配置编译和运行 Java 程序

    参考网址:http://www.open-open.com/lib/view/open1388105023765.html 1. 设置 java 的 PATH 环境变量 2. 创建批处理或 Shell ...

  4. ASP.NET-DataList控件-DataList嵌套

    DataList是ASP.NET的数据控件之一,在使用时要对其进行数据绑定.但是使用过程中难免会出现需要根据已绑定表中的某列数据来作进一步的查询和显示,就需要使用DataList嵌套来解决此类问题. ...

  5. Mysql主从架构的复制

    复制类型 (1)基于语句的复制:  在主服务器上执行的SQL语句,在从服务器上执行同样的语句.MySQL默认采用基于语句的复制,效率比较高.  一旦发现没法精确复制时,会自动选着基于行的复制. (2) ...

  6. Sql 2008 的常用函数

    1.LEN 函数:返回数据的长度 ') 返回:8 2.ASCII函数:返回字符串最左边的ascii值 SELECT ASCII('abc') 返回:97 3.LEFT函数:从左边开始截取指定长度的字符 ...

  7. oracle--子查询--bai

    -- 1 创建视图 show_max_sal_name_view 显示工资最高的员工姓名及他的工资 create or replace view show_max_sal_name_view as s ...

  8. 怎么把电脑的word,txt,pdf等文件拷贝到iPhone手机上

    之前都是用的qq什么的传文件,电脑发送到qq上.今天尝试了一下用itunes把电脑上的文件夹弄到iPhone上. 1.首先,打开电脑的偏好设置,找到共享如图: 打开它,勾选文件共享. 2.把手机和电脑 ...

  9. C# 数据批量插入到数据库SqlBulkCopy(源数据类型:List<T> Or DataTable)

      /*_____________________ List<T>类型数据 To Sql_______________________________*/ /// <summary& ...

  10. coreseek增量索引合并

    重建主索引和增量索引: [plain] view plain copy /usr/local/coreseek/bin/indexer--config /usr/local/coreseek/etc/ ...