美文网首页Android Development
app中的扫码功能实现

app中的扫码功能实现

作者: 喜欢书的女孩 | 来源:发表于2017-01-02 22:49 被阅读4139次
    2017-3-7

    版权声明:本文为博主原创文章,转载请说明出处。

    app中需要实现扫码功能

    最近在做一个app,之前做过扫描二维码的功能。然而今天突然想要做这样一个功能时,完全想不起来当时是怎么实现的。我翻看自己的笔记本,发现太多了各种笔记了,没找到,我不知道是在其他的笔记本还是我压根没记。这时我意识到写博客对一个程序员的重要性,以后还是要养成写博客的习惯才好。

    1.加载二维码开源包

    compile 'cn.yipianfengye.android:zxing-library:2.0'
    compile 'com.google.zxing:core:3.2.1'
    

    2.在activity

    ZXingLibrary.initDisplayOpinion(this);
    btn_start_scan.setOnClickListener(new View.OnClickListener() {    
            @Override    
          public void onClick(View v) {        
                if (preferences.getBoolean("firstStart", true)) 
                      {            
                            L.i(LOGTAG, "扫码");            
                            editor = preferences.edit();            
                            editor.putBoolean("firstStart", false);            
                            editor.apply();            
                            Intent intent1 = new Intent(StartActivity.this, CaptureActivity.class);            
                            startActivityForResult(intent1, REQUEST_CODE);        
                    } 
            else 
                  {            
                        L.i(LOGTAG, "主页");            
                        Intent intent = new Intent(StartActivity.this,MainPageActivity.class);            
                        startActivity(intent);            
                        finish();        
                  }    
          }
    });
    
    @Override
    public void onActivityResult(int requestCode, int resultCode, final Intent data)
     {    
            /**     * 处理二维码扫描结果     */    
       if (requestCode == REQUEST_CODE) 
            {        
                    //处理扫描结果(在界面上显示)        
                      if (null != data)
                             {            
                              Bundle bundle = data.getExtras();            
                                    if (bundle == null) 
                                              {                
                                                  return;            
                                              }            
                                    if (bundle.getInt(CodeUtils.RESULT_TYPE) == CodeUtils.RESULT_SUCCESS)            
                                              {                
                                                    result = bundle.getString(CodeUtils.RESULT_STRING);               
                                                    L.i("扫描结果:",result);            
                                                  }            
                                      else if (bundle.getInt(CodeUtils.RESULT_TYPE) == CodeUtils.RESULT_FAILED) 
                                              {                
                                                   Toast.makeText(getApplicationContext(), "解析二维码失败", Toast.LENGTH_SHORT).show();            
                                                }        
                                    }    
                      }
    }
    

    3.添加调用摄像头的权限

    <uses-feature android:name="android.hardware.camera" />
    <uses-feature android:name="android.hardware.camera.autofocus" />
    

    4.做完以上三步,运行,打开手机的设置权限,允许使用摄像头,成功扫描二维码。

    5.我们来看看二维码的原理

    //二维码算法
    //两个for循环是图片横列扫描的结果
    for(int y=0;y<QR_HEIGHT;y++)
    {
          for(int x;x<QR_WIDTH;x++)
              {
                    if(bitMatri.get(x,y))
                        {
                              pixels[y*QR_WIDTH+x]=oxff000000;
                        }
                  else
                      {
                              pixels[y*QR_WIDTH+x]=oxffffffff; 
                      }
              }
    }
    

    相关文章

      网友评论

        本文标题:app中的扫码功能实现

        本文链接:https://www.haomeiwen.com/subject/fpqgvttx.html