AndroidアプリとNFC対応キオスクの間にNFC通信を実装したいと思います。ドキュメントを読み、データのプッシュは2つの方法で実行できることを理解しています。
- フォアグラウンドNDEFを介してAPIレベル10から13をプッシュ
- APIレベル14からAndroidビーム経由
最初の解決策でやりたいことができると思いますが、Androidデバイスと非Androidデバイスの間でAndroid Beamを使用できるかどうか知りたいですか?
ご協力いただきありがとうございます、
ロマン
AndroidアプリとNFC対応キオスクの間にNFC通信を実装したいと思います。ドキュメントを読み、データのプッシュは2つの方法で実行できることを理解しています。
最初の解決策でやりたいことができると思いますが、Androidデバイスと非Androidデバイスの間でAndroid Beamを使用できるかどうか知りたいですか?
ご協力いただきありがとうございます、
ロマン
API10から13とAPi14の間の関数呼び出しは異なりますが、実際の基盤となるプロトコルはほぼ同じです。どちらの場合も、NFCピアツーピア通信はLLCPを使用して行われます。API 10〜13では、実際に使用されるデータ転送プロトコルはNPPです。API 14では、SNEPが追加されていますが、他のデバイスがSNEPをサポートしていない場合は、NPPにフォールバックします。
そのため、Android以外のデバイスがSNEPやNPP over LLCPを実装している場合、AndroidNFCデバイスとの間でデータを転送および受信できます。カードリーダーデバイス用のSNEPおよびLLCPのいくつかの実装が存在します。たとえば、https://github.com/grundid/nfctoolsを参照してください。
私は大学のプロジェクトのためにこれを調べました。
まず、NFC操作には3つのモードがあることに注意してください{カードの読み取り/書き込み、タグエミュレーション、およびP2P通信}。Androidは、カードの読み取り/書き込みとP2P通信をサポートしています。
LLCP(論理リンク制御プロトコル)に基づいて構築されたNPP(Ndefプッシュプロトコル)を使用する必要があるため、P2Pを介してAndroid以外のデバイスと通信することは非常に複雑です。Android以外のプラットフォームは、通信できるようにLLCPを実装する必要があります。これがNFCで行われたかどうかはまだわかりません。NPP / LLCPの実装に関する情報は、ここにあります。
次のアプローチは、カード読み取り/書き込みモードを使用して、カードエミュレーションモードで実行されているAndroid以外のデバイスと通信することです。このようにして、エミュレートされたタグにAPDUを送信して、データを送受信できます。プロジェクトにBlackBerryを使用して、このアプローチを逆に実行しました。BlackBerryはカードエミュレーションをサポートしているため、Android以外のデバイス(ACR122U)を使用してAPDUをBlackBerryに送信しました。
最初のアプローチ(P2P)は明らかに理想的な方法ですが、2番目のアプローチの方が実装が簡単な場合があります。とにかく私のアプリケーションでは非常にうまく機能しました。NFCを介した支払いを受け入れるシステムを作成しました。
ACR122UはNFCタグエミュレーションを適切にサポートしていないため、適切ではないことに注意してください。LibNFC Webサイトは、タグエミュレーションをサポートするデバイスを見つけるための優れたスタートです。
これでプロジェクトは終了し、ACR122Uデバイスを使用するとうまく機能します。2番目のアプローチについてサポートが必要な場合は、お問い合わせください。
以下の問題28014を参照してください:実際のNFC p2p通信を有効にし、「TouchtoBeam」UIを無効にするオプション
https://code.google.com/p/android/issues/detail?id=28014Android
ピアツーピアは機能しませんまったく。