2012-03-01 4 views
0

昨日、Google IOについてNFCについて語りましたが、今日は楽しいことをやろうとしています。Android NFCがICSと連携していません

現在、私はGalaxy Nexus(ICS 4.0.2)とNexus S(ICS 4.0.3)を持っています。私もいくつかのコメントで流れを理解するために、このハウツーを以下のよhttp://nfc.android.com/StickyNotes.zip

::私は何をしようとしているhttp://www.jessechen.net/blog/how-to-nfc-on-the-android-platform/

はであり、私はその話のサンプルアプリケーションをインストールした 電話から別の方法にメッセージを送信し、edittextの内容を変更します(例のように!)。

NFCメッセージは出ていますが、他の電話はそれをつかんでいないと思います... 誰かがなぜ知っていますか?

これは、(お互いに接触しているものを2台の携帯電話)の電話の1からlogcatです:

03-03 15:37:47.842: W/NFC-LLC(446): bad LLC length byte d0 
03-03 15:37:47.842: W/NFC-LLC(446): bad LLC length byte a6 
03-03 15:37:47.842: W/NFC-LLC(446): bad LLC length byte 42 
03-03 15:37:47.842: W/NFC-LLC(446): bad LLC length byte 1 
03-03 15:37:47.842: W/NFC-LLC(446): bad LLC length byte fc 
03-03 15:37:47.842: W/NFC-LLC(446): bad LLC length byte c1 
03-03 15:37:48.264: D/NFC JNI(446): Discovered P2P Target 
03-03 15:37:48.264: D/NfcService(446): LLCP Activation message 
03-03 15:37:48.264: D/NfcService(446): NativeP2pDevice.MODE_P2P_TARGET 
03-03 15:37:48.296: I/NFC JNI(446): LLCP Link activated (LTO=150, MIU=128, OPTION=0x00, WKS=0x01) 
03-03 15:37:48.296: D/NfcService(446): Initiator Activate LLCP OK 
03-03 15:37:48.296: I/NfcP2pLinkManager(446): LLCP activated 
03-03 15:37:48.296: D/NfcP2pLinkManager(446): onP2pInRange() 
03-03 15:37:48.467: D/dalvikvm(446): GC_FOR_ALLOC freed 3192K, 18% free 17750K/21575K, paused 19ms 
03-03 15:37:48.467: I/dalvikvm-heap(446): Grow heap (frag case) to 20.515MB for 3265936-byte allocation 
03-03 15:37:48.514: D/dalvikvm(446): GC_CONCURRENT freed <1K, 3% free 20939K/21575K, paused 4ms+3ms 
03-03 15:37:51.264: I/NFC JNI(446): LLCP Link deactivated 
03-03 15:37:51.264: D/NfcService(446): LLCP Link Deactivated message. Restart polling loop. 
03-03 15:37:51.264: D/NfcService(446): disconnecting from target 
03-03 15:37:51.264: I/NfcP2pLinkManager(446): LLCP deactivated. 
03-03 15:37:52.022: D/NfcP2pLinkManager(446): Debounce timeout 
03-03 15:37:52.022: D/NfcP2pLinkManager(446): onP2pOutOfRange() 

UPDATE

私は付箋コードをデフォルトにいくつかの変更を加えましたICS NFC APIをサポートするようにアップグレードする必要があります。 Infactドキュメントに行くと、次のようになります。http://developer.android.com/reference/android/nfc/NfcAdapter.html#enableForegroundNdefPush%28android.app.Activity,%20android.nfc.NdefMessage%29

このメソッドは非推奨です。 使用setNdefPushMessage(NdefMessage、活動、活動...)の代わりに

は強くなく、新しいsetNdefPushMessage(NdefMessage、 活動、活動を...)を使用することをお勧めします:それは自動的にあなたの 活動のライフサイクルにフック、あなたは onResume/onPauseで有効/無効を呼び出す必要はありません。

はまた、私はこの読み:NDEFが正しく機能するためにプッシュするために、他のNFCデバイス は(いずれかのNFC Forumの SNEP(簡易NDEF交換プロトコル)、またはAndroidの " com.android.npp" サポートしている必要がありますNdefプッシュプロトコル)。これはGingerbreadレベルのAndroid NFCデバイスではオプションでしたが、 SNEPはIce-Cream-Sandwich以降では以降で必須です。

setNdefPushMessageを使用すると、他の変更を行う必要がある場合、自動的にSNEPプロトコルをサポートするかどうかわかりません。 現時点では、Galaxy Nexus(4.0.2)とNexus S(4.0.3)を使用していますが、テストを行うためのデバイスは他にありません。

また、メッセージを送信しているアダプタのためにonNdefPushCompleteを実装しました。これは決して呼び出されません。これはAPIS、デバイス、または私のコードに関する問題であるかどうかわかりません。 私が理解できないことは、すべてがうまくいけば、Sticky Note編集テキストのテキストを変更し、2つのデバイスをNFCとリンクすると、テキストが他のデバイスに送信されるということですか?これは例ですか?

本当に奇妙なことは、私はICSとNFCを行う方法について例や公式ドキュメントを見つけることができないということです

誰かが解決する方法を知っている...ので、それをうまく説明していませんか?

答えて

1

ありがとうございました。

答えのコメントで言ったように私は大きな間違いをしていました。

ICSでは、NFCオプションを有効にすると、「読み取り」機能が有効になります。 Android Beam機能を有効にすると、「書き込み」機能も有効になります。

Android Beam機能を無効にして大きな問題になっていました。

1

NPPおよび/またはSNEPの検出は、完全に自動であり、NFCソフトウェアスタック内で実行され、アプリケーションから隠されています。アプリはこれに気づく必要はありません。setNdefPushMessage()setNdefPushMessageCallback()の場合、両方のデバイスがSNEF経由で送信されるようになります。

問題は、Nexus SとGalaxy NexusのNFCアンテナがわずかに異なる場所にあるという事実と関係がある可能性があります。 Nexus Sでは、背面の上部に向かって(アンテナは携帯電話の背面にあり、それを見るために開きます)、Galaxy Nexusではバッテリーに内蔵されていますこれは、背面の底部に向かってより多く配置される。

2台の電話機がNFCに接続されている場合は、音(音量で制御される音量)が聞こえ、画面が「ズームアウト」し、「ビームに触れる」というメッセージが表示されます。

+0

私は大きな間違いをしていました。私はNFCを有効にして、Beam機能を無効にすることでNFCの作業が可能になると思います。私は、NFCを有効にすると、タグの読み取り部分を有効にし、ICSのBeamを有効にすると書き込み部分が有効になることを知りました。結論として、私のデバイスは読み込めましたが書き込みはできませんでした:)今はすべてうまくいきます:) – StErMi

1

2つのGalaxy Nexus電話機(ICS 4.0)でStickyNotes Demoをそのまま使用しました(コード変更なし)。NFCとBeamの両方が有効になっていることを確認してください。 .1)それはうまくいきます(もしあなたが "Write to Tag" -Button !!!に触れなければ!)。

画面をタップして「タッチする」ことを確認すると、編集したテキストを他の電話機に送信するだけです。

私は変更を加えませんでしたが、アンドロイド:minSdkVersion = "10"(android 2.3.3)のままです。

関連する問題