Quelqu'un a-t-il réussi à créer un wrapper card.io qu'il est prêt à partager et qui peut être utilisé dans une application Mono pour Android ou quelqu'un peut-il m'éclairer sur ce que je fais mal ?
-
Créer un nouveau Bibliothèque de liaisons Java pour Android Projet
-
Ajouter les fichiers .jar et .so de card.io SDK 3.0.3 Pour ce faire, assurez-vous d'utiliser la structure de dossier existante
-
Ajouter ce qui suit à Transforms/EnumMethods.xml pour résoudre une erreur du compilateur :
<mapping jni-class="io/card/payment/CardIOActivity"> <method jni-name="onActivityResult" parameter="p1" clr-enum-type="Android.App.Result" /> </mapping>
-
Ajouter une référence à la bibliothèque ci-dessus dans mon application principale
Tout se compile et je peux accéder aux classes 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);
};
}
Cependant, je suis toujours confronté à l'erreur suivante :
ce dispositif ne peut pas utiliser la caméra pour lire les numéros de carte
NOTES :
- J'ai essayé de l'exécuter sur plusieurs dispositifs physiques différents
- le fichier card.io.jar a une action de construction de : EmbeddedJar
- les fichiers .so ont une action de construction de : EmbeddedNativeLibrary
- J'ai explicitement défini le Abi pour chaque fichier .so du projet Groupe d'articles
Je suis très novice en matière d'Android/Xamarin, et je passe donc plus de temps à faire des recherches qu'à coder.
Les fichiers .so ne semblent pas se trouver dans le fichier .apk
Edita:
Les fichiers .so semblent être pris en compte par le compilateur. Après la compilation, si je vérifie le fichier obj/Release/ il existe un sous-dossier Importations de bibliothèques natives qui contient les fichiers .so dans des sous-dossiers appropriés en fonction du type d'Abi pris en charge.
Cependant, les fichiers .so n'apparaissent toujours pas dans le fichier .apk final.
sortie 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
Merci de votre attention.