效果图(默认横屏,哪位大牛知道怎么改的记得告诉我,感激不尽):
首先在build.gradle(Moudle:app)中添加下列依赖:
- repositories {
- mavenCentral()
- maven {
- url "http://dl.bintray.com/journeyapps/maven"
- }
- }
- dependencies {
- // Supports Android 4.0.3 and later (API level 15)
- compile 'com.journeyapps:zxing-android-embedded:2.0.1@aar'
-
- // Supports Android 2.1 and later (API level 7), but not optimal for later Android versions.
- // If you only plan on supporting Android 4.0.3 and up, you don't need to include this.
- compile 'com.journeyapps:zxing-android-legacy:2.0.1@aar'
-
- // Convenience library to launch the scanning and encoding Activities.
- // It automatically picks the best scanning library from the above two, depending on the
- // Android version and what is available.
- compile 'com.journeyapps:zxing-android-integration:2.0.1@aar'
-
- // Version 3.0.x of zxing core contains some code that is not compatible on Android 2.2 and earlier.
- // This mostly affects encoding, but you should test if you plan to support these versions.
- // Older versions e.g. 2.2 may also work if you need support for older Android versions.
- compile 'com.google.zxing:core:3.0.1'
- }
然后在AndroidManifest.xml文件<manifest>标签内部,<application>标签前面加入以下代码,申请权限
- <uses-permission android:name="android.permission.CAMERA"/>
- <uses-permission android:name="android.permission.VIBRATE"/>
- <uses-permission android:name="android.permission.INTERNET"/>
这样就行了!
接下来是用法:
在按钮的onClick事件中添加代码,点击后会跳转到扫描界面:
- @Override
- public void onClick(View v) {
-
- IntentIntegrator integrator = new IntentIntegrator(MainActivity.this);
- integrator.initiateScan();
- }
然后重写下列函数,用来处理解码后的信息:
- @Override
- protected void onActivityResult(int requestCode, int resultCode, Intent data) {
- IntentResult scanResult = IntentIntegrator.parseActivityResult(requestCode, resultCode, data);
- if (scanResult != null) {
- String result = scanResult.getContents();
- Log.d("code", result);
- Toast.makeText(this,result, Toast.LENGTH_LONG).show();
- }
- }