2013-04-16 52 views
8

有沒有人成功創建了card.io包裝他們願意分享,可以在單可用於Android應用程序或有人能揭示一些輕我在做什麼錯誤?card.io單爲Android(Xamarin工作室)

  1. 創建一個新的Android 綁定的Java庫項目
  2. 添加.jar和.so文件從card.io SDK 3.0.3,一定要使用現有的文件夾結構
  3. 添加以下變換/ EnumMethods。 XML解析編譯器錯誤:

    <mapping jni-class="io/card/payment/CardIOActivity"> 
        <method jni-name="onActivityResult" parameter="p1" clr-enum-type="Android.App.Result" /> 
    </mapping> 
    
  4. 添加在我的主要應用上述庫的引用

編譯的一切,我可以訪問card.io類:

using IO.Card.Payment; 

private void WireupScanCardButton() 
{ 
    Log.Debug(this.GetType().Name, "WireupScanCardButton"); 

    this.ScanCardButton.Click += delegate 
    { 
     Log.Debug(this.GetType().Name, "ScanCard.Click"); 

     var intent = new Intent(this, typeof(CardIOActivity)); 

     // Required for authentication with card.io 
     intent.PutExtra(CardIOActivity.ExtraAppToken, "<MY PRIVATE TOKEN HERE>"); 

     // Customize these values to suit your needs. 
     intent.PutExtra(CardIOActivity.ExtraNoCamera, false); 
     intent.PutExtra(CardIOActivity.ExtraSuppressManualEntry, true); 
     intent.PutExtra(CardIOActivity.ExtraRequireExpiry, false); 
     intent.PutExtra(CardIOActivity.ExtraRequireCvv, false); 
     intent.PutExtra(CardIOActivity.ExtraRequireZip, false); 

     // Run the Activity 
     this.StartActivityForResult(intent, 0);    
    }; 
} 

但是,我總是出現以下錯誤:

該設備無法使用相機來讀取卡號

注:

  • 我曾嘗試在幾個不同的物理設備
  • 的card.io.jar文件具有的生成操作運行:EmbeddedJar
  • 的.so文件,有一個生成操作:EmbeddedNativeLibrary
  • 我明確設置阿比在項目的ItemGroup

每個.so文件我很新到Android/Xamarin的,所以花的時間比編碼研究。

的.so文件,不會出現要在.apk文件

編輯:

的.so文件,似乎要由編譯得到回升。 編譯後,如果我檢查obj/Release/文件夾,則存在一個子文件夾native_library_imports根據支持的Abi類型在適當的子文件夾中包含.so文件。

然而,.so文件仍然沒有出現在最終的.apk文件。

logcat的輸出:

04-18 08:12:20.462 D/ActivityAddPaymentSource(5824): ScanCard.Click 
04-18 08:12:20.472 E/ActivityManager( 191): exception bw.write()java.io.IOException: Transport endpoint is not connected 
04-18 08:12:20.472 I/ActivityManager( 191): Starting: Intent { cmp=com.onetab.android/io.card.payment.CardIOActivity (has extras) } from pid 5824 
04-18 08:12:20.472 D/PowerManagerService( 191): acquireWakeLock flags=0x1 tag=ActivityManager-Launch 
04-18 08:12:20.492 D/ActivityAddPaymentSource(5824): OnPause 
04-18 08:12:20.492 E/Sensors ( 191): GsSensor: line +83 ~~~handle===0~~en==1~~!n 
04-18 08:12:20.502 E/Sensors ( 191): GsSensor::setDelay: line +113 ~~~handle===0~~ns==1553152~~!n 
04-18 08:12:20.502 E/Sensors ( 191): GsSensor::setDelay: line +113 ~~~handle===0~~ns==-2135896001~~!n 
04-18 08:12:20.542 W/card.io (5824): cardioScanErrorNoDeviceSupport: This device cannot use the camera to read card numbers. 
04-18 08:12:20.572 E/ActivityManager( 191): exception bw.write()java.io.IOException: Transport endpoint is not connected 
04-18 08:12:20.572 D/PowerManagerService( 191): acquireWakeLock flags=0x1 tag=ActivityManager-Launch 
04-18 08:12:20.582 E/Sensors ( 191): GsSensor: line +83 ~~~handle===0~~en==0~~!n 
04-18 08:12:20.622 D/ActivityAddPaymentSource(5824): OnResume 

感謝

回答

4

那麼,我經過一番實驗終於解決了這個問題。

  1. 按照4個​​步驟在我原來的職位
  2. 提取card.io SDK到庫項目的根,所以你最終得到的文件夾結構:ProjectRoot /庫/ <the sdk files and abi subfolders>
  3. .jar文件添加到項目文件夾(選擇添加鏈接選項)
  4. 添加文件夾到你的項目的根(不包括.jar文件)
  5. 您可能需要手動編輯的.csproj文件添加的每個的.so文件
  6. 阿比目標確保。 JAR文件EmbeddedJar
  7. 一個生成操作確保。所以文件,有一個生成操作 EmbeddedNativeLibrary

@tomwhipple - 感謝貢獻。我試圖提出你的答案,但顯然我沒有足夠的聲譽。

4

而Android的logcat應該表現出更具體的錯誤消息,但這個問題是由於缺少本地庫。 (對於正常的Android項目,這些項目位於/libs目錄中,具有架構特定的子目錄。)

這些是您提到的.so文件從.apk中丟失的文件。它們包含了所有的圖像處理邏輯,因此card.io不能掃描它們是否不在那裏。

+0

感謝您的回覆。我已經編輯了我原來的帖子,提供了更多信息有一些關於**我正在研究的傳輸端點未連接**。 – dalesmckay