2016-06-24 10 views
1

Ich habe ein Projekt, in dem Sie die Karte scannen möchten. Für diese Aufgabe verwende ich die Bibliothek card.io. Vor kurzem habe ich die Bibliothek auf die neueste Version aktualisiert (5.4.0) Und jetzt, anstatt die Karte zu scannen, wird sie manuell eingegeben. Was habe ich falsch gemacht? Alle Einstellungen werden gemäß den Anweisungen vorgenommen.Scan-Karte mit card.io

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" /> 

Dann werden diese Klasse, in der ich offen scanActivity versuchen (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); 
     } 
    } 

Und wenn ich versuche zu tun, dass, ich habe so etwas wie dies: enter image description here

Update von den Kommentaren:

Getestet auf

  • Asus Z00AD (Zenphone)
  • Huawei
  • Nexus 5
  • Genymotion

Die Beispielanwendung von card.io wie erwartet funktioniert

EDIT

Suche Fehler:

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__) 
+0

An welchem ​​Gerät testen Sie es? – antonio

+0

Asus Z00AD (Zenphone), Huawei, Nexus 5 und Genymotion – metalink

Antwort

0

Problem beheben. Das Projekt war die native Bibliotheken der früheren Version card.io nach dem Entfernen von Bibliotheksdaten hat es richtig funktioniert.

+0

Was sind Bibliotheksdaten? meinst du libs-Verzeichnis in Android-Projekt? –

0

Es scheint, dass card.io nicht die Gerätekamera und fällt auf die manuelle Eingabe initialisieren.

Wenn Ihr Gerät über eine Kamera verfügt, prüfen, ob die Kamera nicht in Gebrauch ist, und fügen Sie diese zu Ihrem Manifest (von the documentation) zu vermeiden unnötigen funcitionalities der Kamera erfordert:

<!-- 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" /> 

Auch Wenn auf Ihrem Gerät Android 6 ausgeführt wird und der Benutzer die Kameraberechtigung verweigert hat, wird card.io auf die manuelle Karteneingabe fallen.

+0

ist es in dem Projekt, habe ich vergessen, eine Umfrage einzufügen – metalink

+0

Ist die Kamera im Einsatz? Haben Sie versucht, das Gerät neu zu starten? – antonio

+0

Die Kamera ist in Ordnung. Starten Sie das Gerät nicht neu. Laden Sie die Anwendung aus der Bibliothek, es funktioniert gut – metalink