[android]QR code掃描
今天一時興起就來寫個code
IDE是使用Android Studio
首先呢~先來介紹今天的主角 zxing~~
zxing 是zebra crossing 的縮寫
是開源的 一維、二維條碼辨識的library
首先 這是介面布局
我只知道他是去下載然後build zxing((大概是八=..=
接下來來寫activity
附上幾張完成圖
IDE是使用Android Studio
首先呢~先來介紹今天的主角 zxing~~
zxing 是zebra crossing 的縮寫
是開源的 一維、二維條碼辨識的library
首先 這是介面布局
一個Button 兩個TextView
然後遇到第一個問題 如何在Android Studio中加入library??
上網參考了stack overflow的解答
只要在build.gradle中加入這幾行就OK了
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'
}
阿阿阿阿~~ 還沒搞懂gradle 所以我沒辦法解釋這些東西我只知道他是去下載然後build zxing((大概是八=..=
接下來來寫activity
package com.catstudio.scanme;
import android.app.Activity;
import com.google.zxing.integration.android.*;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
import android.widget.Toast;
/**
* Created by cat on 2015/3/30.
*/
public class MainActivity extends Activity{
private Activity mainactivity;
private TextView scan_content;
private TextView scan_format;
private Button scan_btn;
protected void onCreate(Bundle saveInstanceStat){
super.onCreate(saveInstanceStat);
setContentView(R.layout.main_layout);
init_view();
scan_btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
IntentIntegrator scanIntegrator = new IntentIntegrator(mainactivity);
scanIntegrator.initiateScan();
}
});
}
public void onActivityResult(int requestCode, int resultCode, Intent intent){
IntentResult scanningResult = IntentIntegrator.parseActivityResult(requestCode, resultCode, intent);
if(scanningResult!=null){
String scanContent=scanningResult.getContents();
String scanFormat=scanningResult.getFormatName();
scan_content.setText(scanContent);
scan_format.setText(scanFormat);
}else{
Toast.makeText(getApplicationContext(),"nothing",Toast.LENGTH_SHORT).show();
}
}
private void init_view(){
this.scan_content=(TextView)findViewById(R.id.scan_content);
this.scan_format=(TextView)findViewById(R.id.scan_format);
this.mainactivity=this;
this.scan_btn = (Button)findViewById(R.id.scan_btn);
}
}
當點擊Button就可以用IntentIntegration的initiateScan方法開始掃描
掃描完的結果會回傳到Activity 這時候要用onActivityResult 這個方法
然後就簡單了 把data顯示到TextView就OK了
掃描完的結果會回傳到Activity 這時候要用onActivityResult 這個方法
然後就簡單了 把data顯示到TextView就OK了
附上幾張完成圖
感謝分享 想請問有什麼方法可以直接把網址變成超連結嗎?
回覆刪除我想這篇應該可以解答你的問題~
刪除http://magiclen.org/android-html-textview/
您好,想請問一下 如何連掃描到的QR Code用ImageView顯示在結果上呢 !?
回覆刪除http://stackoverflow.com/questions/19786143/get-a-qrcode-scanned-image-in-onactivityresult-using-zxing-in-android
刪除似乎是因為圖片太大了所以無法回傳@@
我能想到的辦法是將得到的data用QRCodeWriter 建立新的QR code
關於QRCodeWriter範例還請google一下 或是等我有空再更新此篇文章
Error:Execution failed for task ':app:transformClassesWithDexForDebug'.
回覆刪除> com.android.build.api.transform.TransformException: com.android.ide.common.process.ProcessException: java.util.concurrent.ExecutionException: com.android.ide.common.process.ProcessException: org.gradle.process.internal.ExecException: Process 'command 'C:\Program Files\Java\jdk1.8.0_77\bin\java.exe'' finished with non-zero exit value 2
感謝您的分享 不過搞了一個禮拜還是出了一些問題 實在有點頭疼
刪除能否跟您借個範例檔案參考比對一下嗎 謝謝
https://drive.google.com/file/d/0B13pI8uLNji6TmNaUnVOVjV5dVE/view?usp=sharing
刪除若還是有問題歡迎一起討論~
原來是我自己眼殘
刪除android studio只要在gradle寫下要compile的資料來源
自動會抓下來需要的library
根本不用去抓任何檔案到自己的projects
我把它想得太複雜了!
受教了 大感恩!
作者已經移除這則留言。
刪除請問一下有已完成的範本能分享一下嗎
回覆刪除請問一下有已完成的範本能分享一下嗎
回覆刪除因為沒有基礎都一直錯誤
https://drive.google.com/file/d/0B13pI8uLNji6TmNaUnVOVjV5dVE/view
刪除若還是有問題歡迎一起討論~
好哦 我試試看 有問題在麻煩你 謝謝囉
刪除作者已經移除這則留言。
回覆刪除它幫你自動修正正確的Android sdk位置
刪除請問一下IntentIntegrator紅字是什麼錯誤
刪除Textbox放一個就能了嗎?
請問一下 如果IntentIntegrator和IntentResult
回覆刪除還有
String scanContent = result.getContents();
String scanFormat = result.getFormatName();
有紅字是神麼問題呢
你可能沒有import
刪除是試試加這行
imports com.google.zxing.*;
作者已經移除這則留言。
刪除想請問一下可以從後置鏡頭改到前置鏡頭嗎?
回覆刪除謝謝。
可以的喔
刪除只要讓intent多傳一些參數就可以
像這樣
IntentIntegrator scanIntegrator = new IntentIntegrator(mainactivity);
scanIntegrator.addExtra("SCAN_MODE", "QR_CODE_MODE");
scanIntegrator.addExtra("SCAN_CAMERA_ID", 1);
scanIntegrator.initiateScan();
比較需要注意的地方是SCAN_CAMERA_ID 通常前鏡頭是 1 ((通常拉@@
作者已經移除這則留言。
回覆刪除不好意思,我目前做到可以掃描發票並跳出小視窗顯示結果
回覆刪除想請問一下,有辦法把資料拆開成發票號碼、日期、明細丟到另一個Activity嗎?
非常感謝你~~
請問如何改成直向掃描呢??
回覆刪除我想問android 6.0以上相機功能不能使用是因為什麼原因?
回覆刪除我的可以正常使用喔~
刪除麻煩提供錯誤訊息
要記得要求runtime權限 camera
刪除您好 請問如何將掃描後的QR code (如:網址) 直接開啟呢?
回覆刪除謝謝
請參考這篇https://developer.android.com/reference/android/content/Intent.html#ACTION_VIEW
刪除寫起來大概是這樣子
Intent i = new Intent(Intent.ACTION_VIEW);
i.setData(Uri.parse(scanningResult.getContents()));
startActivity(i);
妳好 請問如果我要用成2個掃描跟各別顯示怎麼用?
回覆刪除您好 我想在掃描時開啟閃光燈應該怎麼做呢
回覆刪除請問一下這個也可以掃描發票的qr code 嗎?
回覆刪除