Сканирование карты с помощью card.io

У меня есть проект, в котором вы хотите отсканировать карту. Для этой задачи я использую библиотеку card.io. Недавно я обновил библиотеку до последней версии (5.4.0) И теперь вместо сканирования карты меняется ввод в нее вручную. Что я сделал не так? Все настройки производятся согласно инструкции.

Манифест Android

    <uses-sdk
            android:minSdkVersion="15"
            android:targetSdkVersion="19" />

        <uses-permission android:name="android.permission.INTERNET" />
        <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
        <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
        <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
        <uses-permission android:name="android.permission.CAMERA" />
        <uses-permission android:name="android.permission.VIBRATE" />
        <uses-permission android:name="android.permission.NFC" />
        <uses-permission android:name="com.google.android.gallery3d.permission.GALLERY_PROVIDER" />
        <uses-permission android:name="com.google.android.c2dm.permission.RECEIVE" />

    <activity android:name="io.card.payment.CardIOActivity" android:configChanges="keyboardHidden|orientation" />
            <activity android:name="io.card.payment.DataEntryActivity" />
<uses-feature
        android:name="android.hardware.camera"
        android:required="false" />
    <uses-feature
        android:name="android.hardware.camera.autofocus"
        android:required="false" />
    <uses-feature
        android:name="android.hardware.camera.flash"
        android:required="false" />

Затем этот класс, в котором я пытаюсь открыть scanActivity (CardIOActivity)

private static void launchCardIoPhoto(Context ctx) {
        if (!(ctx instanceof Activity)) return;
        //Intent scanIntent = new Intent("android.media.action.IMAGE_CAPTURE");
        Intent scanIntent = new Intent(ctx, CardIOActivity.class);
        //scanIntent.putExtra(CardIOActivity.EXTRA_APP_TOKEN, CARD_IO_API_KEY);
        scanIntent.putExtra(CardIOActivity.EXTRA_REQUIRE_EXPIRY, false);
        scanIntent.putExtra(CardIOActivity.EXTRA_REQUIRE_POSTAL_CODE, false);
        scanIntent.putExtra(CardIOActivity.EXTRA_REQUIRE_CVV, false);
        scanIntent.putExtra(CardIOActivity.EXTRA_SUPPRESS_MANUAL_ENTRY, true);
        scanIntent.putExtra(CardIOActivity.EXTRA_USE_CARDIO_LOGO, true);
        BankokApplication.app().ignoreNextResume();

        Fragment fragment = ((Activity) ctx).getFragmentManager().findFragmentById(R.id.bottom_sheet_container);
        if (fragment != null && fragment instanceof CardScanReceiver){
            fragment.startActivityForResult(scanIntent, REQ_CODE_CARD_IO_PHOTO);
        }else {
            ((Activity) ctx).startActivityForResult(scanIntent, REQ_CODE_CARD_IO_PHOTO);
        }
    }

И когда я пытаюсь это сделать, у меня получается что-то вроде этого: введите здесь описание изображения

Обновление из комментариев:

Протестировано на

  • Asus Z00AD (Зенфон)
  • Хуавей
  • Нексус 5
  • Genymotion

Пример приложения от card.io работает как положено

ИЗМЕНИТЬ

Найти ошибку:

No implementation found for boolean io.card.payment.CardScanner.nUseX86() (tried Java_io_card_payment_CardScanner_nUseX86 and Java_io_card_payment_CardScanner_nUseX86__)
Failed to load native library: No implementation found for boolean io.card.payment.CardScanner.nUseX86() (tried Java_io_card_payment_CardScanner_nUseX86 and Java_io_card_payment_CardScanner_nUseX86__)

person metalink    schedule 24.06.2016    source источник
comment
На каком устройстве вы его тестируете?   -  person antonio    schedule 24.06.2016
comment
Asus Z00AD (Zenphone), Huawei, Nexus 5 и Genymotion   -  person metalink    schedule 24.06.2016


Ответы (2)


Похоже, что card.io не может инициализировать камеру устройства и валится на ручной ввод.

Если на вашем устройстве есть камера, убедитесь, что камера не используется, и добавьте ее в свой манифест (из документацию), чтобы не требовать ненужных функций камеры:

<!-- Camera features - recommended -->
<uses-feature android:name="android.hardware.camera" android:required="false" />
<uses-feature android:name="android.hardware.camera.autofocus" android:required="false" />
<uses-feature android:name="android.hardware.camera.flash" android:required="false" />

Кроме того, если ваше устройство работает под управлением Android 6, а пользователь запретил доступ к камере, card.io перейдет к ручному вводу карты.

person antonio    schedule 24.06.2016
comment
это в проекте, забыл вставить опрос - person metalink; 24.06.2016
comment
Камера используется? Вы пробовали перезагрузить устройство? - person antonio; 24.06.2016
comment
Камера в порядке. Не перезагружайте устройство. Скачайте приложение из библиотеки, оно работает нормально - person metalink; 24.06.2016
comment
Вы используете Android 6? вы отказали в разрешении камеры? - person antonio; 24.06.2016
comment
Разрешения на камеру получаю. Проверка версии 6.5, 4.2.2 Android - person metalink; 25.06.2016
comment
У меня есть класс, который расширяет приложение, может быть, мне нужно что-то в нем сделать? - person metalink; 27.06.2016

Решить проблему. В проекте стояли родные библиотеки предыдущей версии card.io, после удаления библиотечных данных все работало корректно.

person metalink    schedule 27.06.2016
comment
что такое библиотечные данные? Вы имеете в виду каталог libs в проекте Android? - person Mahendra Chhimwal; 15.05.2017
comment
Не могли бы вы уточнить это? Как именно вы решили проблему? Спасибо! - person Alejandro Casanova; 25.08.2019