2012-03-02 6 views
2

私はACR122Uを通してNexus SからNDEFメッセージを受信するのにjavax.cardioパッケージを使用しています。私は単純なテキスト "Hello!"を送信するAndroid Beamアプリケーションを作成しました。インテントがNDEF_DISCOVEREDタグのフィルタリングを行うとき。私が取得するように見えるTgGetData(0x86で)コマンドを使用する場合:ACR122を使用してcom.android.nppに接続しようとしましたが、[NFCSTATUS_INVALID_STATE]というメッセージが表示される

NfcP2pLinkManager(7588): Sending ndef via SNEP 
NFC JNI(7588): Socket not connected 
NFC JNI(7588): LLCP Link deactivated 
NFC JNI(7588): LLCP Connect request failed 
NfcService(7588): LLCP Link Deactivated message. Restart polling loop. 
NFC JNI(7588): phLibNfc_Llcp_Close() returned 0x0001[NFCSTATUS_INVALID_PARAMETER] 
NfcP2pLinkManager(7588): Failed to connect over SNEP, trying NPP 
NdefPushClient(7588): about to create socket 
NfcP2pLinkManager(7588): LLCP deactivated. 
NdefPushClient(7588): about to connect to service com.android.npp 
NFC JNI(7588): phLibNfc_Llcp_ConnectByUri() returned 0x0011[NFCSTATUS_INVALID_STATE] 
NdefPushClient(7588): couldn't send tag 
NdefPushClient(7588): exception: 
NdefPushClient(7588): java.io.IOException 
NdefPushClient(7588): at 
com.android.nfc.nxp.NativeLlcpSocket.connectToService(NativeLlcpSocket.java:47) 

私はACR122のために、以下のよAPDUのワークフローは、基本的には次のとおりです。私は "に接続できない理由

1) TgInitAsTarget = 0xD4, 0x8c 
2) TgGetData = 0xD4, 0x86 
3) TgSetData = 0xD4, 0x85, 0x81 
4) TgGetData = 0xD4, 0x86 

誰もが知っていますNexus Sのcom.android.nppサービス?

答えて

0

私の問題がなぜ発生しているのか分かりました。 TgGetData経由で最初のバイトセットを受け取ったら、CONNECT APDUを送信する必要はありません。この最初のバイトストリームの後、CC APDUまたはCONNECTION COMPLETEを送信してください。助けを必要とする人のために、のAPDUは、次のようになります。

1) TgInitAsTarget 0xD4 0x8C 
2) TgGetData 0xD4 0x86 
3) TgSetData (CC) 0xD4 0x8E - no need to send the service name. Simple the DSAP-CC-SSAP bytes. That's it. 
4) TgGetData 0xD4 0x86 - you should get your data in this byte stream. 
5) TgRelease 0xD4 0x8E 

は覚えている:あなたはあなたのTgSetDataで使用するために周りの携帯電話から取得DSAPとSSAPを切り替える必要があります。がんばろう!

+0

コミュニケーションのすべてのバイトシーケンスをコピー/ペーストできますか?私は一週間かけて自分の電話機からACR122Uリーダーにメッセージを送ろうとしましたが、不可能でした。( – OverMind

+0

@OverMind、私はこのプロジェクトから移ってきたので、私のアーカイブをすばやく見つけて見つけることができます。その時点でNexus Sで作業していたので、これらのシーケンスはお使いの携帯電話やOSに必ずしも同じではないかもしれません。 – codedawg82

-1

this ACR122のNPP実装方法を参照してください。

+0

この人は、私と同じコードを持っています。私は次のADPUを使用しました: (バイト)0xd4、(バイト)0x8e --- TgSetData (バイト)0x05、(バイト)0x21、(バイト)0x06、(バイト)0x0f、 (バイト)0x63、(バイト) 0x6f、(バイト)0x6d、(バイト)0x2e、(バイト)0x61、 (バイト)0x6e、(バイト)0x64、(バイト)0x72、(バイト)0x6f、(バイト)0x69、 (バイト)0x64、バイト)0x2e、(バイト)0x6e、(バイト)0x70、(バイト)0x70 これはサービスに接続し、ndefmessageを受信しましたが、まだビームを完了しません。 "NdefPushServer:間違った形式のNDEFメッセージ、無視する"というエラーがスローされます。これは、ビームに失敗したと思われるIOExceptionです。どんな考え? – codedawg82

+0

あなたの "こんにちは!"メッセージがNDEFメッセージにカプセル化されていない(Text RTDを使用している)のですか? –

+0

私はAndroid SDKがNDEFに変換するAPIを提供するのに十分な、私の電話からHelloメッセージを受け取ろうとしています。私はこれをネクサスから別のネクサスとメッセージのビームに正しく使用しました。電話機に接続できるACR自体のcom.android.nppサービスを作成する必要があるのか​​どうか疑問に思っています。これは次のデバッグ行のためです。 NdefPushClient(7588):about com.android.nppサービスに接続する – codedawg82

関連する問題