二维码扫描

来源:互联网 发布:知豆电动汽车 编辑:程序博客网 时间: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