3

最初に APDU コマンドを送信しようとして「サポートされている長さを超えています」というエラーが表示されたとき、これは NFC チップ自体の制限にすぎないと思いました。回避方法はありません。ただし、このサイトでは、代わりに Android OS のソフトウェアの問題である可能性があることを示唆しています。

現在利用可能なスマートフォンの多くは、オペレーティング システムを大幅に変更しなければ、NFC 経由で 261 バイト[2] しか送信できません。

この問題を回避する方法と、変更が正確に「主要」である方法について詳しく知っている人はいますか?

また、拡張長の APDU をサポートしている電話機のリストはありますか? そうでない場合は、Google であまり見つけられないので、おそらく開始する必要があります。

Samsung Galaxy Note II はサポートしていますが、Samsung Galaxy S3、Nexus 5、Galaxy Nexus はサポートしていません。

4

2 に答える 2

2

このサイトを参照してください: https://code.google.com/p/android/issues/detail?id=76598

あなたがしなければならないこと:

  • Android ソースをダウンロードする
  • NativeNfcManager.java の行で「261」を「2462」に変更します (上記のリンク先のサイトに示されているように)。
  • Android のビルド
  • 変更した Android バージョンをスマートフォンにフラッシュします

Nexus 5 用の Android をビルドするためのチュートリアルは、http: //nosemaj.org/howto-build-android-kitkat-nexus-5にあります。

これはスマートフォンのリーダーモードで機能しますが、カードエミュレーションモードで機能させる方法はまだわかりません.

于 2014-10-27T11:08:44.473 に答える
1

より優れた/より簡単で移植性の高いソリューションは、261 バイト (またはそれ以下) のみを送信し、ISO7816-4 ステータス コード SW1-SW2 = 0x61xx を返すことです。xx は、まだ使用可能なデータ バイト数を示します。リーダーは ISO7816-4 コマンド「GET RESPONSE」を送信して、残りのバイトを要求します。

たとえば、Android HCE から 300 バイトを送信する場合は、次のように返信を開始します。

  1. HCE: sendResponseApdu({ 250 first bytes of data + 0x6132 })(0x32 は残り 50 バイトを意味します)
  2. NFC カードリーダーは以下を送信する必要があります。GET RESPONSE
  3. HCE:sendResponseApdu({ last 50 bytes of data + 0x9000 })
于 2016-12-03T20:20:13.383 に答える