Có ai đã tạo thành công trình bao bọc card.io mà họ sẵn sàng chia sẻ có thể được sử dụng trong ứng dụng Mono dành cho Android hoặc ai đó có thể làm sáng tỏ những gì tôi đang làm sai rồi?card.io Mono dành cho Android (Xamarin Studio)
- Tạo mới Android Java Bindings Thư viện Dự án
- Thêm .jar và file .so từ card.io SDK 3.0.3, hãy chắc chắn để sử dụng cấu trúc thư mục hiện
Thêm dòng sau vào Transforms/EnumMethods. xml để giải quyết một lỗi biên dịch:
<mapping jni-class="io/card/payment/CardIOActivity"> <method jni-name="onActivityResult" parameter="p1" clr-enum-type="Android.App.Result" /> </mapping>
- Thêm một tham chiếu đến thư viện nêu trên trong ứng dụng chính của tôi
Tất cả mọi thứ biên dịch và tôi có thể truy cập vào các lớp 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);
};
}
Tuy nhiên, tôi luôn luôn trình bày với các lỗi sau:
thiết bị này không thể sử dụng máy ảnh để đọc số thẻ
GHI CHÚ:
- Tôi đã thử chạy trên nhiều thiết bị vật lý khác nhau
- file card.io.jar có một hành động xây dựng của: EmbeddedJar
- các file .so có một hành động xây dựng của: EmbeddedNativeLibrary
- Tôi đã dứt khoát thiết lập Abi cho mỗi file .so trong dự án ItemGroup
tôi rất mới để Android/Xamarin, vì vậy dành nhiều thời gian nghiên cứu hơn mã hóa.
Các file .so dường như không có trong file .apk
Edit:
Các file .so dường như để nhặt bởi trình biên dịch. Sau khi biên dịch, nếu tôi kiểm tra thư mục obj/Release/ có một thư mục con native_library_imports có chứa tệp .so trong các thư mục con thích hợp theo loại Abi được hỗ trợ.
Tuy nhiên, các tệp .so vẫn không xuất hiện trong tệp .apk cuối cùng.
logcat đầu ra:
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
nhờ
Cảm ơn bạn đã trả lời. Tôi đã chỉnh sửa bài đăng gốc của mình với thông tin thêm. Có điều gì đó về ** Điểm cuối giao thông không được kết nối ** mà tôi đang xem xét. – dalesmckay