2010-06-13 206 views
3

我正在嘗試將ZXing添加到我的項目中(添加一個在按下時調用掃描儀的按鈕)。我發現這個:http://groups.google.com/group/android-developers/browse_thread/thread/788eb52a765c28b5,當然還有ZXing的homesite:http://code.google.com/p/zxing/,但仍然無法弄清楚在項目類路徑中包含哪些內容以使其全部工作!Android上的ZXing入門

至於現在,我將第一個鏈接中的類複製到我的項目中(並且更改了一些程序包名稱),然後按下按鈕並嘗試安裝條形碼掃描程序後運行但崩潰。

一些代碼:

private void setScanButton(){ 
    Button scan = (Button) findViewById(R.id.MainPageScanButton); 
    scan.setOnClickListener(new OnClickListener() { 

     @Override 
     public void onClick(View v) { 
      IntentIntegrator.initiateScan(MyActivity.this); 
     } 
    }); 
} 

產生的誤差(來自logcat中):

06-13 15:26:01.540: ERROR/AndroidRuntime(1423): Uncaught handler: thread main exiting due to uncaught exception 
06-13 15:26:01.560: ERROR/AndroidRuntime(1423): android.content.ActivityNotFoundException: No Activity found to handle Intent { act=android.intent.action.VIEW dat=market://search?q=pname:com.google.zxing.client.android } 

想法?

+0

順便說一句,我在Android模擬器運行V1.6 – amitlicht 2010-06-13 16:01:28

+1

我遵循Google Groups主題的指示,當我將它部署到我的Samsung Galaxy S時,它第一次工作。我甚至不需要重命名任何內容。在我的項目中,我讓它創建一個新的類路徑「com.google.zxing.integration.andoid」。 – 2011-01-18 04:52:49

+0

嘗試我的博客,可能會幫助 http://mcondev.wordpress.com/2011/06/24/zxing-1-7-for-android-on-eclipse/ – Siddharth 2011-12-14 05:09:41

回答

3

首先,ZXing無法在模擬器上自動提示用戶從市場下載,因爲仿真器上沒有市場。您需要在模擬器上手動安裝Barcode Scanner APK。

其次,由於模擬器不模擬相機,條形碼掃描儀可能不會對你有很大的好處。很可能你需要在設備上測試這個。

+0

@ Sean Owen:對不起,有人沒有知道他們在談論編輯我的答案。我需要找出那裏有什麼樣的編輯警報... – CommonsWare 2011-09-09 21:21:46

+0

Erp是啊我想通了我評論後發生了什麼。得到它了。 – 2011-09-09 22:32:21

7

轉到here的鏈接。

在要觸發條形碼掃描活動包括

IntentIntegrator.initiateScan(YourActivity.this); 

,然後還包括:

public void onActivityResult(int requestCode, int resultCode, Intent intent) { 
    if (requestCode == 0) { 
     if (resultCode == RESULT_OK) { 
      String contents = intent.getStringExtra("SCAN_RESULT"); 
      String format = intent.getStringExtra("SCAN_RESULT_FORMAT"); 
      // Handle successful scan 
      TextView 
     } else if (resultCode == RESULT_CANCELED) { 
      // Handle cancel 
     } 
    } 
}; 

條形碼掃描儀應用程序將處理實際的掃描。如果未安裝 條形碼掃描儀應用程序,則集成商將提示它們 進行安裝。

-----------從nEx.Software ---------------

0

檢查AndroidManifest你是否已經給出了「機器人:名稱「屬性正確爲新添加的活動。你得到了「ActivityNotFoundException」這主要是因爲你可能使用了不同的包名,ZXing使用的是「com.google.zxing.client.android」包名。當你加載ZXing的第一個Activity時,給它一個絕對類路徑不是相對路徑。那麼你的錯誤將消失。

0

條形碼掃描器應用程序沒有安裝在您的仿真器上,這是給這個例外。下面的鏈接提供了一步一步的指導如何在模擬器上安裝第三方應用程序:

Install application on emulator

1

只需將此代碼添加到您的清單文件中,application標籤內:

<activity 
     android:name="com.google.zxing.client.android.CaptureActivity" 
     android:configChanges="orientation|keyboardHidden" 
     android:screenOrientation="landscape" 
     android:theme="@android:style/Theme.NoTitleBar.Fullscreen" 
     android:windowSoftInputMode="stateAlwaysHidden" > 
     <intent-filter> 
      <action android:name="android.intent.action.MAIN" /> 

      <category android:name="android.intent.category.LAUNCHER" /> 
     </intent-filter> 
     <intent-filter> 
      <action android:name="com.google.zxing.client.android.SCAN" /> 

      <category android:name="android.intent.category.DEFAULT" /> 
     </intent-filter> 
    </activity> 

然後加入如果尚未添加以下權限,則在文件頂部:

<uses-permission android:name="android.permission.CAMERA" /> 

0

如果您第一次使用zxing,我推薦這個項目* 1 *,它是zxing的一部分,您需要的只是導入項目並運行它。此項目嘗試使用QR碼在Android中更容易一點。 強烈建議bigenner.good運氣。最後,謝謝Sean Owen;

0
  1. 打開模擬器的SD卡。
  2. 將鏈接複製到BarcodeScaner上ZXing download page發現
  3. 在模擬器和點開瀏覽器鏈接編輯框
  4. 輸入端子和命令 adb shell input text 'https://code.google.com/p/zxing/downloads/detail?name=BarcodeScanner-4.5.1.apk&can=2&q=' - 在斑馬線下載頁面
  5. 鏈接複製到瀏覽器,以便該鏈接的鏈接發現你可以下載並安裝它。這解決了所描述的問題。
0

我使用斑馬線的標籤(片段),並使用支持庫(材料設計的組件),所以我不得不這樣稱呼它:

IntentIntegrator積分=新IntentIntegrator(getActivity()) ; integrator.forSupportFragment(this).initiateScan();

然後在onActivityResult()

if (resultCode == Activity.RESULT_OK) { 
     if (requestCode == IntentIntegrator.REQUEST_CODE) { 

      String contents = data.getStringExtra("SCAN_RESULT"); 
      String format = data.getStringExtra("SCAN_RESULT_FORMAT"); 
      Log.i(TAG, "Barcode Result: " + contents); 
      etc... 
     } 
    } 

,並在我的Manifest.xml

<activity 
     android:name="com.google.zxing.client.android.CaptureActivity" 
     android:configChanges="orientation|keyboardHidden" 
     android:windowSoftInputMode="stateAlwaysHidden" > 
     <intent-filter> 
      <action android:name="android.intent.action.MAIN" /> 

      <category android:name="android.intent.category.DEFAULT" /> 
     </intent-filter> 
     <intent-filter> 
      <action android:name="com.google.zxing.client.android.SCAN" /> 

      <category android:name="android.intent.category.DEFAULT" /> 
     </intent-filter> 
    </activity> 

這一切現在工作非常漂亮。我只是使用意圖和startActivityForResult()而沒有成功。掃描儀將啓動並修復QR碼,但沒有返回。

在我build.grade,我有:

庫{mavenCentral() 行家{URL 「https://raw.github.com/embarkmobile/zxing-android-minimal/mvn-repo/maven-repository/」}}

compile 'com.google.zxing:core:3.2.1' 
compile 'com.embarkmobile:zxing-android-minimal:[email protected]' 
compile 'com.embarkmobile:zxing-android-integration:[email protected]'