Одна из возможностей заключается в том, что ответ с карты занимает больше времени, чем установленная по умолчанию таймаут. Это часто происходит, когда карта должна выполнять некоторые внутренние вычисления; как правило, в случае криптографических операций, таких как аутентификация.
Вы можете изменить значение тайм-аута, используя IsoDep.setTimeout()
:
IsoDep iso = IsoDep.get(tag);
iso.connect();
iso.setTimeOut(5000); // 5 sec time out
iso.transceive(apduCommand); // now send your command
Я достиг этого путем выполнения следующей внутренней части моего пользовательского расположения Объекта RecyclerView:
override fun onMeasure(widthMeasureSpec: Int, heightMeasureSpec: Int) {
val newMeasuredWidth =
(MeasureSpec.getSize(widthMeasureSpec) * WIDTH_ADJUSTMENT_RATIO).toInt()
super.onMeasure(
MeasureSpec.makeMeasureSpec(newMeasuredWidth, MeasureSpec.EXACTLY),
heightMeasureSpec
)
}