Android如何实现扫描和生成二维码
程序员文章站
2023-10-22 16:23:51
本文实例为大家分享了android实现扫描和生成二维码的具体代码,供大家参考,具体内容如下
目标效果:
该例子可以扫描二维码...
本文实例为大家分享了android实现扫描和生成二维码的具体代码,供大家参考,具体内容如下
目标效果:
该例子可以扫描二维码和条形码,扫描后会将信息显示到下方的textview中,在edittext中输入想要生成的文本,点击生成二维码,会在下方显示二维码图片。
1.二维码的扫描与生成需要一个框架,网上的框架导入后改成is library会提示错误,把switch改成if语句错误就没有了。
2.导入框架并新建项目,把框架添加到项目中去。
3.activity_main.xml页面设置控件。
activity_main.xml页面:
<linearlayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" tools:context=".mainactivity" > <button android:id="@+id/btscan" android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="开始扫描二维码" /> <textview android:id="@+id/tvshow" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_margintop="20dp" android:text="二维码结果:" /> <edittext android:id="@+id/etinput" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_margintop="50dp" android:hint="请输入要编码的内容"> </edittext> <button android:id="@+id/btget" android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="生成二维码" /> <imageview android:id="@+id/ivcode" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center_horizontal"/> </linearlayout>
4.mainactivity.java页面编写点击事件,进行扫描生成二维码。
mainactivity.java页面:
package com.example.testqrcode; import com.google.zxing.writerexception; import com.zxing.activity.captureactivity; import com.zxing.encoding.encodinghandler; import android.os.bundle; import android.app.activity; import android.content.intent; import android.graphics.bitmap; import android.view.menu; import android.view.view; import android.view.view.onclicklistener; import android.widget.button; import android.widget.edittext; import android.widget.imageview; import android.widget.textview; import android.widget.toast; public class mainactivity extends activity { private button btscan, btget; private textview tvshow; private imageview ivcode; private edittext etinput; @override protected void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.activity_main); btscan = (button) findviewbyid(r.id.btscan); tvshow = (textview) findviewbyid(r.id.tvshow); btget = (button) findviewbyid(r.id.btget); ivcode = (imageview) findviewbyid(r.id.ivcode); etinput = (edittext) findviewbyid(r.id.etinput); // 扫描二维码 btscan.setonclicklistener(new onclicklistener() { @override public void onclick(view arg0) { toast.maketext(mainactivity.this, "你可以扫描条形码或者二维码", toast.length_short).show(); intent intent = new intent(mainactivity.this, captureactivity.class); // startactivity(intent); //不能回传数据的跳转方式 startactivityforresult(intent, 0); // 能获取回传数据的跳转方式 } }); // 生成二维码 btget.setonclicklistener(new onclicklistener() { @override public void onclick(view arg0) { string in = etinput.gettext().tostring(); if (in.equals("")) { toast.maketext(mainactivity.this, "请输入文本", toast.length_short).show(); } else { try { bitmap qrcode = encodinghandler.createqrcode(in, 400); ivcode.setimagebitmap(qrcode); } catch (writerexception e) { // todo auto-generated catch block e.printstacktrace(); }// 第一个参数是想要生成的文本,第二个参数是生成二维码横向和纵向的宽度 } } }); } // 接收扫描的activity传回来的值 @override protected void onactivityresult(int requestcode, int resultcode, intent data) { super.onactivityresult(requestcode, resultcode, data); if (resultcode == result_ok) { string result = data.getextras().getstring("result"); tvshow.settext(result); } } }
5.androidmanifest.xml页面添加权限。
<uses-permission android:name="android.permission.camera"/> <uses-permission android:name="android.permission.vibrate"/>
6.androidmanifest.xml页面添加声明扫描二维码页面的activity信息。
<activity android:name="com.zxing.activity.captureactivity" android:configchanges="orientation|keyboardhidden" android:screenorientation="portrait" android:theme="@android:style/theme.notitlebar.fullscreen" android:windowsoftinputmode="statealwayshidden" > </activity>
7.运行就显示目标效果了。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
上一篇: 八招缓解糖友神经痛
下一篇: 雾霾天气如何护肤 八招远离肌肤衰老