Android二维码扫描开发和二维码的生成
2016-06-28 11:27
459 查看
Android二维码扫描开发和二维码的生成
下面看完成过程:
1.先导入外界的类库 BarCodeTest
2新建一个项目:
在布局中定义
<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/btnscon" android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="开始扫描" /> <TextView android:id="@+id/tv1" android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="show" /> </LinearLayout>在MainActivity.java中
package com.example.testqrcode; import java.security.spec.EncodedKeySpec; 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.util.Log; 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.ToggleButton; public class MainActivity extends Activity { private Button scanButton,btngen; private TextView tvshow; private EditText edt1; private ImageView iv1; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); scanButton=(Button) findViewById(R.id.btnscon); tvshow=(TextView) findViewById(R.id.tv1); scanButton.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub Log.d("MainActivity", "可以扫描二维码了"); Intent startSan=new Intent(MainActivity.this,CaptureActivity.class); //startActivity(startSan); startActivityForResult(startSan, 0); } }); } @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { // TODO Auto-generated method stub super.onActivityResult(requestCode, resultCode, data); if(resultCode==RESULT_OK){ String result=data.getExtras().getString("result"); tvshow.setText(result); } } }
另外这个CaptureActivity.class是外部的类,所以要在 AndroidManifest.xml中定义
找到BarCodeTest的AndroidManifest.xml,会发现有这样一段话
<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>把这个类的声明复制到你的项目中去
运行之后,会出现这样,反馈的信息
那么怎么根据输入的值生成一个二维码呢?
在布局中定义:
<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" > <EditText android:id="@+id/edt1" android:layout_width="fill_parent" android:layout_height="wrap_content" android:hint="请输入要编码的内容" > </EditText> <Button android:id="@+id/btngen" android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="生成二维码" /> <ImageView android:id="@+id/iv1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center_horizontal" /> </LinearLayout>在MainActivity.java中
package com.example.testqrcode; import java.security.spec.EncodedKeySpec; 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.util.Log; 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.ToggleButton; public class MainActivity extends Activity { private Button scanButton,btngen; private TextView tvshow; private EditText edt1; private ImageView iv1; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); tvshow=(TextView) findViewById(R.id.tv1); btngen=(Button) findViewById(R.id.btngen); edt1=(EditText) findViewById(R.id.edt1); iv1=(ImageView) findViewById(R.id.iv1); btngen.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub String in=edt1.getText().toString(); if(in.equals("")){ Log.d("MainActivity", "请输入文本"); } try { Bitmap qrcode=EncodingHandler.createQRCode(in, 400); iv1.setImageBitmap(qrcode); } catch (WriterException e) { // TODO Auto-generated catch block e.printStackTrace(); } } }); } }生成的二维码会放在定义的ImgeView里(这里是放在ImgeView,当然你可以根据你项目的需求,放在自己 想放的地方,方便我们灵活运用)
下面是项目源码:http://download.csdn.net/detail/zhupengqq/9561594
相关文章推荐
- 控制drawable资源大小
- Android adb命令
- [android] 切换界面的通用处理
- Android “original-package” 机制解析
- Android四大组件之Activity详解
- Android画图paint的使用
- Android ListView、viewPager中ImageView图片错为混乱
- 【读书笔记】Android 应用程序进程的启动过程
- Android编程实现AIDL(跨进程通信)的方法详解
- Android 更改软键盘Enter键为搜索
- Android开发中Parcelable接口用法
- Windows下NDK开发环境的搭建(Cygwin+Android-SDK+NDK)(转)
- Android(六)----页面跳转和数据传递
- Android Studio 环境搭建
- Android Material Design系列之FloatingActionButton和Snackbar
- Android的任务栈简介、AndroidMainifest启动模式、Intent Flag启动模式
- Xamarin中打开别人项目找不到android.jar文件
- Android Studio目录结构
- 手机usb有线上网
- Android Studio 常用快捷键大全