顯示具有 Scanner 標籤的文章。 顯示所有文章
顯示具有 Scanner 標籤的文章。 顯示所有文章

2015年4月20日 星期一

Android Zxing QRcode Scanner QRcode掃描

將掃一維二維條碼功能zxing加入自己的app
前置步驟
Step1.下載zxing https://github.com/zxing/zxing/archive/master.zip

Step2. File -> import android這個資料夾


Step3. 去下載的資料夾 android-core 最裡層的CameraConfigurationUtils.java檔案


複製貼到剛剛import下的CaptureActivity\src\com\google\zxing\client\android\camera下。


Step4. 下載core-3.2.0.jar http://mvnrepository.com/artifact/com.google.zxing/core/3.2.0
在CaptureActivity資料夾下建立libs,將core-3.2.0.jar放入。

Step5. 在 CaptureActivity專案點右鍵 -> Properties->點選Android->勾選Android 4.4.2


點選 Java Compiler ->Compiler選擇 compliance level: 1.7


Step6. 點選上方功能列Project -> Clean ->勾選CaptureActivity,
然後回頭去把Android的Is Library打勾


Step7. 打勾後有些檔案會出現錯誤,打開這些檔案,在switch上用滑鼠點一下,按下鍵盤
Ctrl+1,點選Convert'switch' to 'if-else',每個有錯誤的檔案接照此方法。


---------------------------------------已上完成前置動作---------------------------------------

建立新專案
1.在專案點右鍵 -> Properties->點選Android->點選Add->加入CaptureActivity


2.AndroidManifest.xml


    
    

    
    

    
        
            
                
                

                
                
            
        
        
        
            
                
                

                
                
            
            
                
                

                
                
            
        
    


3./res/layout/activity_main.xml


    
    

    

    


4.MainActivity.java
package tw.android;

import android.app.Activity;
import android.content.ActivityNotFoundException;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Toast;

public class MainActivity extends Activity {
 
 static final String ACTION_SCAN = "com.google.zxing.client.android.SCAN";

 @Override
 public void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.activity_main);
 }

 //掃描一維條碼
 public void scanBar(View v) {
  try {
   Intent intent = new Intent(ACTION_SCAN);
   intent.putExtra("SCAN_MODE", "PRODUCT_MODE"); //一維條碼模式
   startActivityForResult(intent, 0);
  } catch (ActivityNotFoundException anfe) {
   
  }
 }
 
 //掃描QRcode
 public void scanQR(View v) {
  try {
   Intent intent = new Intent(ACTION_SCAN);
   intent.putExtra("SCAN_MODE", "QR_CODE_MODE"); //QR code模式
   startActivityForResult(intent, 0);
  } catch (ActivityNotFoundException anfe) {
  
  }
 }

 //傳回結果
 public void onActivityResult(int requestCode, int resultCode, Intent intent) {
  if (requestCode == 0) {
   if (resultCode == RESULT_OK) {
    //get the extras that are returned from the intent
    String contents = intent.getStringExtra("SCAN_RESULT"); //掃描結果
    String format = intent.getStringExtra("SCAN_RESULT_FORMAT");//掃描格式
    Toast toast = Toast.makeText(this, "內容:" + contents + " 格式:" + format, Toast.LENGTH_LONG);
    toast.show();
   }
  }
 }
}


檔案下載:
https://github.com/terryyamg/scannerTest
參考來源:
1.https://github.com/zxing/zxing
2.http://www.androidaz.com/development/zxing-qr-reader-direct-integration
3.http://examples.javacodegeeks.com/android/android-barcode-and-qr-scanner-example/
4.http://mvnrepository.com/artifact/com.google.zxing/core/3.2.0
5.http://stackoverflow.com/questions/11226941/error-in-switch-cases-of-zxing-project-in-android
6.http://stackoverflow.com/questions/24818566/build-library-zxing-for-android-project