当前位置:首页 » 安卓系统 » android二维码实现

android二维码实现

发布时间: 2022-08-02 02:58:57

A. android开发中怎么实现扫描二维码

http://blog.csdn.net/xiaanming/article/details/10163203

B. Android 怎么实现扫描二维码功能

把那下载链接url作为制作二维码的内容就行! 制作二维码的方法:在网络搜二维码,有很多框应用,直接贴url网址生产二维码就行

C. Android二维码识别源码,可有多种实现方式

这里简单介绍一下ZXing库。ZXing是一个开放源码的,用Java实现的多种格式的1D/2D条码图像处理库,它包含了联系到其他语言的端口。Zxing可以实现使用手机的内置的摄像头完成条形码的扫描及解码。该项目可实现的条形码编码和解码。目前支持以下格式:UPC-A,UPC-E、EAN-8,EAN-13、39码、93码。ZXing是个很经典的条码/二维码识别的开源类库,以前在功能机上,就有开发者使用J2ME运用ZXing了,不过要支持JSR-234规范(自动对焦)的手机才能发挥其威力。
下面是ZXing的demo运行,我这里创建了一个二维码,内容是我博客的网址,大伙可以用微信的扫一扫功能,试一下。就可以直接打开我博客。

2、ZXing库主要类
下面给大家介绍一下,ZXing库里面主要的类以及这些类的作用:
CaptureActivity。这个是启动Activity 也就是扫描器。
CaptureActivityHandler 解码处理类,负责调用另外的线程进行解码。
DecodeThread 解码的线程。
com.google.zxing.client.android.camera 包,摄像头控制包。
ViewfinderView 自定义的View,就是我们看见的拍摄时中间的框框了。

3、使用ZXing生成二维码
下面针对二维码生成和解析做个简单介绍,至于详细的使用方法,建议大家还是自己看看源码,使用起来很简单,不过这个开源项目的代码,值得好好看看。首先给出二维码生成的方法:
View Code
上面就是二维码生成的方法接口,如果你只是使用者方法,很简单,只要传入一个URL即可,就像我截图里面一样,传入一个合法的网址即可。或者像现在一些移动APP的推广,把APP下载地址转为二维码,只要扫一下就可以下载相应的APP。这个也是目前比较流行的APP的推广方式。
上面代码做的事情不多,主要是调用ZXing库里面QRCodeWriter().encode的方法对我们传进去的URL进行编码,具体如何编码,这个我这里就不详细说,有兴趣可以看ZXing的源码。文章最后会给出ZXing的源码和例子代码。

4、扫描二维码获取信息
扫描获取二维码信息的工作稍微复杂一些,主要是需要编写Camera的使用,这个跟我们一般使用Camera一样,需要使用Surfaceview作为预览,这一部我这里就不说了,这个应该不是太复杂。对于使用过Camera做预览的朋友,应该是挺简单的事情。获取二维码数据的关键处理是在Camera的自动对焦回调函数哪里,调用ZXing的解码接口。
View Code
这里稍微多说一句,由于解码需要一定时间,所以ZXing的解码调用,都是使用了Handler作为线程通信机制,解码的工作都是放在独立线程里面使用的,如果你直接在主线程解码,恐怕ANR问题是避免不了。
View Code
上面是解码的线程处理不同状态的时候需要注意的地方,我们这里只看获取图像成功的地方,成功获取图片解码的实在DecodeThread里面实现,DecodeThread里面解码成功后,会把数据序列化,然后保存到Bundle里面,我们可以直接通过Bundle的序列化,获取到图片数据。同时会把解码后的结果保存到MSG里面,然后就可以根据实际情况进行处理,例如上面代码,解码成功后,会调用一个处理函数:
View Code
上面就是整个二维码的解码流程,里面因为涉及很多Camera的使用,所以你如果需要使用二维码识别,需要注意一下你的程序需要申请下面的权限,一般的Camera使用以及Camera的自动对焦等。
View Code
5、结语
上面就是生成和识别二维码的关键流程和代码,有兴趣的朋友可以自己查看ZXing的源码,里面有很多图像分析的知识可以学习。具体使用也可以参考我下面给出的Demo。二维码对于现在移动开发来说很是很常用的技术,所以有空可以了解一下,说不定什么时候就用上了。另外,ZXing库除了二维码外,其实对于条形码也是支持的,只是我这里没有介绍。有需要的自己去看看源码即可。
转载

D. android开发 如何实现扫描本地二维码图片

