2015-09-07 42 views
0

我想在我的應用程序中實現Card.io,我遵循Card.io網站上的說明,當我進入我的應用程序並啓動它時。當我點擊按鈕時,我打電話給CardIOActivity,但無法打開相機。我有當我點擊按鈕enter image description here卡io不掃描Android中的信用卡

這是我的清單代碼這個畫面:

<uses-sdk android:minSdkVersion="8" /> 

<uses-permission android:name="android.permission.CAMERA" /> 
<uses-permission android:name="android.permission.VIBRATE" /> 

<uses-feature 
    android:name="android.hardware.camera" 
    android:required="false" /> 
<uses-feature 
    android:name="android.hardware.camera.autofocus" 
    android:required="false" /> 

<application 
    android:label="card.io example" 
    android:theme="@style/MyTheme" > 
    <activity 
     android:name="MyScanActivity" 
     android:label="card.io example" > 
     <intent-filter> 
      <action android:name="android.intent.action.MAIN" /> 

      <category android:name="android.intent.category.LAUNCHER" /> 
     </intent-filter> 
    </activity> 
    <activity 
     android:name="io.card.payment.CardIOActivity" 
     android:configChanges="keyboardHidden|orientation" 
     android:hardwareAccelerated="true" /> 
    <activity 
     android:name="io.card.payment.DataEntryActivity" 
     android:screenOrientation="portrait" /> 
</application> 

,這是我的Java代碼

public class MyScanActivity extends Activity { 
final String TAG = getClass().getName(); 

private Button scanButton; 
private TextView resultTextView; 

private int MY_SCAN_REQUEST_CODE = 100; 
@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 

    resultTextView = (TextView) findViewById(R.id.resultTextView); 
    scanButton = (Button) findViewById(R.id.scanButton); 

} 

@Override 
protected void onResume() { 
    super.onResume(); 

    if (CardIOActivity.canReadCardWithCamera()) { 
     scanButton.setText("Scan a credit card with card.io"); 
    } else { 
     scanButton.setText("Enter credit card information"); 
    } 
} 

public void onScanPress(View v) { 

    Intent scanIntent = new Intent(this, CardIOActivity.class); 

    scanIntent.putExtra(CardIOActivity.EXTRA_REQUIRE_EXPIRY, true); 
    scanIntent.putExtra(CardIOActivity.EXTRA_REQUIRE_CVV, false); 
    scanIntent.putExtra(CardIOActivity.EXTRA_REQUIRE_POSTAL_CODE, false); 

    scanIntent.putExtra(CardIOActivity.EXTRA_SUPPRESS_MANUAL_ENTRY, false); 

    scanIntent.putExtra(CardIOActivity.EXTRA_KEEP_APPLICATION_THEME, false); 

    startActivityForResult(scanIntent, MY_SCAN_REQUEST_CODE); 
} 

@Override 
protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
    super.onActivityResult(requestCode, resultCode, data); 

    String resultStr; 
    if (data != null && data.hasExtra(CardIOActivity.EXTRA_SCAN_RESULT)) { 
     CreditCard scanResult = data.getParcelableExtra(CardIOActivity.EXTRA_SCAN_RESULT); 

     resultStr = "Card Number: " + scanResult.getRedactedCardNumber() + "\n"; 

     if (scanResult.isExpiryValid()) { 
      resultStr += "Expiration Date: " + scanResult.expiryMonth + "/" + scanResult.expiryYear + "\n"; 
     } 

     if (scanResult.cvv != null) { 

      resultStr += "CVV has " + scanResult.cvv.length() + " digits.\n"; 
     } 

     if (scanResult.postalCode != null) { 
      resultStr += "Postal Code: " + scanResult.postalCode + "\n"; 
     } 
    } else { 
     resultStr = "Scan was canceled."; 
    } 
    resultTextView.setText(resultStr); 

} 

}

我從來沒用過卡。 io,我不知道什麼是錯的。我如何使用Card.io掃描我的簽證或其他卡。 如果有人知道解決方案,請幫助我。

+0

看起來是這樣的示例應用程序的內容。如果示例應用程序不起作用,請檢查日誌中是否有錯誤消息,然後嘗試多個設備。 –

回答

0

card.io的要求是:

  • 後置攝像頭。
  • Android SDK版本8(Android 2.2)或更高版本。
  • ARMv7處理器。

我猜你的設備沒有使用ARMv7處理器。

0

我已經看到你沒有點擊監聽器添加到

scanButton.setOnClickListener(); 

測試此樣品

public class CardActivity extends Activity { 

    private int MY_SCAN_REQUEST_CODE = 100; 

    Button scanButton; 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.card_io_layout); 

     scanButton = (Button)findViewById(R.id.button); 
     scanButton.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View view) { 
       onScan(); 
      } 
     }); 
    } 

    private void onScan() { 
    if (CardIOActivity.canReadCardWithCamera()) { 
     Intent scanIntent = new Intent(this, CardIOActivity.class); 
     scanIntent.putExtra(CardIOActivity.EXTRA_APP_TOKEN,"999551db82b04e36b0664ab8217e0624"); 

     scanIntent.putExtra(CardIOActivity.EXTRA_REQUIRE_EXPIRY,true); 
     scanIntent.putExtra(CardIOActivity.EXTRA_REQUIRE_CVV,false); 
     scanIntent.putExtra(CardIOActivity.EXTRA_REQUIRE_POSTAL_CODE,false); 
     scanIntent.putExtra(CardIOActivity.EXTRA_SUPPRESS_MANUAL_ENTRY, false); 

     startActivityForResult(scanIntent,MY_SCAN_REQUEST_CODE); 
    } 
    else{ 
     //Toast camera not supported So enter card manually 
    } 

    } 

    @Override 
    protected void onActivityResult(int requestCode, int resultCode, Intent data){ 
     super.onActivityResult(requestCode, resultCode, data); 

     if (requestCode == MY_SCAN_REQUEST_CODE) { 
      String resultDisplayString; 
      if (data != null && data.hasExtra(CardIOActivity.EXTRA_SCAN_RESULT)) { 
       CreditCard scanResult = data.getParcelableExtra(CardIOActivity.EXTRA_SCAN_RESULT); 
       ((EditText)findViewById(R.id.textView)).setText(scanResult.getRedactedCardNumber()); 
      } 
     } 
    } 
    @Override 
    protected void onResume() { 
     super.onResume(); 
     if (CardIOActivity.canReadCardWithCamera(this)) { 
      scanButton.setText("Scan a credit card with card.io"); 
     } 
     else { 
      scanButton.setText("Enter credit card information"); 
     } 
    } 
}