1

そのため、現在、Android HCE (ホストベースのカード エミュレーション) を使用してスマートカードをエミュレートするシンプルなアプリを構築しています。アプリは、受信したすべての APDU コマンドに対して {90,00} バイト配列のみを返します。コードは次のとおりです。

public class MyHostApduService extends HostApduService {

    @Override
    public byte[] processCommandApdu(byte[] apdu, Bundle extras) {
        byte[] response = new byte[2];
        response[0] = (byte)0x90;
        response[1] = 0x00;
        return response;
    }

    //Rest of the code...
}

そして、このようにjavax.smartcardio.CardTerminalのCardTerminal.connect()メソッドを使用して、スマートフォン(Sony Xperia M2を使用しています)をスマートカードリーダー(ACR122U-A9)に接続しようとしました

Card card = terminal.connect("*");

実際のスマート カードでは機能しましたが、私の電話には接続したくありません。ビープ音はするが、LED が消灯し (実際の IC カードを検出したときのように緑色にはならない)、スマートフォンを取り外すと CardException が発生し、LED ライトが赤色に戻りました。リーダーが電話に接続されているように見えても (LED が緑色に変わった)、電話が APDU を受信して​​いないように見えることがあります。springcard の scScriptor.exe を使用して接続しようとしましたが、同じ結果になりました。

コードに欠けているものはありますか?それともおそらく技術的な問題ですか?

編集:友人のgalaxy s iiiにapkファイルをインストールしましたが、動作しているので、これは電話の問題であると思われます

4

1 に答える 1

1

この権利を理解していて、問題が Android クライアントにある場合は、マニフェストと xml ファイルでアプリケーションの適切な AID を定義していない可能性があります ( https://developer.android.com/guide/も参照)。 topic/connectivity/nfc/hce.html ) また、間違った AID が登録されている可能性もあります。apdu コマンドをログに記録して、読者がどの支援を求めているかを確認してください。

Androidマニフェスト:

 <service android:name=".MyHostApduService" android:exported="true"
         android:permission="android.permission.BIND_NFC_SERVICE">
    <intent-filter>
        <action android:name="android.nfc.cardemulation.action.HOST_APDU_SERVICE"/>
    </intent-filter>
    <meta-data android:name="android.nfc.cardemulation.host_apdu_service"
               android:resource="@xml/apduservice"/>
</service>

apduservice.xml (aid-filter タグに AID を入力):

 <host-apdu-service xmlns:android="http://schemas.android.com/apk/res/android"
           android:description="@string/servicedesc"
           android:requireDeviceUnlock="false">
    <aid-group android:description="@string/aiddescription"
               android:category="other">
        <aid-filter android:name="F0010203040506"/>
        <aid-filter android:name="F0394148148100"/>
    </aid-group>
</host-apdu-service>
于 2014-09-16T15:56:12.753 に答える