开源的二维码扫描库主要有zxing和zbar,zbar在iPos平台上应用比较成熟,而在Android平台上主流还是用zxing库,因此这里主要讲述如何利用zxing进行二维码开发。

  • 如何将zxing的Android源码导入工程。

    • 在导入zxing的android源码之前,先去官方下载zxing的源码http://code.google.com/p/zxing/downloads/list。

    • 这里以1.6版本为例,zxing 1.6源码结构如下:


      <?xmlversion="1.0"encoding="utf-8"?>
      <manifestxmlns:android="http://schemas.android.com/apk/res/android"
      package="com.qrcode"
      android:versionCode="1"
      android:versionName="1.0">
      <uses-sdkandroid:minSdkVersion="7"/>

      <uses-permissionandroid:name="android.permission.VIBRATE"/><!--震动权限-->
      <uses-permissionandroid:name="android.permission.CAMERA"/>
      <uses-featureandroid:name="android.hardware.camera"/><!--使用照相机权限-->
      <uses-featureandroid:name="android.hardware.camera.autofocus"/><!--自动聚焦权限-->
      <applicationandroid:icon="@drawable/icon"android:label="@string/app_name">
      <activityandroid:name=".MainActivity"
      android:label="@string/app_name">
      <intent-filter>
      <actionandroid:name="android.intent.action.MAIN"/>
      <categoryandroid:name="android.intent.category.LAUNCHER"/>
      </intent-filter>
      </activity>

      <!--隐藏键盘--><!--全屏-->
      <activity
      android:configChanges="orientation|keyboardHidden"
      android:name="com.zxing.activity.CaptureActivity"
      android:screenOrientation="portrait"
      android:theme="@android:style/Theme.NoTitleBar.Fullscreen"
      android:windowSoftInputMode="stateAlwaysHidden">
      </activity>
      </application>
      </manifest>

    • 这种情况大致就可以实现二维码扫描了,想细化的话,还可以多看看安卓二维码扫描开发相关的教程

E. android 长按识别二维码怎么实现

设置LongClick事件,关于二维码的可以到网上搜第三方控件

F. android怎样生成条码和二维码

