Android应用开发Android 利用Zxing实现扫描二维码并跳转详情页面
白羽 2019-03-15 来源 :网络 阅读 2241 评论 0

摘要:本文将带你了解Android应用开发Android 利用Zxing实现扫描二维码并跳转详情页面,希望本文对大家学Android有所帮助。

本文将带你了解Android应用开发Android 利用Zxing实现扫描二维码并跳转详情页面,希望本文对大家学Android有所帮助。Android应用开发Android 利用Zxing实现扫描二维码并跳转详情页面


一言不合就上图
    这里写图片描述这里写图片描述这里写图片描述
    因为是第三方集成好的所以||
    老套路首先注入依赖:
   

    //zxing二维码
        compile   'cn.yipianfengye.android:zxing-library:2.1'
    Manifest注册清单里面添加打开相机的权限:
   

    <uses-permission android:name=android.permission.CAMERA>
    <uses-permission android:name=android.permission.FLASHLIGHT>
     
    <uses-feature android:name=android.hardware.camera>
    <uses-feature android:name=android.hardware.camera.autofocus>
     
    <uses-permission android:name=android.permission.VIBRATE>
    <uses-permission android:name=android.permission.WAKE_LOCK>
    <uses-permission   android:name=android.permission.READ_EXTERNAL_STORAGE>
     
    <uses-permission   android:name=android.permission.INTERNET></uses-permission></uses-permission></uses-permission></uses-permission></uses-feature></uses-feature></uses-permission></uses-permission>
    然后是activity_main.xml布局文件,随便给个控件,为了触发点击事件(点击打开相机):
   

    <textview android:id=@+id/tvSys android:layout_height=wrap_content   android:layout_width=wrap_content android:text=点我扫一扫   android:textsize=22sp></textview>
    然后新建一个zxing_webview_layout.xml布局文件,用来跳转显示二维码的详情:
   
  
      <edittext android:id=@+id/receptionTv android:layout_height=wrap_content   android:layout_width=wrap_content android:padding=10dp>
     
    <webview android:id=@+id/wb android:layout_height=match_parent   android:layout_width=match_parent></webview></edittext>
    然后一个重点 需要新建一个类继承application,初始化zxing包:
   

    public class ZXingApplication extends Application {
        //oncreate方法
        @Override
        public void onCreate() {
            super.onCreate();
            //初始化ZXING包
              ZXingLibrary.initDisplayOpinion(this);
        }
    }
    千万不要忘记在ManiFast注册清单里面声明一下application类:
   

        
            <intent-filter>
                
     
                <category   android:name=android.intent.category.LAUNCHER>
            </category></action></intent-filter>
        </activity>
        //这是跳转到详情页面也别忘记,声明此类
        
    </activity></application>
    然后就是MainActivity的代码:
   


    public class MainActivity extends AppCompatActivity {
        //定义一个全局的静态常量
        private static final int   REQUEST_CODE = 001;
        @Override
        protected void onCreate(Bundle   savedInstanceState) {
            super.onCreate(savedInstanceState);
              setContentView(R.layout.activity_main);
     
            //运动时权限
            if   (ContextCompat.checkSelfPermission(this, Manifest.permission.CAMERA) !=   PackageManager.PERMISSION_GRANTED) {
                  //申请WRITE_EXTERNAL_STORAGE权限
                  ActivityCompat.requestPermissions(this, new   String[]{Manifest.permission.CAMERA}, 1);
            }
            //找控件
            TextView tvSys = (TextView)   findViewById(R.id.tvSys);
            //点击事件
            tvSys.setOnClickListener(new   View.OnClickListener() {
                @Override
                public void onClick(View   view) {
                    //调用系统相机功能,就是跳转到摄像头的界面
                    Intent intent = new   Intent(MainActivity.this, CaptureActivity.class);
                      //用此方法跳转的原因是:为了回调下面onActivityResult的方法
                      startActivityForResult(intent, REQUEST_CODE);
                }
            });
     
        }
        //扫描回传值
        @Override
        protected void   onActivityResult(int requestCode, int resultCode, Intent data) {
            if (requestCode ==   REQUEST_CODE) {
                Bundle bundle = data.getExtras();
                if (bundle == null)   {
                    return;
                }
                if   (bundle.getInt(CodeUtils.RESULT_TYPE) == CodeUtils.RESULT_SUCCESS) {
                      //这是拿到解析扫描到的信息,并转成字符串
                    String result =   bundle.getString(CodeUtils.RESULT_STRING);
     
                    Toast.makeText(this,   解析结果: + result, Toast.LENGTH_LONG).show();
                      //解析扫到的二维码后就跳转页面
                    Intent intent = new   Intent(MainActivity.this, ZXingActivity.class);
                      //把扫到并解析到的信息(既:字符串)带到详情页面
                    intent.putExtra(path,   result);
                      startActivity(intent);
                } else if   (bundle.getInt(CodeUtils.RESULT_TYPE) == CodeUtils.RESULT_FAILED) {
                    //否则土司解析二维码失败
                    Toast.makeText(this,   解析二维码失败:, Toast.LENGTH_LONG).show();
                }
            }
     
        }
    }
    然后就是跳转详情的页面也就是ZXingActivity类:
   
 

    public class ZXingActivity extends Activity {
        //控件设了个全局
        private WebView wb;
        @Override
        protected void onCreate(@Nullable   Bundle savedInstanceState) {
              super.onCreate(savedInstanceState);
            setContentView(R.layout.zxing_webview_layout);
            //找控件
            wb =   findViewById(R.id.wb);
            TextView receptionTv =   findViewById(R.id.receptionTv);
            //支持js语言
              wb.getSettings().setJavaScriptEnabled(true);
                


   
       

本文由职坐标整理并发布,希望对同学们有所帮助。了解更多详情请关注职坐标移动开发之Android频道!

本文由 @白羽 发布于职坐标。未经许可,禁止转载。
喜欢 | 1 不喜欢 | 0
看完这篇文章有何感觉?已经有1人表态,100%的人喜欢 快给朋友分享吧~
评论(0)
后参与评论

您输入的评论内容中包含违禁敏感词

我知道了

助您圆梦职场 匹配合适岗位
验证码手机号,获得海同独家IT培训资料
选择就业方向:
人工智能物联网
大数据开发/分析
人工智能Python
Java全栈开发
WEB前端+H5

请输入正确的手机号码

请输入正确的验证码

获取验证码

您今天的短信下发次数太多了,明天再试试吧!

提交

我们会在第一时间安排职业规划师联系您!

您也可以联系我们的职业规划师咨询:

小职老师的微信号:z_zhizuobiao
小职老师的微信号:z_zhizuobiao

版权所有 职坐标-一站式IT培训就业服务领导者 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
 沪公网安备 31011502005948号    

©2015 www.zhizuobiao.com All Rights Reserved

208小时内训课程