Hat jemand erfolgreich einen card.io Wrapper erstellt, den sie teilen möchten, der in einem Mono für Android-Anwendung verwendet werden kann oder kann jemand etwas Licht auf das, was ich tue, werfen falsch?card.io Mono für Android (Xamarin Studio)
- Erstellen Sie ein neues Android Java Bindings Bibliothek Projekt
- die .jar hinzufügen und .so-Dateien von card.io SDK 3.0.3, müssen Sie die vorhandene Ordnerstruktur
Fügen Sie die folgenden Wandelt/EnumMethods verwenden. xml einen Compiler-Fehler zu beheben:
<mapping jni-class="io/card/payment/CardIOActivity"> <method jni-name="onActivityResult" parameter="p1" clr-enum-type="Android.App.Result" /> </mapping>
- Fügen Sie einen Verweis auf die oben Bibliothek in meiner Hauptanwendung
Alles kompiliert und ich kann die card.io Klassen zugreifen:
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);
};
}
Allerdings bin ich immer mit dem folgenden Fehler dargestellt:
Dieses Gerät darf keine Kamera Kartennummern verwenden können lesen
HINWEISE:
- Ich habe versucht, auf verschiedene physikalische Geräte mit
- die card.io.jar Datei hat eine Build Action von: EmbeddedJar
- die .so-Dateien haben eine Build Action von: EmbeddedNativeLibrary
- ich ausdrücklich die festgelegt haben Abi für jede .so-Datei im Projekt ItemGroup
ich bin auf Android/Xamarin sehr neu, so dass mehr Zeit mit der Erforschung verbringen als Codierung.
Die .so-Dateien erscheinen nicht in der APK-Datei sein
Edit:
Die .so-Dateien scheinen durch den Compiler zu abgeholt. Nach der Kompilierung, wenn ich den Ordner obj/Release/ überprüfen, gibt es einen Unterordner native_library_imports, die die .SO-Dateien in entsprechenden Unterordnern nach dem unterstützten Abi-Typ enthält.
Die .SO-Dateien erscheinen jedoch immer noch nicht in der endgültigen APK-Datei.
logcat Ausgang:
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
dank
Danke für die Antwort. Ich habe meinen ursprünglichen Beitrag mit weiteren Informationen bearbeitet. Es gibt etwas über ** Transport Endpunkt ist nicht verbunden **, die ich untersuche. – dalesmckay