Android NfcV getinformationコマンドは1バイトのみを返します

カルロ

NFCタグのバイナリ情報を読み取るためのアプリを書いています。NFCインテントハンドラー関数のコードは次のとおりです。

protected void onNewIntent(@NonNull Intent intent)
{
    try
    {
        Tag    tag     = intent.getParcelableExtra(NfcAdapter.EXTRA_TAG);
        NfcV   nfcV    = NfcV.get(tag);
        byte[] cmdInfo = new byte[]{(byte) 0x02, (byte) 0x2b}; // 'Get info' command
        byte[] answer  = nfcV.transceive(cmdInfo); // Read info from tag.

        ...
    }
    catch(IOException e)
    {
        ...
    }
}

Samsung S3 NeoでNFCタグを読み取ってこの関数を実行すると、すべてが正常に機能し、回答変数に期待されるデータが入力されます。

00 04 4B A0 14 01 00 A0 07 E0 F3 07

ただし、Huawei P8liteで同じNFCタグを読み取って同じ関数を実行すると、回答変数は1バイトだけで埋められます。

03

エラーが発生した場合、ISO15693-3標準は次のようなものを受け取る必要があると述べています

01 03

つまり、少なくとも2バイトです。ここで、2番目のバイトはエラーコードです。したがって、私が実際に得ている答えは理論的には不可能です。

私は何が間違っているのですか?モバイルハードウェアに依存しますか?そして、どうすればそれを修正できますか?

マイケルローランド

アドレス指定されたコマンドを使用していないため(Address_flagが設定されていないため、要求にUIDフィールドがありません)。オプションのコマンドがタグでサポートされていない場合(エラーコードでさえも)、応答をまったく受け取らないはずです。したがって、あなたは受け取っ03たり01 03、基準に従わないでください

AndroidデバイスのNFCチップセットには、ISO / IEC 15693に関して制限があり、完全な標準をサポートしていない場合が多いことに注意してください。たとえば、一部のチップセットには、アドレス指定されていないコマンドに問題があることがわかっています。アドレス指定されたバージョンのコマンドを使用して、これを回避できます。