一、问题描述 在开发中需要将信息转换为二维码存储并要求带有公司的logo,我们知道Google的Zxing开源项目就很好的帮助我们实现条形码、二维码的生成和解析,但带有logo的官网并没有提供demo,下面就通过实例看看如何实现以及Zxing的使用。 二、案例介绍 1、案例运行效果 2、案例准备工作 在项目中加入jar,只需加入core/zxing/zxing/ 三、Zxing主要组件 1、BarcodeFormat 定义了不同的二进制编码方式,取值如下 EAN_13条形码,共计13位代码,比较常见,如商品上的包装上的都是这种条形码 CODE_QR二维码(矩阵码),比条形码存在更多信息,当下比较流行 CODE_128条形码 可表示可表示从 ASCII 0 到ASCII 127 共128个字符,用于企业管理,生产流程控制 CODE_39条形码,编制简单只接受如下43个字符 2、MultiFormatWriter 主要包含一个 encode()方法,可实现产生编码(条形、二维码) BitMatrix encode(String contents, BarcodeFormat format, int width, int height,Hashtable hints)方法 参数: contents:要编码的内容 format:编码格式(条形、二维) width,height:生成码的大小 hints:包含EncodeHintType(编码提示类型)信息的集合,主要设置字符编码,比如支持汉字的utf-8,如下: Hashtable hst = new Hashtable(); hst.put(EncodeHintType.CHARACTER_SET, “UTF-8″); 返回值:BitMatrix 二维矩阵点 3、BitMatrix BitMatrix :表现为一个二维矩阵,x表示列的位置,y表示行的位置,循序从左上角开始,一列一列排列(先x后y) 主要方法: getWidth():返回矩阵的宽度 getHeight():返回矩阵的高度 boolean get(x,y) :非常重要的方法,实现根据给定的x,y判断该位置是否有黑块 在产生二维码的应用中就是通过这个方法进行判断,然后把有黑块的点记录下来,使用Bitmap的setPixels()方法生成图形,详解案例的createCode()方法中的代码 四、完整代码 public class MainActivity extends Activity { private EditText etCompany; private EditText etPhone; private EditText etEmail; private EditText etWeb; private Bitmap logo; private static final int IMAGE_HALFWIDTH = 40;//宽度值,影响中间图片大小 @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //获得资源图片,可改成获取本地图片或拍照获取图片 logo=BitmapFactory.decodeResource(super.getResources(),R.drawable.y014); etCompany =(EditText) findViewById(R.id.etCompany); etPhone=(EditText) findViewById(R.id.etPhone); etEmail =(EditText) findViewById(R.id.etEmail); etWeb =(EditText) findViewById(R.id.etWeb); findViewById(R.id.but).setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub String company=etCompany.getText().toString().trim() ; String phone =etPhone .getText().toString().trim() ; String email = etEmail.getText().toString().trim() ; String web = etWeb.getText().toString().trim() ; //二维码中包含的文本信息 String contents= "BEGIN:VCARD/nVERSION:3.0/nORG:"+company+"/nTEL:"+phone+"/nURL:"+web+"/nEMAIL:"+email+"/nEND:VCARD"; try { //调用方法createCode生成二维码 Bitmap bm=createCode(contents,logo,BarcodeFormat.QR_CODE); ImageView img=(ImageView)findViewById(R.id.imgCode) ; //将二维码在界面中显示 img.setImageBitmap(bm); } catch (WriterException e) { // TODO Auto-generated catch block e.printStackTrace(); } } }); } /** * 生成二维码 * @param string 二维码中包含的文本信息 * @param mBitmap logo图片 * @param format 编码格式 * @return Bitmap 位图 * @throws WriterException */ public Bitmap createCode(String string,Bitmap mBitmap, BarcodeFormat format) throws WriterException { Matrix m = new Matrix(); float sx = (float) 2 * IMAGE_HALFWIDTH / mBitmap.getWidth(); float sy = (float) 2 * IMAGE_HALFWIDTH / mBitmap.getHeight(); m.setScale(sx, sy);//设置缩放信息 //将logo图片按martix设置的信息缩放 mBitmap = Bitmap.createBitmap(mBitmap, 0, 0, mBitmap.getWidth(), mBitmap.getHeight(), m, false); MultiFormatWriter writer = new MultiFormatWriter(); Hashtable hst = new Hashtable(); hst.put(EncodeHintType.CHARACTER_SET, "UTF-8");//设置字符编码 BitMatrix matrix = writer.encode(string, format, 400, 400, hst);//生成二维码矩阵信息 int width = matrix.getWidth();//矩阵高度 int height = matrix.getHeight();//矩阵宽度 int halfW = width / 2; int halfH = height / 2; int[] pixels = new int[width * height];//定义数组长度为矩阵高度*矩阵宽度,用于记录矩阵中像素信息 for (int y = 0; y < height; y++) {//从行开始迭代矩阵 for (int x = 0; x < width; x++) {//迭代列 if (x > halfW - IMAGE_HALFWIDTH && x < halfW + IMAGE_HALFWIDTH && y > halfH - IMAGE_HALFWIDTH && y < halfH + IMAGE_HALFWIDTH) {//该位置用于存放图片信息 //记录图片每个像素信息 pixels[y * width + x] = mBitmap.getPixel(x - halfW + IMAGE_HALFWIDTH, y - halfH + IMAGE_HALFWIDTH); } else { if (matrix.get(x, y)) {//如果有黑块点,记录信息 pixels[y * width + x] = 0xff000000;//记录黑块信息 } } } } Bitmap bitmap = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888); // 通过像素数组生成bitmap bitmap.setPixels(pixels, 0, width, 0, 0, width, height); return bitmap; } }

G. 在android中使用googlezxing实现二维码

先打开本地下载,复制文件,拷贝到他们的项目中即可。
首先我们打开google的zxing的地址,googledezxing地址(本地下载),打开之后我们会看到界面,将这个文件下载我们本地,下载好之后我们需要复制android文件下的几个类,根据这些类名称在android文件下找到这些类,拷贝到他们的项目中,拷贝之后会有报错,我们需要将android文件下的res中的文件也拷贝到我们的项目中。完成之后我们还要依赖zxing的核心类库,当我们的项目不报错的时候,就可以先实现扫描二维码和生成二维码。

H. android怎么实现扫描矩形二维码

主要实现步骤:
导入libzxing这个模块

ZXing源代码很大,功能也很多,这里只是抽取了其中的一部分代码整合到了一起
扫描
在main_activity中添加一个Button和一个TextView 点击Button后开始调照相机功能,扫描二维码
TextView会显示扫描后的结果

<Button
android:text="Strat Scan"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:onClick="scan"/>
<TextView
android:id="@+id/tv_showResult"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Hello World!"/>

在ActivityMain中分别初始化这两个控件

private TextView mTextView;
mTextView= (TextView) this.findViewById(R.id.tv_showResult);
//扫描二维码
//
public void scan(View view) {
startActivityForResult(new Intent(this, CaptureActivity.class),0);
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (resultCode==RESULT_OK){
Bundle bundle = data.getExtras();
if (bundle != null) {
String result=bundle.getString("result");
mTextView.setText(result);
}
}
}

I. Android 二维码扫描怎样实现第二次扫描

在扫描出现问题事弹出dialog,当用户点击确定按钮后重新开始扫描。

private void showErrorDialog() {
closeCamera();
viewfinderView.setVisibility(View.GONE);
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setTitle(getString(R.string.app_name));
builder.setMessage("扫描确认出错,请重新扫描柜子上的二维码!");
builder.setPositiveButton(android.R.string.ok, new OnClickListener() {

@Override
public void onClick(DialogInterface dialog, int which) {
restartCamera();
}
});
builder.setOnCancelListener(new OnCancelListener() {

@Override
public void onCancel(DialogInterface dialog) {
CaptureCodeActivity.this.finish();
}
});
builder.show();
}

热点内容
python在服务器端开发 发布:2024-05-20 03:31:17 浏览:65
编程大冒险 发布:2024-05-20 03:19:27 浏览:636
阿瓦隆九个人怎么配置 发布:2024-05-20 02:57:47 浏览:757
sqlnotinexcept 发布:2024-05-20 02:53:10 浏览:341
激光切割编程教程难吗 发布:2024-05-20 02:49:57 浏览:925
sqlbool 发布:2024-05-20 02:49:57 浏览:721
如何把文件压缩到最小 发布:2024-05-20 02:25:03 浏览:452
javash脚本文件 发布:2024-05-20 01:43:11 浏览:830
安卓手机如何登陆刺激战场国际服 发布:2024-05-20 01:29:02 浏览:861
服务器核库怎么找 发布:2024-05-20 01:28:14 浏览:375