4

AndroidフォンとPCの間のNFC通信を必要とするプロジェクトに取り組んでいます。AndroidフォンとしてGalaxy S3を、NFCリーダーとしてACR122を使用しています。ここここでアプリケーションを試しました。

Android SDK にあるサンプル アプリケーションを使用して、NFC 経由で NDEF メッセージを送信しました。

何度やってもスマホとパソコンが繋がりません。Android アプリケーションは、他の電話を介して NDEF メッセージをプッシュできるため、正常に動作しますが、PC との接続に関しては動作しません。電話をリーダーに触れると、リーダーの LED の色が赤から緑とオレンジの点滅に変わりますが、他には何も起こりません。

ismb-npp-java アプリケーションからのログ出力があります。

ファクトリを取得

端末を入手する

端末名:ACS ACR122 0

T=1

rightProcedureTarget と呼ばれます。

[debug] {送信[50バイト]} 0xff 0x00 0x00 0x00 0x2d 0xd4 0x8c 0x01 0x00 0x00 0x00 0x00> 0x00 0x40 0x01 0xfe 0x0f 0xbb 0xba 0xa6 0xc9 0xC9 0x89 0x00 0x00 0x06 0x46 0x66 0x6D 0x01 0x01 >0x10 0x00

it.ismb.npp.IsmbNppException: データ送信の問題

[デバッグ] {送信 [7 バイト]} 0xFF 0x00 0x00 0x00 0x02 0xD4 0x86

[DEBUG] {送信 [26 バイト]} 0xFF 0x00 0x00 0x00 0x15 0xD4 0x8E 0x05 0x20 0x06 0x0F 0x63 >0x6F 0x6D 0x2E 0x61 0x6E 0x64 0x72 0x6F 0x69 0x64 0x02

it.ismb.npp.IsmbNppConnection.transceive (IsmbNppConnection.java:281) で

it.ismb.npp.IsmbNppConnection.rightProcedureTarget(IsmbNppConnection.java:301)で

it.ismb.npp.SenderToPhone$ThreadSender.run(SenderToPhone.java:90) で

it.ismb.npp.SenderToPhone$InitiatorTask.run(SenderToPhone.java:75) で

java.util.TimerThread.mainLoop で (不明なソース)

java.util.TimerThread.run で (不明なソース)

it.ismb.npp.IsmbNppException: データ送信の問題

it.ismb.npp.IsmbNppConnection.transceive (IsmbNppConnection.java:281) で

it.ismb.npp.IsmbNppConnection.rightProcedureTarget(IsmbNppConnection.java:306)で

it.ismb.npp.SenderToPhone$ThreadSender.run(SenderToPhone.java:90) で

it.ismb.npp.SenderToPhone$InitiatorTask.run(SenderToPhone.java:75) で

java.util.TimerThread.mainLoop で (不明なソース)

java.util.TimerThread.run で (不明なソース)

スレッド「Timer-0」での例外 java.lang.IllegalStateException: カードが取り外されました

sun.security.smartcardio.CardImpl.checkState で (不明なソース)

sun.security.smartcardio.ChannelImpl.checkClosed で (不明なソース)

sun.security.smartcardio.ChannelImpl.transmit (不明なソース) で

it.ismb.npp.IsmbNppConnection.transceive (IsmbNppConnection.java:263) で

it.ismb.npp.IsmbNppConnection.rightProcedureTarget(IsmbNppConnection.java:317)で

it.ismb.npp.SenderToPhone$ThreadSender.run(SenderToPhone.java:90) で

it.ismb.npp.SenderToPhone$InitiatorTask.run(SenderToPhone.java:75) で

java.util.TimerThread.mainLoop で (不明なソース)

java.util.TimerThread.run で (不明なソース)

見つけたすべてのドライバー (最新のドライバーを含む) を使用しましたが、問題は解決しません。

デバイスに問題がある可能性はありますか?それとも、ここで何か不足していますか?

4

3 に答える 3

0

あなたが述べたエラーは、NppConnection.java の transceive メソッドによるものです。最初に電話をリーダーに置いて (リーダーの LED が緑色に変わるまで)、アプリケーションを再度実行することをお勧めします。これが機能するかどうかを確認してください。そうでない場合は、transceive メソッドにブレークポイントを設定し、SW1 と SW2 の値を確認します (コマンドが成功した場合、sw1 = 0x90 と sw2 = 0x00 が期待されます)。エラーの場合、sw2 が 0x00 と等しくないか、sw1 = 0x63 のいずれかが返されます。

私の理解では、新しいバージョンの Android を使用していて、いずれかのデバイスで snep がサポートされていない場合でも、それらは NPP にフォールバックします。

于 2013-05-09T13:51:32.963 に答える
0

実行している Android のバージョンは何ですか? NPP は古いバージョンの Android でのみ動作します (ICS より前だと思います)。

ICS と JellyBean の場合は、SNEP プロトコルを使用してみてください。あなたが使用しているプロジェクトの作者は、ここに SNEP のバージョンを持っています:

http://code.google.com/p/ismb-snep-java/

于 2012-10-24T04:42:43.053 に答える
0

これを試してNfcAdapterを取得してください

nfcP2PAdapter = NfcAdapter.getDefaultAdapter(recentContext.getApplicationContext());

// recentContext は activity(this)

それはあなたのために働く、それは私のために働く

于 2013-03-11T10:59:05.807 に答える