首页 > 其他 > 详细

二维码扫描

时间:2014-02-12 00:46:16      阅读:560      评论:0      收藏:0      [点我收藏+]

这里借助于开源项目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;

	@Override
	protected 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);
	}

	@Override
	public void onClick(View v) {
		if (v == scanBtn) {
			resultText.setText("这里显示扫描结果");
			Intent intent = new Intent(this, CaptureActivity.class);
			startActivityForResult(intent, SCAN_REQUEST_CODE);

		}
	}

	@Override
	protected 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>

这里附上一张测试二维码图片:

bubuko.com,布布扣
demo下载地址:http://download.csdn.net/detail/u010142437/6913181

二维码扫描

原文:http://blog.csdn.net/u010142437/article/details/19079819

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!