摘要:本文将带你了解Android应用开发Android 利用Zxing实现扫描二维码并跳转详情页面,希望本文对大家学Android有所帮助。
本文将带你了解Android应用开发Android 利用Zxing实现扫描二维码并跳转详情页面,希望本文对大家学Android有所帮助。
一言不合就上图
这里写图片描述这里写图片描述这里写图片描述
因为是第三方集成好的所以||
老套路首先注入依赖:
//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频道!
您输入的评论内容中包含违禁敏感词
我知道了
请输入正确的手机号码
请输入正确的验证码
您今天的短信下发次数太多了,明天再试试吧!
我们会在第一时间安排职业规划师联系您!
您也可以联系我们的职业规划师咨询:
版权所有 职坐标-一站式IT培训就业服务领导者 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
沪公网安备 31011502005948号