2012-08-02 56 views
6

Tôi đang thực hiện một ứng dụng EMV trên hệ điều hành Android (Samsung Galaxy).Android NFC: Thẻ bị mất khi lệnh APDU được gửi tới thẻ thông minh

Tôi có thể gửi một số lệnh APDU mà không gặp vấn đề gì nhưng khi tôi đang cố gắng gửi lệnh xác thực nội bộ. Tôi có lỗi này: Thẻ bị mất. Bạn có ý tưởng nào liên quan đến mục đích của lỗi này không? Tôi không phải là nhà phát triển thử nghiệm trên Android, có thể tôi đã quên một số nội dung.

  • lệnh là chính xác.
  • Tôi có thể thay thế bằng một lệnh khác, nó hoạt động (ý tôi là tôi có thể khôi phục phản hồi).

Trong trường hợp nào, giao tiếp NFC có thể bị hỏng trên Android?

Ở đây, bạn có thể thấy vấn đề của tôi khi lệnh được gửi:

D/ECInfoGrabber (14.088): Gửi: 00 88 00 00 04 14 16 67 3D
D/OpenGLRenderer (14.088): Flushing cache (chế độ 0) D/dalvikvm (14088): GC_FOR_ALLOC giải phóng 227K, 4% miễn phí 14298K/14855K, tạm dừng 29ms I/dalvikvm-heap (14088): Phát triển heap (frag case) tới 14.142MB cho 115216-byte phân bổ D/dalvikvm (14088): GC_FOR_ALLOC được giải phóng 3K, 4% miễn phí 14408K/14983K, đã tạm dừng 15ms

Cảm ơn

Trả lời

10

Một khả năng là phản hồi từ thẻ mất nhiều thời gian hơn cài đặt hết thời gian mặc định. Điều này thường xảy ra khi thẻ phải thực hiện một số tính toán nội bộ; thường trong trường hợp các hoạt động mã hóa như xác thực.

Bạn có thể thay đổi giá trị time-out sử dụng IsoDep.setTimeout():

IsoDep iso = IsoDep.get(tag); 
iso.connect(); 
iso.setTimeOut(5000); // 5 sec time out 
iso.transceive(apduCommand); // now send your command 
+1

Cảm ơn bạn. Nó hoạt động. Bạn là một anh hùng – user1571292

Các vấn đề liên quan