Tag tag = intent.getParcelableExtra(NfcAdapter.EXTRA_TAG);
NfcV nfcV = NfcV.get(tag);
byte[] cmdInfo = new byte[]{
        (byte)0x20,
        (byte)0x2B,
        (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00 };
System.arraycopy(tag.getId(), 0, cmdInfo, 2, 8);
byte[] answer = nfcV.transceive(cmdInfo);

デバイスのNFCチップセットでは、高データレートで応答するVICCで問題が発生する可能性があるため、Data_rate_flagのさまざまな設定でテストすることもできます。

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

Reading NFC Tag types "android.nfc.tech.NfcV" and "android.nfc.tech.NdefFormatable" with React Native

分類Dev

複数のブロックの書き込みコマンドがNfcVで失敗しました

分類Dev

Androidボタンのイベントをクリックします(バインドは1回のみ)

分類Dev

Android BLEクライアントは、onCharacteristicReadで600バイトのデータのみを返します

分類Dev

unzipはAndroid NDK zipでゼロ以外のコード2を返します(複数のバージョンでテスト済み)

分類Dev

コルドバイオンはAndroidアプリのキーストアを作成します

分類Dev

Android Studio:実行またはデバッグの前にAPKをアンインストール(またはadbコマンドを実行)する方法

分類Dev

$ response JSONは1行、PHP、ANDROIDのみを返します

分類Dev

コルドバはコマンドラインを使用して(実際に)Androidデバイスを実行しますか?

分類Dev

adbshellコマンドを使用してAndroidデバイスの画面のオンまたはオフを確認する方法

分類Dev

Android platfrom、Dalvikバイトコード、またはネイティブマシンコードの処理中にどのようなコードですか?

分類Dev

Android SDKManagerは特定のバージョンのNDKバンドルをインストールします

分類Dev

Android SDKManagerは特定のバージョンのNDKバンドルをインストールします

分類Dev

AndroidのisoDep.transceiveon Generate ACコマンドは、常にサポートされていない6D00を返します

分類Dev

Android Webview:Webサイトのコンテンツのみを表示します

分類Dev

Android:ルート化されていないデバイスでsuコマンドを使用して/ data / data /フォルダーからファイルを読み取ることはできますか

分類Dev

exec()の実行中にエラーが発生しました。コマンド:作業ディレクトリ:null環境:null-ルート化されていないデバイスでAndroidでバイナリを正しく実行する方法は?

分類Dev

Cordova jsは、特定のデバイスのAndroidでのみ間違った日時とUTCを返します

分類Dev

Android inputType = "numberDecimal"はコンマなしのキーボードを表示します

分類Dev

lldbを使用してAndroidのC ++コードをコマンドラインでデバッグするにはどうすればよいですか?

分類Dev

Androidのデバイスロケールに基づいてコンマまたはドットを無効にする

分類Dev

AndroidデバイスからAndroidのものにコマンドを送信する

分類Dev

文字列配列はAndroidで1つの文字列のみを返します

分類Dev

adbコマンドを使用してAndroidモバイルでバッテリー%を設定する方法は?

分類Dev

イオンコルドバはAndroidをどのように実行しますか?

分類Dev

Android + Gradleはコードバージョンを生成します

分類Dev

Android Studioを使用してアイコンではないドローアブルを追加する組み込みの方法はありますか?

分類Dev

AndroidはUI操作をバッチ処理しますか、それともすべてのコマンドを再描画しますか?

分類Dev

Androidデバイスのコードを実行するときにJavaを使用して、Eclipseのドロップダウンリストの多くのオプションから1つのオプションを選択します

Related 関連記事

  1. 1

    Reading NFC Tag types "android.nfc.tech.NfcV" and "android.nfc.tech.NdefFormatable" with React Native

  2. 2

    複数のブロックの書き込みコマンドがNfcVで失敗しました

  3. 3

    Androidボタンのイベントをクリックします(バインドは1回のみ)

  4. 4

    Android BLEクライアントは、onCharacteristicReadで600バイトのデータのみを返します

  5. 5

    unzipはAndroid NDK zipでゼロ以外のコード2を返します(複数のバージョンでテスト済み)

  6. 6

    コルドバイオンはAndroidアプリのキーストアを作成します

  7. 7

    Android Studio:実行またはデバッグの前にAPKをアンインストール(またはadbコマンドを実行)する方法

  8. 8

    $ response JSONは1行、PHP、ANDROIDのみを返します

  9. 9

    コルドバはコマンドラインを使用して(実際に)Androidデバイスを実行しますか?

  10. 10

    adbshellコマンドを使用してAndroidデバイスの画面のオンまたはオフを確認する方法

  11. 11

    Android platfrom、Dalvikバイトコード、またはネイティブマシンコードの処理中にどのようなコードですか?

  12. 12

    Android SDKManagerは特定のバージョンのNDKバンドルをインストールします

  13. 13

    Android SDKManagerは特定のバージョンのNDKバンドルをインストールします

  14. 14

    AndroidのisoDep.transceiveon Generate ACコマンドは、常にサポートされていない6D00を返します

  15. 15

    Android Webview:Webサイトのコンテンツのみを表示します

  16. 16

    Android:ルート化されていないデバイスでsuコマンドを使用して/ data / data /フォルダーからファイルを読み取ることはできますか

  17. 17

    exec()の実行中にエラーが発生しました。コマンド:作業ディレクトリ:null環境:null-ルート化されていないデバイスでAndroidでバイナリを正しく実行する方法は?

  18. 18

    Cordova jsは、特定のデバイスのAndroidでのみ間違った日時とUTCを返します

  19. 19

    Android inputType = "numberDecimal"はコンマなしのキーボードを表示します

  20. 20

    lldbを使用してAndroidのC ++コードをコマンドラインでデバッグするにはどうすればよいですか?

  21. 21

    Androidのデバイスロケールに基づいてコンマまたはドットを無効にする

  22. 22

    AndroidデバイスからAndroidのものにコマンドを送信する

  23. 23

    文字列配列はAndroidで1つの文字列のみを返します

  24. 24

    adbコマンドを使用してAndroidモバイルでバッテリー%を設定する方法は?

  25. 25

    イオンコルドバはAndroidをどのように実行しますか?

  26. 26

    Android + Gradleはコードバージョンを生成します

  27. 27

    Android Studioを使用してアイコンではないドローアブルを追加する組み込みの方法はありますか?

  28. 28

    AndroidはUI操作をバッチ処理しますか、それともすべてのコマンドを再描画しますか?

  29. 29

    Androidデバイスのコードを実行するときにJavaを使用して、Eclipseのドロップダウンリストの多くのオプションから1つのオプションを選択します

ホットタグ

アーカイブ