二维码扫描
来源:互联网 发布:知豆电动汽车 编辑:程序博客网 时间:2024/04/30 23:21
这里借助于开源项目ZXing,但是使用ZXing需要导入源码,并重新导入R文件,比较麻烦,这里对其源码做了一些修改并封装了一个jar,可以直接导入使用。另外就只需将ZXing的res资源文件下的图片、layout、menu、values、xml、raw拷贝到工程相应目录下即可。开源项目地址是 https://code.google.com/p/zxing/ 。
示例代码如下:
MainActivity:
package com.home.testscan;import com.google.zxing.client.android.CaptureActivity;import android.app.Activity;import android.content.Intent;import android.os.Bundle;import android.view.View;import android.view.View.OnClickListener;import android.widget.Button;import android.widget.TextView;public class MainActivity extends Activity implements OnClickListener {private Button scanBtn;private TextView resultText;public static final int SCAN_REQUEST_CODE = 1;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.main);initWidget();}private void initWidget() {scanBtn = (Button) findViewById(R.id.main_btn);scanBtn.setOnClickListener(this);resultText = (TextView) findViewById(R.id.main_tv);}@Overridepublic void onClick(View v) {if (v == scanBtn) {resultText.setText("这里显示扫描结果");Intent intent = new Intent(this, CaptureActivity.class);startActivityForResult(intent, SCAN_REQUEST_CODE);}}@Overrideprotected void onActivityResult(int requestCode, int resultCode, Intent data) {super.onActivityResult(requestCode, resultCode, data);if (data != null && requestCode == SCAN_REQUEST_CODE) {if (resultCode == RESULT_OK) {String result = data.getStringExtra("scan_result");resultText.setText(result);} else if (resultCode == RESULT_CANCELED) {resultText.setText("未扫描出结果");}}}}
main.xml:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" > <Button android:id="@+id/main_btn" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center_horizontal" android:text="点击进行扫描" /> <TextView android:id="@+id/main_tv" android:layout_width="match_parent" android:layout_height="match_parent" android:gravity="center" android:text="这里显示扫描结果" /></LinearLayout>
AndroidManifest.xml的配置:
<?xml version="1.0" encoding="utf-8"?><manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.home.testscan" android:versionCode="1" android:versionName="1.0" > <uses-sdk android:minSdkVersion="8" android:targetSdkVersion="17" /> <uses-feature android:name="android.hardware.camera" android:required="false" /> <uses-feature android:name="android.hardware.camera.front" android:required="false" /> <uses-feature android:name="android.hardware.camera.autofocus" android:required="false" /> <uses-feature android:name="android.hardware.camera.flash" android:required="false" /> <uses-feature android:name="android.hardware.screen.landscape" /> <uses-feature android:name="android.hardware.wifi" android:required="false" /> <uses-feature android:name="android.hardware.touchscreen" /> <supports-screens android:anyDensity="true" android:largeScreens="true" android:normalScreens="true" android:smallScreens="true" android:xlargeScreens="true" /> <uses-permission android:name="android.permission.CAMERA" /> <uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.VIBRATE" /> <uses-permission android:name="android.permission.FLASHLIGHT" /> <uses-permission android:name="android.permission.READ_CONTACTS" /> <uses-permission android:name="com.android.browser.permission.READ_HISTORY_BOOKMARKS" /> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.CHANGE_WIFI_STATE" /> <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /> <application android:allowBackup="true" android:icon="@drawable/ic_launcher" android:label="@string/app_name" android:theme="@style/AppTheme" > <activity android:name="com.home.testscan.MainActivity" android:label="@string/app_name" > <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> <activity android:name="com.google.zxing.client.android.CaptureActivity" android:clearTaskOnLaunch="true" android:configChanges="orientation|keyboardHidden" android:screenOrientation="landscape" android:stateNotNeeded="true" android:theme="@android:style/Theme.NoTitleBar.Fullscreen" android:windowSoftInputMode="stateAlwaysHidden" > <intent-filter> <action android:name="com.google.zxing.client.android.SCAN" /> <category android:name="android.intent.category.DEFAULT" /> </intent-filter> <intent-filter> <action android:name="android.intent.action.VIEW" /> <category android:name="android.intent.category.DEFAULT" /> <category android:name="android.intent.category.BROWSABLE" /> <data android:host="zxing.appspot.com" android:path="/scan" android:scheme="http" /> </intent-filter> <intent-filter> <action android:name="android.intent.action.VIEW" /> <category android:name="android.intent.category.DEFAULT" /> <category android:name="android.intent.category.BROWSABLE" /> <data android:host="www.google.com" android:path="/m/products/scan" android:scheme="http" /> </intent-filter> <intent-filter> <action android:name="android.intent.action.VIEW" /> <category android:name="android.intent.category.DEFAULT" /> <category android:name="android.intent.category.BROWSABLE" /> <data android:host="www.google.co.uk" android:path="/m/products/scan" android:scheme="http" /> </intent-filter> <intent-filter> <action android:name="android.intent.action.VIEW" /> <category android:name="android.intent.category.DEFAULT" /> <category android:name="android.intent.category.BROWSABLE" /> <data android:host="scan" android:path="/" android:scheme="zxing" /> </intent-filter> </activity> <activity android:name="com.google.zxing.client.android.PreferencesActivity" android:label="@string/preferences_name" android:stateNotNeeded="true" > </activity> <activity android:name="com.google.zxing.client.android.encode.EncodeActivity" android:stateNotNeeded="true" > <intent-filter> <action android:name="com.google.zxing.client.android.ENCODE" /> <category android:name="android.intent.category.DEFAULT" /> </intent-filter> <intent-filter> <action android:name="android.intent.action.SEND" /> <category android:name="android.intent.category.DEFAULT" /> <data android:mimeType="text/x-vcard" /> </intent-filter> <intent-filter> <action android:name="android.intent.action.SEND" /> <category android:name="android.intent.category.DEFAULT" /> <data android:mimeType="text/plain" /> </intent-filter> </activity> <activity android:name="com.google.zxing.client.android.book.SearchBookContentsActivity" android:configChanges="orientation|keyboardHidden" android:label="@string/sbc_name" android:screenOrientation="landscape" android:stateNotNeeded="true" > <intent-filter> <action android:name="com.google.zxing.client.android.SEARCH_BOOK_CONTENTS" /> <category android:name="android.intent.category.DEFAULT" /> </intent-filter> </activity> <activity android:name="com.google.zxing.client.android.share.ShareActivity" android:screenOrientation="user" android:stateNotNeeded="true" android:theme="@android:style/Theme.Light" > <intent-filter> <action android:name="com.google.zxing.client.android.SHARE" /> <category android:name="android.intent.category.DEFAULT" /> </intent-filter> </activity> <activity android:name="com.google.zxing.client.android.history.HistoryActivity" android:label="@string/history_title" android:stateNotNeeded="true" > <intent-filter> <action android:name="android.intent.action.VIEW" /> <category android:name="android.intent.category.DEFAULT" /> </intent-filter> </activity> <activity android:name="com.google.zxing.client.android.share.BookmarkPickerActivity" android:label="@string/bookmark_picker_name" android:stateNotNeeded="true" > <intent-filter> <action android:name="android.intent.action.PICK" /> <category android:name="android.intent.category.DEFAULT" /> </intent-filter> </activity> <activity android:name="com.google.zxing.client.android.share.AppPickerActivity" android:configChanges="orientation" android:label="@string/app_picker_name" android:stateNotNeeded="true" > <intent-filter> <action android:name="android.intent.action.PICK" /> <category android:name="android.intent.category.DEFAULT" /> </intent-filter> </activity> <activity android:name="com.google.zxing.client.android.HelpActivity" android:screenOrientation="user" > <intent-filter> <action android:name="android.intent.action.VIEW" /> <category android:name="android.intent.category.DEFAULT" /> </intent-filter> </activity> </application></manifest>
这里附上一张测试二维码图片:
demo下载地址:http://download.csdn.net/detail/u010142437/6913181
0 0
- 二维码扫描
- 二维码扫描
- 二维码扫描
- 二维码扫描
- 二维码扫描
- 二维码扫描
- 二维码扫描
- 二维码扫描
- 二维码扫描
- 扫描二维码
- 二维码扫描
- 二维码扫描
- 二维码扫描
- 二维码扫描
- 扫描二维码
- 二维码扫描
- 二维码扫描
- 扫描二维码
- 关于父亲
- 输出格式
- DatePicker和TimePicker获得编辑框内内容
- oracle命令窗口中dbms_output.put_line不显示问题
- Javascript继承机制的设计思想
- 二维码扫描
- Java中 float、double使用注意问题
- iphone开发资源汇总
- 认识自己的不足
- 利用ParameterizedType和范型做切面编程
- webrtc 学习
- java到structs
- SQL中从不同表中链接数据计算
- 10 个超赞的 JavaScript 图形图表绘制插件