【问题标题】:Scanning card with card.io使用 card.io 扫描卡
【发布时间】:2016-06-24 13:08:09
【问题描述】:

我有一个项目,您要在其中扫描卡片。对于这个任务,我使用库 card.io。最近我将库更新到最新版本(5.4.0)现在,不是扫描卡而是手动输入它。我做错了什么?所有设置均按照说明进行。

AndroidManifest

    <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);
        }
    }

当我尝试这样做时,我有这样的事情:

来自 cmets 的更新:

经过测试

  • 华硕 Z00AD (Zenphone)
  • 华为
  • Nexus 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__)

【问题讨论】:

  • 你在什么设备上测试它?
  • 华硕 Z00AD (Zenphone)、华为、Nexus 5 和 Genymotion

标签: android camera scanning card.io


【解决方案1】:

好像card.io无法初始化设备摄像头,只能手动输入了。

如果您的设备有摄像头,检查摄像头是否在使用中,并将其添加到您的清单(来自the documentation)以避免需要摄像头的不必要功能:

<!-- 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 将陷入手动输入卡。

【讨论】:

  • 它在项目中,我忘了插入投票
  • 相机在使用吗?您是否尝试过重启设备?
  • 相机正常。不要重启设备。从库中下载应用程序,它工作正常
  • 您使用的是 Android 6 吗?您是否拒绝了相机权限?
  • 我获得的相机权限。检查Android 6.5、4.2.2版本
【解决方案2】:

修复问题。 该项目是上一版本card.io的原生库,在删除库数据后它可以正常工作。

【讨论】:

  • 什么是图书馆数据?你的意思是Android项目中的libs目录吗?
  • 您能详细说明一下吗?你是如何解决这个问题的?谢谢!
猜你喜欢
  • 2017-05-18
  • 2015-11-09
  • 2014-07-09
  • 1970-01-01
  • 1970-01-01
  • 2013-11-19
  • 1970-01-01
  • 2012-10-27
  • 2017-11-26
相关资源
最近更新 更多