ラベル NFC の投稿を表示しています。 すべての投稿を表示
ラベル NFC の投稿を表示しています。 すべての投稿を表示

2013年12月3日火曜日



f:id:bs-android:20131202050632j:image:w360

弊社で取りまとめを担当した書籍「NFC Hacks」がオライリー・ジャパン様から発売中です。



http://www.oreilly.co.jp/books/9784873116242/


1章 NFCを知る

1. RFIDと非接触ICカード

2. NFCの利点

3. 「NFCタグ」を知る

4. NFCデバイスの3つのモード

5. Reader/Writerモード

6. Peer-to-Peerモード

7. Card Emulationモード

8. NFCを利用した国内のサービス

9. NFCを利用した海外のサービス

10. NFC対応デバイス

11. 対応チップ

12. NFCの物理学的基礎

13. 電磁誘導の結合強度




2章 NFCの規格を知る

14. NFC Forum Type 1 Tag

15. NFC Forum Type 2 Tag

16. NFC Forum Type 3 Tag

17. NFC Forum Type 4 Tag

18. ISO-DEPについて学ぶ

19. NFC-DEPについて学ぶ

20. LLCPについて学ぶ

21. SNEPについて学ぶ

22. NDEF

23. RTD(Record Type Definition)




3章 AndroidでNFCをHackする

24. SettingからNFCを設定する

25. NFCタグを読み取るためのクラス群(android.nfcパッケージ)

26. NFCタグのタイプ別機能のためのクラス群(android.nfc.techパッケージ)

27. Android 2.3で使えるNFC機能

28. Android 4.0で使えるAndroid Beam

29. Android 4.1/4.2/4.3で使えるNFC機能

30. Android端末をReaderモードで使う

31. アプリケーションでNFCタグを読む方法

32. NDEFを読み込むアプリを作成する

33. Android端末をWriterモードで使う

34. アプリケーションでNFCタグを書く方法

35. NDEFを書き込むアプリを作成する

36. Android Beamを知る

37. Android Beamを送受信するアプリを作る

38. Android Beam送信時にデフォルトのNDEFメッセージを送信しないようにする

39. Bluetooth Handoverについて

40. タグ情報を使いBluetoothデバイスに接続切断する

41. Secure Elementを使用するCard Emulation機能について




4章 WindowsでNFCをHackする

42. NFP機能を使う

43. PC/SC

44. PC/SCによるNDEFタグアクセス

45. PC/SCによるNFCデバイスアクセス

46. Proximity APIの利用

47. Proximity APIでのNDEFアクセス

48. Windows環境でのP2P通信




5章 セキュリティに配慮したNFC応用サービス

49. キーポイントを押さえてセキュリティモデルを検討する

50. 非暗号化領域を利用しつつネットワーク連動サービスを構築する


NFCの基礎から、規格の詳細、Android/Win8での実装方法、NFCを応用したサービスについての考察など、幅広い内容になっています。

NFCについて一から勉強してみたい方、何となく知っているけど分からないことがある方、仕様を確認したい上級者の方にお勧めです。

ぜひ読んでみてください。




[コラム] NFC Hacks発売中です!



f:id:bs-android:20131202050632j:image:w360

弊社で取りまとめを担当した書籍「NFC Hacks」がオライリー・ジャパン様から発売中です。



http://www.oreilly.co.jp/books/9784873116242/


1章 NFCを知る

1. RFIDと非接触ICカード

2. NFCの利点

3. 「NFCタグ」を知る

4. NFCデバイスの3つのモード

5. Reader/Writerモード

6. Peer-to-Peerモード

7. Card Emulationモード

8. NFCを利用した国内のサービス

9. NFCを利用した海外のサービス

10. NFC対応デバイス

11. 対応チップ

12. NFCの物理学的基礎

13. 電磁誘導の結合強度




2章 NFCの規格を知る

14. NFC Forum Type 1 Tag

15. NFC Forum Type 2 Tag

16. NFC Forum Type 3 Tag

17. NFC Forum Type 4 Tag

18. ISO-DEPについて学ぶ

19. NFC-DEPについて学ぶ

20. LLCPについて学ぶ

21. SNEPについて学ぶ

22. NDEF

23. RTD(Record Type Definition)




3章 AndroidでNFCをHackする

24. SettingからNFCを設定する

25. NFCタグを読み取るためのクラス群(android.nfcパッケージ)

26. NFCタグのタイプ別機能のためのクラス群(android.nfc.techパッケージ)

27. Android 2.3で使えるNFC機能

28. Android 4.0で使えるAndroid Beam

29. Android 4.1/4.2/4.3で使えるNFC機能

30. Android端末をReaderモードで使う

31. アプリケーションでNFCタグを読む方法

32. NDEFを読み込むアプリを作成する

33. Android端末をWriterモードで使う

34. アプリケーションでNFCタグを書く方法

35. NDEFを書き込むアプリを作成する

36. Android Beamを知る

37. Android Beamを送受信するアプリを作る

38. Android Beam送信時にデフォルトのNDEFメッセージを送信しないようにする

39. Bluetooth Handoverについて

40. タグ情報を使いBluetoothデバイスに接続切断する

41. Secure Elementを使用するCard Emulation機能について




4章 WindowsでNFCをHackする

42. NFP機能を使う

43. PC/SC

44. PC/SCによるNDEFタグアクセス

45. PC/SCによるNFCデバイスアクセス

46. Proximity APIの利用

47. Proximity APIでのNDEFアクセス

48. Windows環境でのP2P通信




5章 セキュリティに配慮したNFC応用サービス

49. キーポイントを押さえてセキュリティモデルを検討する

50. 非暗号化領域を利用しつつネットワーク連動サービスを構築する


NFCの基礎から、規格の詳細、Android/Win8での実装方法、NFCを応用したサービスについての考察など、幅広い内容になっています。

NFCについて一から勉強してみたい方、何となく知っているけど分からないことがある方、仕様を確認したい上級者の方にお勧めです。

ぜひ読んでみてください。




2012年10月11日木曜日


前回SDK for NFC Wrapper Libraryのプロトタイプを作りました。
ここから各NFCデバイスに向けての機能を肉付けしていきたいと思います。
現段階ではコマンドを発行することができないので、コマンド発行まで実装したいと思います。

SDK for NFC Wrapper Library - Polling


前回SDK for NFC Wrapper Libraryのプロトタイプを作りました。
ここから各NFCデバイスに向けての機能を肉付けしていきたいと思います。
現段階ではコマンドを発行することができないので、コマンド発行まで実装したいと思います。

2012年10月5日金曜日


呼び出しが大変

新しいプロジェクト立ち上げの度に、毎回API呼び出し手順にしたがって呼び出すのも、なかなかめんどうです。
またこのSDKでは各NFCデバイス(NFC-A,NFC-B,NFC-F)の検出までは共通化できますが、そこからのコマンド発行については個別に実装していかなければなりません。
ライブラリ化してより簡単にNFCデバイスにアクセスできるようにします。

SDK for NFC Wrapper Library


呼び出しが大変

新しいプロジェクト立ち上げの度に、毎回API呼び出し手順にしたがって呼び出すのも、なかなかめんどうです。
またこのSDKでは各NFCデバイス(NFC-A,NFC-B,NFC-F)の検出までは共通化できますが、そこからのコマンド発行については個別に実装していかなければなりません。
ライブラリ化してより簡単にNFCデバイスにアクセスできるようにします。

2012年10月4日木曜日

NFC対応アプリケーションを作る

Windows7にPaSoRi(RC-S330)を接続してNFCタグをかざすと、そのIDを表示するアプリケーションを作成します。
API呼び出し順序については前回のエントリを参照してください

NFC-IDを表示するWindowsアプリケーションを作る

NFC対応アプリケーションを作る

Windows7にPaSoRi(RC-S330)を接続してNFCタグをかざすと、そのIDを表示するアプリケーションを作成します。
API呼び出し順序については前回のエントリを参照してください

2012年10月3日水曜日

SDK for NFCのライブラリのAPIを見る

SDK for NFCを使ったプログラムを作成するには、”felica_nfc_library.dll“というライブラリを使用します。
ライブラリのAPIについて簡単にまとめます。
この内容はSDKに含まれるマニュアルに書かれていますので、詳しくはそちらを御覧ください。

APIアクセスの順序

簡単に図にまとめました。


































SDK for NFCのライブラリのAPIを見る

SDK for NFCのライブラリのAPIを見る

SDK for NFCを使ったプログラムを作成するには、”felica_nfc_library.dll“というライブラリを使用します。
ライブラリのAPIについて簡単にまとめます。
この内容はSDKに含まれるマニュアルに書かれていますので、詳しくはそちらを御覧ください。

APIアクセスの順序

簡単に図にまとめました。


































WindowsでのNFC開発環境を整える

WindowsでNFC開発するための環境を整えます。

PC

Windows 7 SP1 .NET Framework 4.0
開発にはC#を使用するため、.NET Frameworkが必要です。

NFC-R/W

PaSoRi RC-S330/S
PaSoRi RC-S370
PaSoRi RC-S380
店頭では確定申告のコーナーにおいてあるかも…。
ネット通販で買うのがお勧めです。

ドライバ

Sony Japan | FeliCa | 個人のお客様 | ダウンロード | NFCポートソフトウェア
http://www.sony.co.jp/Products/felica/consumer/download/felicaportsoftware.html
SDKに同梱されています。

SDK

Sony Japan | FeliCa | 法人のお客様 | 製品情報 | ICS-D010・D004・D002・D003
http://www.sony.co.jp/Products/felica/business/products/ICS-D004_002_003.html
NFCのSDKは「SDK for NFC Starter Kit」と「SDK for NFC Lite」です。
個人利用や評価の場合のみ「SDK for NFC Starter Kit」が使用できます。
商用利用の場合、「SDK for NFC Lite」を購入しましょう。

IDE

Microsoft Visual Studio 2010
http://www.microsoft.com/japan/visualstudio/products/2010-editions
C#で開発します。

カスタマー開発部 山下智樹

WindowsでのNFC開発環境を整える

WindowsでのNFC開発環境を整える

WindowsでNFC開発するための環境を整えます。

PC

Windows 7 SP1 .NET Framework 4.0
開発にはC#を使用するため、.NET Frameworkが必要です。

NFC-R/W

PaSoRi RC-S330/S
PaSoRi RC-S370
PaSoRi RC-S380
店頭では確定申告のコーナーにおいてあるかも…。
ネット通販で買うのがお勧めです。

ドライバ

Sony Japan | FeliCa | 個人のお客様 | ダウンロード | NFCポートソフトウェア
http://www.sony.co.jp/Products/felica/consumer/download/felicaportsoftware.html
SDKに同梱されています。

SDK

Sony Japan | FeliCa | 法人のお客様 | 製品情報 | ICS-D010・D004・D002・D003
http://www.sony.co.jp/Products/felica/business/products/ICS-D004_002_003.html
NFCのSDKは「SDK for NFC Starter Kit」と「SDK for NFC Lite」です。
個人利用や評価の場合のみ「SDK for NFC Starter Kit」が使用できます。
商用利用の場合、「SDK for NFC Lite」を購入しましょう。

IDE

Microsoft Visual Studio 2010
http://www.microsoft.com/japan/visualstudio/products/2010-editions
C#で開発します。

カスタマー開発部 山下智樹

2012年9月25日火曜日

AndroidでRTD URIを書く

RTD URIを書く

AndroidでRTD URIを書き込みます
NFCに反応する部分までは以前書きましたので、そちらをご参照ください。
> ブリリアントサービス NFC技術ブログ: AndroidでRTD Textを書く 

NdefMessageの作成

書き込み対象のRTD URI RecordをもったNdefMessageを作成します。
NdefRecordの作成には
  • TNF
  • TYPE
  • ID
  • PAYLOAD
が必要になります。(他に全てのバイナリから作成することも可能です)
TNFはTextRecord#TNF_WELL_KNOWN を使用します。
TYPEはTextRecord#RTD_URI を使用します。
IDは今回使用しないので空の配列を渡します。
PAYLOADは自作する必要があります。


NDEFを書き込む

NDEFの書き込みに関しては以前書きましたので、そちらをご参照ください。
> ブリリアントサービス NFC技術ブログ: AndroidでRTD Textを書く 

ソースコード


カスタマー開発部 山下智樹

AndroidでRTD URIを書く

AndroidでRTD URIを書く

RTD URIを書く

AndroidでRTD URIを書き込みます
NFCに反応する部分までは以前書きましたので、そちらをご参照ください。
> ブリリアントサービス NFC技術ブログ: AndroidでRTD Textを書く 

NdefMessageの作成

書き込み対象のRTD URI RecordをもったNdefMessageを作成します。
NdefRecordの作成には
  • TNF
  • TYPE
  • ID
  • PAYLOAD
が必要になります。(他に全てのバイナリから作成することも可能です)
TNFはTextRecord#TNF_WELL_KNOWN を使用します。
TYPEはTextRecord#RTD_URI を使用します。
IDは今回使用しないので空の配列を渡します。
PAYLOADは自作する必要があります。


NDEFを書き込む

NDEFの書き込みに関しては以前書きましたので、そちらをご参照ください。
> ブリリアントサービス NFC技術ブログ: AndroidでRTD Textを書く 

ソースコード


カスタマー開発部 山下智樹

2012年9月20日木曜日


RTD URIを読む

AndroidでRTD Textを読み取ります。
AndroidではNdefMessageとNdefRecordのクラスが用意されています。
NdefRecordはヘッダまでしかパースされないので
PAYLOADを自分でパースする必要があります。

Ndef Recordを取得する

Ndef Recordの取得までは前回解説したので、省略します。

RTD URIを判定する

Textの判定はTNFがWELL_KNOWNになっていることと、TYPEが'U'になっていることを確認します。

RTD Uriをパースする

PAYLOADを、RTD URIの仕様に従いパースしていきます。
RTD URIの仕様についてはこちらをご覧ください。
ブリリアントサービス NFC技術ブログ: RTD URIとは 
例ではURIを作成した後にブラウザを起動します。

実行イメージ





















ソースコード

https://github.com/bs-nfc/ReadRTDUri

カスタマー開発部 山下智樹

AndroidでRTD URIを読む


RTD URIを読む

AndroidでRTD Textを読み取ります。
AndroidではNdefMessageとNdefRecordのクラスが用意されています。
NdefRecordはヘッダまでしかパースされないので
PAYLOADを自分でパースする必要があります。

Ndef Recordを取得する

Ndef Recordの取得までは前回解説したので、省略します。

RTD URIを判定する

Textの判定はTNFがWELL_KNOWNになっていることと、TYPEが'U'になっていることを確認します。

RTD Uriをパースする

PAYLOADを、RTD URIの仕様に従いパースしていきます。
RTD URIの仕様についてはこちらをご覧ください。
ブリリアントサービス NFC技術ブログ: RTD URIとは 
例ではURIを作成した後にブラウザを起動します。

実行イメージ





















ソースコード

https://github.com/bs-nfc/ReadRTDUri

カスタマー開発部 山下智樹

2012年9月19日水曜日

RTD URIとは

Record Type DefinitionのURIフォーマットのことを指します。
仕様書はこちらにあります

NFC Forum : Technical Specifications
http://www.nfc-forum.org/specs/spec_list/#rtds

URIフォーマットの構造













  • Uri Identifier Code
    • 1Byte
    • 接頭辞のコードを表します。
      以下が代表的なコードです
      • 0x01 -> http://www.
      • 0x02 -> https://www.
      • 0x03 -> http://
      • 0x04 -> https://
      • 0x06 -> mailto://
      • 0x0D -> ftp://
      • 0x1D -> file://
      • 詳しくは仕様書を御覧ください。
  • Uri FIeld
    • Uri Identifier Codeで省略した文字を除くURIを格納します。
    • UTF-8でエンコード/デコードします。

URIを格納したNDEFの例

"http://bs-nfc.blogspot.jp"を表したNDEFは以下のようになります。
D1 01 13 55
03 62 73 2D
6E 66 63 2E
62 6C 6F 67
73 70 6F 74
2E 6A 70

  • FLAGS
    • MB 0x01
    • ME 0x01
    • CF 0x00
    • SR 0x01
    • IL 0x00
  • TNF 0x01 (Well Known Type)
  • TYPE LENGTH 0x01
  • PAYLOAD LENGTH 0x13
  • TYPE 0x55 -> 'U'
  • PAYLOAD
    • Uri Identifier Code 0x03 -> "http://"
    • Uri Field 0x62 0x73 0x2D 0x6E 0x66 0x63 0x2E 0x62 0x6C 0x6F 0x67 0x73 0x70 0x6F 0x74 0x2E 0x6A 0x70
      -> "bs-nfc.blogspot.jp"

カスタマー開発部 山下智樹

RTD URIとは

RTD URIとは

Record Type DefinitionのURIフォーマットのことを指します。
仕様書はこちらにあります

NFC Forum : Technical Specifications
http://www.nfc-forum.org/specs/spec_list/#rtds

URIフォーマットの構造













  • Uri Identifier Code
    • 1Byte
    • 接頭辞のコードを表します。
      以下が代表的なコードです
      • 0x01 -> http://www.
      • 0x02 -> https://www.
      • 0x03 -> http://
      • 0x04 -> https://
      • 0x06 -> mailto://
      • 0x0D -> ftp://
      • 0x1D -> file://
      • 詳しくは仕様書を御覧ください。
  • Uri FIeld
    • Uri Identifier Codeで省略した文字を除くURIを格納します。
    • UTF-8でエンコード/デコードします。

URIを格納したNDEFの例

"http://bs-nfc.blogspot.jp"を表したNDEFは以下のようになります。
D1 01 13 55
03 62 73 2D
6E 66 63 2E
62 6C 6F 67
73 70 6F 74
2E 6A 70

  • FLAGS
    • MB 0x01
    • ME 0x01
    • CF 0x00
    • SR 0x01
    • IL 0x00
  • TNF 0x01 (Well Known Type)
  • TYPE LENGTH 0x01
  • PAYLOAD LENGTH 0x13
  • TYPE 0x55 -> 'U'
  • PAYLOAD
    • Uri Identifier Code 0x03 -> "http://"
    • Uri Field 0x62 0x73 0x2D 0x6E 0x66 0x63 0x2E 0x62 0x6C 0x6F 0x67 0x73 0x70 0x6F 0x74 0x2E 0x6A 0x70
      -> "bs-nfc.blogspot.jp"

カスタマー開発部 山下智樹

2012年8月31日金曜日

SNEP通信してみた

SNEPとはP2Pで使用されるプロトコルの名前です。
AndroidではAndroid BEAMという名前で呼ばれていますが、このSNEPプロトコルを使用して実現しています。
今回はAndroidとWindows8でSNEP通信をしてみます。


用意するもの

Windows8















RC-S380















Android 4.0















Windows8にRC-S380を接続しドライバをインストールします。
AndroidはSC-04D Android 4.0.4を使用しています。


カードを読み取る

SNEPをする前に普通のNFCカードを読み取ってみます。
中にはNDEFでURLを書き込んでいます。
NFCカード















カードをRC-S380にかざします。
読み取るとぴこぴこ音がします。















Windows8側に通知が表示されました。
クリックではなくタップになっていますね。















通知をクリックするとブラウザが起動します。
NFC QUESTのページが表示されました。















カードを読み取って中のNDEFデータからURLを取得し
ブラウザに表示することができました。
これはRC-S330/Sでも可能でしたね。


SNEP通信をする

続いてSNEP通信をしてみます。
Androidでブラウザを開いている状態でRC-S380にタッチすると通信することができます。


Androidでブラウザを起動します。
弊社のホームページ見てます。















AndroidをRC-S380にかざします。
Android BEAMの画面になった!!















タップしてビームを送信するとWindows8に
カードの時同様、通知が表示されます。
さっきとは違うアングルから















こちらも通知をクリックすることでブラウザが表示されます。
大きい画面で見れた!















無事SNEPでも通信することができました。

まとめ

今回SNEP通信をしましたが、ドライバのインストールをしただけで、プログラムは一切書かずに実現することができました。

今後パソコンにもNFCが搭載されていきます。今回はその片鱗が少し見えたような気がしました。利用シーンで考えると、帰宅時に見ていたホームページを、家に帰ってきてから大きい画面で見たいなと思った時に便利なのではないでしょうか。
さらにプログラムからアクセスできるようならば、もっと夢が広がると思います。


Windows8用ドライバは評価用にお借りしたものなので一般公開はされていませんが
今後Windows8のリリース後に公開されるのではないでしょうか。
さらに今後のアップデートに期待です。

カスタマー開発部 山下智樹

Windows8とAndroidでSNEP通信してみた

SNEP通信してみた

SNEPとはP2Pで使用されるプロトコルの名前です。
AndroidではAndroid BEAMという名前で呼ばれていますが、このSNEPプロトコルを使用して実現しています。
今回はAndroidとWindows8でSNEP通信をしてみます。


用意するもの

Windows8















RC-S380















Android 4.0















Windows8にRC-S380を接続しドライバをインストールします。
AndroidはSC-04D Android 4.0.4を使用しています。


カードを読み取る

SNEPをする前に普通のNFCカードを読み取ってみます。
中にはNDEFでURLを書き込んでいます。
NFCカード















カードをRC-S380にかざします。
読み取るとぴこぴこ音がします。















Windows8側に通知が表示されました。
クリックではなくタップになっていますね。















通知をクリックするとブラウザが起動します。
NFC QUESTのページが表示されました。















カードを読み取って中のNDEFデータからURLを取得し
ブラウザに表示することができました。
これはRC-S330/Sでも可能でしたね。


SNEP通信をする

続いてSNEP通信をしてみます。
Androidでブラウザを開いている状態でRC-S380にタッチすると通信することができます。


Androidでブラウザを起動します。
弊社のホームページ見てます。















AndroidをRC-S380にかざします。
Android BEAMの画面になった!!















タップしてビームを送信するとWindows8に
カードの時同様、通知が表示されます。
さっきとは違うアングルから















こちらも通知をクリックすることでブラウザが表示されます。
大きい画面で見れた!















無事SNEPでも通信することができました。

まとめ

今回SNEP通信をしましたが、ドライバのインストールをしただけで、プログラムは一切書かずに実現することができました。

今後パソコンにもNFCが搭載されていきます。今回はその片鱗が少し見えたような気がしました。利用シーンで考えると、帰宅時に見ていたホームページを、家に帰ってきてから大きい画面で見たいなと思った時に便利なのではないでしょうか。
さらにプログラムからアクセスできるようならば、もっと夢が広がると思います。


Windows8用ドライバは評価用にお借りしたものなので一般公開はされていませんが
今後Windows8のリリース後に公開されるのではないでしょうか。
さらに今後のアップデートに期待です。

カスタマー開発部 山下智樹

2012年8月21日火曜日



街コンって?


みなさんは街コンというイベントをご存知でしょうか


街コンとは、地域振興を目的とした大規模な合コンイベントです。


参加者は少ない場合でも100名、多い時は1000名を超えます。


街コンは地域の商店街で開催されることが多く、地域活性化の側面をもっていますが


合コンなので、参加者が出会いを求められるという側面ももっています。


座席指定で男女が必ずテーブルを囲むように案内されることや


気になる異性に声をかけやすくする仕組みがある場合があります。



街コン - Wikipedia
http://ja.wikipedia.org/wiki/%E8%A1%97%E3%82%B3%E3%83%B3

濱コンって?


f:id:bs-android:20120816163222j:image:h400


[こののぼりが目印!]


横浜最大の街コンイベントです。


横浜市関内を中心に、横浜市のさまざまな場所で開催されています。


完全事前受付制となっており


受付でリストバンドを受け取った後、街コン参加店舗で


食べ放題、飲み放題となります。



濱コンオフィシャルサイト | 濱コン
http://www.hamacon.jp/


濱コン@横濱 | Facebook
http://www.facebook.com/hamacon.jp

NFCがやってきた!


今回濱コン事務局さんと協力して、街コンにNFCを組込みました。


全国初!NFCを街コンに実戦投入しましたので、そちらのレポートを書きます。


プレスリリースはこちら



街コン支援システム「NFCで街コンつく~る」を提供開始
http://www.brilliantservice.co.jp/press/pdf/nfc-machikon.pdf

濱コン行ってきたよ!


今回参加したイベントは20代限定のイベントでした。


通常は年齢制限のない濱コンですが、今回は20代のみの参加者となります。



濱コンUnder30~【20代限定】横浜へ集え!素敵な出会いをGet!(街コン) | 横濱史上最大規模の地域活性化イベント・濱コン
http://www.hamacon.jp/satellite_120817/index.html

受付

f:id:bs-android:20120816190928j:image:w400


受付では事前に登録した情報と、リストバンドをひもづけるために


パソコンとPaSoRiを使ってヒモ付作業をします。


リストバンドを装着

f:id:bs-android:20120816200037j:image:w400


参加者にはひもづけられたリストバンドを装着してもらい


街コンに参加してもらいます。


今回使ったリストバンド

f:id:bs-android:20120816200357j:image:w400


今回使用したリストバンドがこちらです。


裏にシール型のNFCタグが貼られています。


NFCタグにはFeliCa Liteを使用しております。


今回もSonyさんにご協力いただきました!ありがとうございます!


店頭でリストバンドを読み取り!

f:id:bs-android:20120816205254j:image:w400


参加者は店舗入退店時に、スタッフのもつスマホにリストバンドをかざしてもらうことで


入店状況を記録します。


ここは仕組み上不安なところでした。


リストバンドをタッチするということが馴染みないので


実施にやってみたら、みんな面倒がってタッチしてくれないんじゃないかな…と考えていました。


しかし実際にやってみると、慣れないのは最初だけで


慣れてくると積極的にタッチしていただけていたので、無駄な不安だったみたいです(笑)


混雑状況が分かる!

f:id:bs-android:20120821084751j:image:w400


サーバに蓄積されたデータから、参加者に直接混雑状況を配信します。


楽しい街コン!

f:id:bs-android:20120816220206j:image:w400


店内ではみなさん楽しそうに過ごしていました。


ぱっと見は普通の居酒屋さんっぽいですが


リストバンドをつけていることで、「あ、この人も同じイベントに参加しているんだ」という一体感とか安心感がありますね(笑)





個人的な感想など


私自身街コンを目にすることが初めてだったのですが


さまざまな人が参加し、非常に活気のあるイベントでした。(私も参加したかった!!)





街コンの中でも、特に濱コンは大人気です。応募総数を明かすことはできないのですが


多くの参加希望者が集まったそうです。


ちなみに次回開催は9月8日に1000人規模で開催されますので、参加されてはいかがでしょうか。


受付もまもなく開始と聞いていますので、濱コンホームページをこまめにチェックしてみてください!


もちろんそちらでもNFCが使われますよ!


今回、参加人数は男女200名とあまり大きいものではありませんでしたが


貴重なデータが得られましたので、今後に活かしてもっとよいシステムに改良していきたいと思います!





文責:カスタマー開発部 品川開発課 山下 智樹





NFCが濱コンにやってきた!



街コンって?


みなさんは街コンというイベントをご存知でしょうか


街コンとは、地域振興を目的とした大規模な合コンイベントです。


参加者は少ない場合でも100名、多い時は1000名を超えます。


街コンは地域の商店街で開催されることが多く、地域活性化の側面をもっていますが


合コンなので、参加者が出会いを求められるという側面ももっています。


座席指定で男女が必ずテーブルを囲むように案内されることや


気になる異性に声をかけやすくする仕組みがある場合があります。



街コン - Wikipedia
http://ja.wikipedia.org/wiki/%E8%A1%97%E3%82%B3%E3%83%B3

濱コンって?


f:id:bs-android:20120816163222j:image:h400


[こののぼりが目印!]


横浜最大の街コンイベントです。


横浜市関内を中心に、横浜市のさまざまな場所で開催されています。


完全事前受付制となっており


受付でリストバンドを受け取った後、街コン参加店舗で


食べ放題、飲み放題となります。



濱コンオフィシャルサイト | 濱コン
http://www.hamacon.jp/


濱コン@横濱 | Facebook
http://www.facebook.com/hamacon.jp

NFCがやってきた!


今回濱コン事務局さんと協力して、街コンにNFCを組込みました。


全国初!NFCを街コンに実戦投入しましたので、そちらのレポートを書きます。


プレスリリースはこちら



街コン支援システム「NFCで街コンつく~る」を提供開始
http://www.brilliantservice.co.jp/press/pdf/nfc-machikon.pdf

濱コン行ってきたよ!


今回参加したイベントは20代限定のイベントでした。


通常は年齢制限のない濱コンですが、今回は20代のみの参加者となります。



濱コンUnder30~【20代限定】横浜へ集え!素敵な出会いをGet!(街コン) | 横濱史上最大規模の地域活性化イベント・濱コン
http://www.hamacon.jp/satellite_120817/index.html

受付

f:id:bs-android:20120816190928j:image:w400


受付では事前に登録した情報と、リストバンドをひもづけるために


パソコンとPaSoRiを使ってヒモ付作業をします。


リストバンドを装着

f:id:bs-android:20120816200037j:image:w400


参加者にはひもづけられたリストバンドを装着してもらい


街コンに参加してもらいます。


今回使ったリストバンド

f:id:bs-android:20120816200357j:image:w400


今回使用したリストバンドがこちらです。


裏にシール型のNFCタグが貼られています。


NFCタグにはFeliCa Liteを使用しております。


今回もSonyさんにご協力いただきました!ありがとうございます!


店頭でリストバンドを読み取り!

f:id:bs-android:20120816205254j:image:w400


参加者は店舗入退店時に、スタッフのもつスマホにリストバンドをかざしてもらうことで


入店状況を記録します。


ここは仕組み上不安なところでした。


リストバンドをタッチするということが馴染みないので


実施にやってみたら、みんな面倒がってタッチしてくれないんじゃないかな…と考えていました。


しかし実際にやってみると、慣れないのは最初だけで


慣れてくると積極的にタッチしていただけていたので、無駄な不安だったみたいです(笑)


混雑状況が分かる!

f:id:bs-android:20120821084751j:image:w400


サーバに蓄積されたデータから、参加者に直接混雑状況を配信します。


楽しい街コン!

f:id:bs-android:20120816220206j:image:w400


店内ではみなさん楽しそうに過ごしていました。


ぱっと見は普通の居酒屋さんっぽいですが


リストバンドをつけていることで、「あ、この人も同じイベントに参加しているんだ」という一体感とか安心感がありますね(笑)





個人的な感想など


私自身街コンを目にすることが初めてだったのですが


さまざまな人が参加し、非常に活気のあるイベントでした。(私も参加したかった!!)





街コンの中でも、特に濱コンは大人気です。応募総数を明かすことはできないのですが


多くの参加希望者が集まったそうです。


ちなみに次回開催は9月8日に1000人規模で開催されますので、参加されてはいかがでしょうか。


受付もまもなく開始と聞いていますので、濱コンホームページをこまめにチェックしてみてください!


もちろんそちらでもNFCが使われますよ!


今回、参加人数は男女200名とあまり大きいものではありませんでしたが


貴重なデータが得られましたので、今後に活かしてもっとよいシステムに改良していきたいと思います!





文責:カスタマー開発部 品川開発課 山下 智樹





2012年8月8日水曜日

RTD Textを書く

AndroidでRTD Textを書き込みます。

反応するタグの種類の限定

NDEFを書き込めるタグの種類はNDEFタグもしくはNDEFFormatableタグなので、どちらかに反応するようにNfcAdapter#enableForgroundDispatch()を呼んであげます。

PendingIntent pendingIntent = PendingIntent.getActivity(this, 0, new Intent(this,
getClass()), 0);
IntentFilter[] intentFilter = new IntentFilter[] {
new IntentFilter(NfcAdapter.ACTION_TECH_DISCOVERED),
};
String[][] techList = new String[][] {
{
android.nfc.tech.NdefFormatable.class.getName()
}, {
android.nfc.tech.Ndef.class.getName()
}
};
mNfcAdapter.enableForegroundDispatch(this, pendingIntent, intentFilter, techList);

NdefMessageの作成

書き込み対象のRTD Text RecordをもったNdefMessageを作成します。
NdefRecordの作成には
  • TNF
  • TYPE
  • ID
  • PAYLOAD
が必要になります。(他に全てのバイナリから作成することも可能です)
TNFはTextRecord#TNF_WELL_KNOWN を使用します。
TYPEはTextRecord#RTD_TEXT を使用します。
IDは今回使用しないので空の配列を渡します。
PAYLOADは自作する必要があります。

NDEFを書き込む

タグの判定

NDEFを書き込むには、NFC反応時に発行されるIntent内に含まれるTagから
Ndef クラスもしくはNdefFormatable クラスに変換する必要があります。
また、NdefクラスとNdefFormatableクラスに親子関係はないので
どのタグなのか判定した上で、処理を別にする必要があります。

Ndefの書き込み

Ndefの場合、書き込み禁止やサイズを見ることができるので
判定した上で書き込みます。

NdefFormatableの書き込み

NdefFormatableの場合、Ndefの様にタグの状態を見ることができないので
そのまま書き込みます。

ソースコード


カスタマー開発部 山下智樹

AndroidでRTD Textを書く

RTD Textを書く

AndroidでRTD Textを書き込みます。

反応するタグの種類の限定

NDEFを書き込めるタグの種類はNDEFタグもしくはNDEFFormatableタグなので、どちらかに反応するようにNfcAdapter#enableForgroundDispatch()を呼んであげます。

PendingIntent pendingIntent = PendingIntent.getActivity(this, 0, new Intent(this,
getClass()), 0);
IntentFilter[] intentFilter = new IntentFilter[] {
new IntentFilter(NfcAdapter.ACTION_TECH_DISCOVERED),
};
String[][] techList = new String[][] {
{
android.nfc.tech.NdefFormatable.class.getName()
}, {
android.nfc.tech.Ndef.class.getName()
}
};
mNfcAdapter.enableForegroundDispatch(this, pendingIntent, intentFilter, techList);

NdefMessageの作成

書き込み対象のRTD Text RecordをもったNdefMessageを作成します。
NdefRecordの作成には
  • TNF
  • TYPE
  • ID
  • PAYLOAD
が必要になります。(他に全てのバイナリから作成することも可能です)
TNFはTextRecord#TNF_WELL_KNOWN を使用します。
TYPEはTextRecord#RTD_TEXT を使用します。
IDは今回使用しないので空の配列を渡します。
PAYLOADは自作する必要があります。

NDEFを書き込む

タグの判定

NDEFを書き込むには、NFC反応時に発行されるIntent内に含まれるTagから
Ndef クラスもしくはNdefFormatable クラスに変換する必要があります。
また、NdefクラスとNdefFormatableクラスに親子関係はないので
どのタグなのか判定した上で、処理を別にする必要があります。

Ndefの書き込み

Ndefの場合、書き込み禁止やサイズを見ることができるので
判定した上で書き込みます。

NdefFormatableの書き込み

NdefFormatableの場合、Ndefの様にタグの状態を見ることができないので
そのまま書き込みます。

ソースコード


カスタマー開発部 山下智樹

2012年8月7日火曜日

SNEPとは

Simple NDEF Exchange Protocol(通称SNEP)とは、NFCのP2Pで使われるプロトコルです。
NFC Device同士でServerとClientになり、HTTPのようにGETやPUTなどのメソッドを使いデータのやり取りを行います。


原文

Simple NDEF Exchange Protocol
Technical Specification
NFC Forum™
SNEP 1.0
NFCForum-TS-SNEP_1.0
2011-08-31

NFC Simple NDEF Exchange Protocol (SNEP) specification


和訳



カスタマー開発部 山下智樹

SNEP(Simple NDEF Exchange Protocol)の仕様書を和訳しました。

SNEPとは

Simple NDEF Exchange Protocol(通称SNEP)とは、NFCのP2Pで使われるプロトコルです。
NFC Device同士でServerとClientになり、HTTPのようにGETやPUTなどのメソッドを使いデータのやり取りを行います。


原文

Simple NDEF Exchange Protocol
Technical Specification
NFC Forum™
SNEP 1.0
NFCForum-TS-SNEP_1.0
2011-08-31

NFC Simple NDEF Exchange Protocol (SNEP) specification


和訳



カスタマー開発部 山下智樹

2012年8月3日金曜日

RTD Textを読む

AndroidでRTD Textを読み取ります。
AndroidではNdefMessageとNdefRecordのクラスが用意されています。
NdefRecordはヘッダまでしかパースされないので
PAYLOADを自分でパースする必要があります。

NDEF Messageを取得する

NdefMessageはActivity#onNewIntent(:Intent):void のIntentのExtraに
NfcAdapter.EXTRA_NDEF_MESSAGESという名前で格納されています。
形式はParcelable[]なので一時的にParcelable[]で保持しておき
その中のNdefMessageを取り出します。

Ndef Recordを取得する

NdefRecordはNdefMessage#getRecords():NdefRecord[] で取得します。

RTD Textの判定をする

Textの判定はTNFがWELL_KNOWNになっていることと、TYPEが'T'になっていることを確認します。
NdefRecordからTNFを取得するにはNdefRecord#getTnf():shortを使います。
また、各TNFはNdefRecordに定義されているのでその定数を使います。
NdefRecordからTYPEを取得するにはNdefRecord#getType():byte[]を使います。
また、RTDのTYPEはNdefRecordに定義されているのでその定数を使います。

RTD Textをパースする

NdefRecordからPAYLOADを取得するにはNdefRecord#getPayload():byte[]を使用します。
PAYLOADが取得できたので、RTD Textの仕様に従いパースしていきます。
RTD Textの仕様についてはこちらを御覧ください。
ブリリアントサービス NFC技術ブログ: RTD Textとは
例では文字列(言語コード)という内容で返しています。

実行イメージ


ソースコード

https://github.com/bs-nfc/ReadRTDText

カスタマー開発部 山下智樹

AndroidでRTD Textを読む

RTD Textを読む

AndroidでRTD Textを読み取ります。
AndroidではNdefMessageとNdefRecordのクラスが用意されています。
NdefRecordはヘッダまでしかパースされないので
PAYLOADを自分でパースする必要があります。

NDEF Messageを取得する

NdefMessageはActivity#onNewIntent(:Intent):void のIntentのExtraに
NfcAdapter.EXTRA_NDEF_MESSAGESという名前で格納されています。
形式はParcelable[]なので一時的にParcelable[]で保持しておき
その中のNdefMessageを取り出します。

Ndef Recordを取得する

NdefRecordはNdefMessage#getRecords():NdefRecord[] で取得します。

RTD Textの判定をする

Textの判定はTNFがWELL_KNOWNになっていることと、TYPEが'T'になっていることを確認します。
NdefRecordからTNFを取得するにはNdefRecord#getTnf():shortを使います。
また、各TNFはNdefRecordに定義されているのでその定数を使います。
NdefRecordからTYPEを取得するにはNdefRecord#getType():byte[]を使います。
また、RTDのTYPEはNdefRecordに定義されているのでその定数を使います。

RTD Textをパースする

NdefRecordからPAYLOADを取得するにはNdefRecord#getPayload():byte[]を使用します。
PAYLOADが取得できたので、RTD Textの仕様に従いパースしていきます。
RTD Textの仕様についてはこちらを御覧ください。
ブリリアントサービス NFC技術ブログ: RTD Textとは
例では文字列(言語コード)という内容で返しています。

実行イメージ


ソースコード

https://github.com/bs-nfc/ReadRTDText

カスタマー開発部 山下智樹

2012年8月2日木曜日

NDEFとは

NFC Data Exchange Formatと呼ばれるもので、NFCでデータのやり取りをする際に使われるデータ・フォーマットです。
仕様書はこちらにあります


NFC Forum : Technical Specifications
http://www.nfc-forum.org/specs/spec_list/#ndefts


この内容についてNFC Labにて発表をしました。
資料はこちらです。
http://www.slideshare.net/tomorrowkey/ndef-13784268

Ndefの構成


NDEFには一つのNdef Messageが含まれます。
またNdef Messageには0個以上のNdef Recordが含まれます。

Ndef Recordの構成


Ndef Recordは大きくヘッダとペイロードの2つに分けることができます。

  • ヘッダ
    • MB(Message Begin)
      • 1bit
      • このフラグが1になっていると、最初のNdef Recordであることを表します。
    • ME(Message End)
      • 1bit
      • このフラグが1になっていると、最後のNdefRecordであることを表します。
    • CR(Chunked Flag)
      • 1bit
      • このフラグが1になっていると、分割されたNdef Messageであることを表します。
    • SR(Short Record)
      • 1bit
      • このフラグが1になっていると、Ndef Message全体が255Byte以下であることを表します。
      • またその場合、Payload Lengthが1Byteになります。(データサイズの節約になります)
    • IL(ID Length)
      • 1bit
      • このフラグが1になっていると、IDが格納されていることを表します。
    • TNF(Type Name Format)
      • 3bit
      • TYPEの種類を表します。
        • 0x00 Empty
        • 0x01 NFC Forum well-known-type
        • 0x02 Media-type as define in RFC2046
        • 0x03 Absolute URI as define in RFC 3986
        • 0x04 NFC Forum external type
        • 0x05 Unknown
        • 0x06 Unchanged
        • 0x07 Reserved
      • ここの内容によってTYPE の解釈が変わります。
    • TYPE LENGTH
      • 1Byte
      • TYPEフィールドの長さを表します。
      • 符号なし整数
    • PAYLOAD LENGTH
      • 1Byte or 4Byte
      • PAYLOADの長さを表します。
      • ビッグエンディアン、符号なし整数
      • SRが1だった場合、1Byteになります。
    • ID LENGTH
      • 1Byte
      • IDの長さを指定します。
      • 符号なし整数
    • TYPE
      • TYPE LENGTHによって長さが変わります。
      • TNFの値によって内容の解釈が変わります。
      • 例えば0x01 NFC Forum well-known-type だった場合
        • 'T' -> Text
        • 'U' -> URI
        • 'Sp' -> Smart Poster
    • ID
      • ILによって存在しない場合があります。
      • ID LENGTHによって長さが変わります。
      • Ndef RecordのIDを設定することができます。
  • ペイロード
    • データ本体
    • TYPEとTNFによってフォーマットが異なります。
    • well-known-typeについては別エントリにて解説します。



カスタマー開発部 山下智樹

NDEFとは

NDEFとは

NFC Data Exchange Formatと呼ばれるもので、NFCでデータのやり取りをする際に使われるデータ・フォーマットです。
仕様書はこちらにあります


NFC Forum : Technical Specifications
http://www.nfc-forum.org/specs/spec_list/#ndefts


この内容についてNFC Labにて発表をしました。
資料はこちらです。
http://www.slideshare.net/tomorrowkey/ndef-13784268

Ndefの構成


NDEFには一つのNdef Messageが含まれます。
またNdef Messageには0個以上のNdef Recordが含まれます。

Ndef Recordの構成


Ndef Recordは大きくヘッダとペイロードの2つに分けることができます。

  • ヘッダ
    • MB(Message Begin)
      • 1bit
      • このフラグが1になっていると、最初のNdef Recordであることを表します。
    • ME(Message End)
      • 1bit
      • このフラグが1になっていると、最後のNdefRecordであることを表します。
    • CR(Chunked Flag)
      • 1bit
      • このフラグが1になっていると、分割されたNdef Messageであることを表します。
    • SR(Short Record)
      • 1bit
      • このフラグが1になっていると、Ndef Message全体が255Byte以下であることを表します。
      • またその場合、Payload Lengthが1Byteになります。(データサイズの節約になります)
    • IL(ID Length)
      • 1bit
      • このフラグが1になっていると、IDが格納されていることを表します。
    • TNF(Type Name Format)
      • 3bit
      • TYPEの種類を表します。
        • 0x00 Empty
        • 0x01 NFC Forum well-known-type
        • 0x02 Media-type as define in RFC2046
        • 0x03 Absolute URI as define in RFC 3986
        • 0x04 NFC Forum external type
        • 0x05 Unknown
        • 0x06 Unchanged
        • 0x07 Reserved
      • ここの内容によってTYPE の解釈が変わります。
    • TYPE LENGTH
      • 1Byte
      • TYPEフィールドの長さを表します。
      • 符号なし整数
    • PAYLOAD LENGTH
      • 1Byte or 4Byte
      • PAYLOADの長さを表します。
      • ビッグエンディアン、符号なし整数
      • SRが1だった場合、1Byteになります。
    • ID LENGTH
      • 1Byte
      • IDの長さを指定します。
      • 符号なし整数
    • TYPE
      • TYPE LENGTHによって長さが変わります。
      • TNFの値によって内容の解釈が変わります。
      • 例えば0x01 NFC Forum well-known-type だった場合
        • 'T' -> Text
        • 'U' -> URI
        • 'Sp' -> Smart Poster
    • ID
      • ILによって存在しない場合があります。
      • ID LENGTHによって長さが変わります。
      • Ndef RecordのIDを設定することができます。
  • ペイロード
    • データ本体
    • TYPEとTNFによってフォーマットが異なります。
    • well-known-typeについては別エントリにて解説します。



カスタマー開発部 山下智樹

RTD Textとは

Record Type DefinitionのTextフォーマットのことを指します。
仕様書はこちらにあります。


NFC Forum : Technical Specifications
http://www.nfc-forum.org/specs/spec_list/#rtds

Textフォーマットの構造

  • Encode
    • 1bit
    • エンコードを表します。
      • 0 -> UTF-8
      • 1 -> UTF-16
  • RFU
    • 1bit
    • Reserved for Future Use
  • Language Code Length
    • 6bit
    • 言語コードの長さを表します。
  • Language Code
    • Language Code Lengthによって長さが変わります。
    • 言語コードを表します。(ISO/IANA)
    • US-ASCIIエンコードで格納します。
  • Actual Text
    • 実際のテキストを格納します。
    • Encodeにて指定したエンコードで格納します。

Textを格納したNDEFの例

"Hello, World." を表したNDEFは以下のようになります。

D1 01 10 54
02 65 6E 48
65 6C 6C 6F
2C 20 57 6F
72 6C 64 2E

  • FLAGS
    • MB 0x01
    • ME 0x01
    • CF 0x00
    • SR 0x01
    • IL 0x00
  • TNF 0x01 (Well Known Type)
  • TYPE LENGTH 0x01
  • PAYLOAD LENGTH 0x10 -> 16
  • TYPE 0x54 -> 'T'
  • PAYLOAD
    • Encoding 0x00 -> UTF-8
    • Language Code Length 0x02
    • Language Code 0x65 0x6E -> "en"
    • Actual Text
      • 0x48 0x65 0x6C 0x6C 0x6F 0x2C 0x20 0x57 0x6F 0x72 0x6C 0x64 0x2E
      • -> "Hello, World."

カスタマー開発部 山下智樹

RTD Textとは

RTD Textとは

Record Type DefinitionのTextフォーマットのことを指します。
仕様書はこちらにあります。


NFC Forum : Technical Specifications
http://www.nfc-forum.org/specs/spec_list/#rtds

Textフォーマットの構造

  • Encode
    • 1bit
    • エンコードを表します。
      • 0 -> UTF-8
      • 1 -> UTF-16
  • RFU
    • 1bit
    • Reserved for Future Use
  • Language Code Length
    • 6bit
    • 言語コードの長さを表します。
  • Language Code
    • Language Code Lengthによって長さが変わります。
    • 言語コードを表します。(ISO/IANA)
    • US-ASCIIエンコードで格納します。
  • Actual Text
    • 実際のテキストを格納します。
    • Encodeにて指定したエンコードで格納します。

Textを格納したNDEFの例

"Hello, World." を表したNDEFは以下のようになります。

D1 01 10 54
02 65 6E 48
65 6C 6C 6F
2C 20 57 6F
72 6C 64 2E

  • FLAGS
    • MB 0x01
    • ME 0x01
    • CF 0x00
    • SR 0x01
    • IL 0x00
  • TNF 0x01 (Well Known Type)
  • TYPE LENGTH 0x01
  • PAYLOAD LENGTH 0x10 -> 16
  • TYPE 0x54 -> 'T'
  • PAYLOAD
    • Encoding 0x00 -> UTF-8
    • Language Code Length 0x02
    • Language Code 0x65 0x6E -> "en"
    • Actual Text
      • 0x48 0x65 0x6C 0x6C 0x6F 0x2C 0x20 0x57 0x6F 0x72 0x6C 0x64 0x2E
      • -> "Hello, World."

カスタマー開発部 山下智樹

RTDとは

Record Type Definitionの略称で、NDEFのTNFにWell Known Typeが指定された際に、使用できるTYPEです。
仕様書はこちらにあります。


NFC Forum : Technical Specifications
http://www.nfc-forum.org/specs/spec_list/#rtds


2012年8月時点では以下の種類のフォーマットがあります。

  • Text
    • 複数の言語のテキストを効率的に格納するためのフォーマットです。
  • URI
    • URI(Uniform Resource Identifier)を効率的に格納するフォーマットです。
  • SmartPoster
    • URLやSMS,電話番号などを格納するフォーマットです。
    • このフォーマットはTextのブロックとURIのブロックで構成されています。
  • GenericControl
    • NFCの通信を介して他のデバイス、タグに特定のアクション(アプリケーションの起動やモードの変更など)を要求する簡単な方法を提供します。
  • Signature
    • NDEFに署名を追加するためのフォーマットです。

カスタマー開発部 山下智樹

RTDとは

RTDとは

Record Type Definitionの略称で、NDEFのTNFにWell Known Typeが指定された際に、使用できるTYPEです。
仕様書はこちらにあります。


NFC Forum : Technical Specifications
http://www.nfc-forum.org/specs/spec_list/#rtds


2012年8月時点では以下の種類のフォーマットがあります。

  • Text
    • 複数の言語のテキストを効率的に格納するためのフォーマットです。
  • URI
    • URI(Uniform Resource Identifier)を効率的に格納するフォーマットです。
  • SmartPoster
    • URLやSMS,電話番号などを格納するフォーマットです。
    • このフォーマットはTextのブロックとURIのブロックで構成されています。
  • GenericControl
    • NFCの通信を介して他のデバイス、タグに特定のアクション(アプリケーションの起動やモードの変更など)を要求する簡単な方法を提供します。
  • Signature
    • NDEFに署名を追加するためのフォーマットです。

カスタマー開発部 山下智樹

2012年7月25日水曜日

作るもの

  • ホームアプリでNFCに反応するアプリを作る
  • タグの種類によって制限する

解説

AndroidManifest.xml

1. NFCのIntentFilterを定義する
タグの種類によって制限をかけたいので、TECH_DISCOVEREDというアクションを設定します。


2. 制限するタグの定義ファイルを設定する
タグを制限するにはxmlファイルを定義する必要があります。


/res/xml/nfc_tech_filter.xml

1. 制限するタグを定義する
NfcFのみ反応したい場合、以下のように定義します。

NfcFかつNdefが定義されている場合のみ反応したい場合、以下のように定義します。

NfcFとNfcA両方に反応したい場合、以下のように定義します。


HomeActivity.java

1. Intentを受信したらNFC-IDを表示する
NFCのIntentが呼ばれた時にNFC-IDを取得し、Toastに表示します。
Intentを受信するイベントはアプリが起動する場合と、バックスタックにいる場合があるので
onCreate(:Bundle):void とonNewIntent(:Intent):void の2ヶ所から呼び出しています。


実行イメージ

ソースコード

https://github.com/bs-nfc/NFCHandlerOnHome

カスタマー開発部 山下智樹

アプリを起動していなくてもNFCに反応するアプリを作る

作るもの

  • ホームアプリでNFCに反応するアプリを作る
  • タグの種類によって制限する

解説

AndroidManifest.xml

1. NFCのIntentFilterを定義する
タグの種類によって制限をかけたいので、TECH_DISCOVEREDというアクションを設定します。


2. 制限するタグの定義ファイルを設定する
タグを制限するにはxmlファイルを定義する必要があります。


/res/xml/nfc_tech_filter.xml

1. 制限するタグを定義する
NfcFのみ反応したい場合、以下のように定義します。

NfcFかつNdefが定義されている場合のみ反応したい場合、以下のように定義します。

NfcFとNfcA両方に反応したい場合、以下のように定義します。


HomeActivity.java

1. Intentを受信したらNFC-IDを表示する
NFCのIntentが呼ばれた時にNFC-IDを取得し、Toastに表示します。
Intentを受信するイベントはアプリが起動する場合と、バックスタックにいる場合があるので
onCreate(:Bundle):void とonNewIntent(:Intent):void の2ヶ所から呼び出しています。


実行イメージ

ソースコード

https://github.com/bs-nfc/NFCHandlerOnHome

カスタマー開発部 山下智樹

2012年7月20日金曜日

指定するタグの種類について

AndroidでNFC対応アプリを作成する場合、どのタグに反応するかを指定することができます。(ACTION_TAG_DISCOVEREDの場合必要ありません)
指定できるタグの種類は以下があります。

  • IsoDep
  • MifareClassic
  • MifareUltralight
  • Ndef
  • NdefFormattable
  • NfcA
  • NfcB
  • NfcF
  • NfcV

これらのクラスはandroid.nfc.techパッケージに定義されています。
それぞれを説明します。

  • IsoDep
    • ISO-DEP(ISO/IEC 14443-4 DataExchangeProtocol)にアクセスできる
    • NfcAもしくはNfcBである
  • MifareClassic
    • NXP MifareClassic
    • NfcAである
  • MifareUltralight
    • NXP MifareUltralight
    • NfcAである
  • Ndef
    • Ndefにフォーマットされているタグ
  • NdefFormattable
    • Ndefにフォーマットできるタグ
  • NfcA
    • ISO/IEC 14443 TypeA
    • Mifare系がこれに該当する
  • NfcB
    • ISO/IEC 14443 TypeB
    • 日本の公共団体発行のカード等が該当する
  • NfcF
    • FeliCa系がこれに該当する
  • NfcV
    • いわゆる近傍型と呼ばれるタグの種類
    • ISO/IEC 15693
    • ICODE
    • NFCチップによっては対応していない場合があります

具体的にどれなんだろう

どのようなタグが該当するか、私の手持ちのタグをかざしてみます。

Suica

  • NfcF


Taspo

  • NdefFormattable
  • MifareClassic
  • NfcA


運転免許証

  • IsoDep
  • NfcB


Edy

  • NfcF


Clipper Card

  • NdefFormattable
  • IsoDep
  • NfcA


Brother ラベルプリンター RL-700S

  • NfcV
  • Ndef


ネットカフェの会員証

  • NdefFormattable
  • MifareClassic
  • NfcA


名刺

  • NfcF
  • Ndef

(中にNDEFフォーマットにvCardを書き込んだFeliCa Liteを仕込んでいます)


OCTOPUS

  • NfcF


NFC QUEST Card

  • Ndef
  • NfcF

カスタマー開発部 山下智樹

Androidで指定するタグの種類について

指定するタグの種類について

AndroidでNFC対応アプリを作成する場合、どのタグに反応するかを指定することができます。(ACTION_TAG_DISCOVEREDの場合必要ありません)
指定できるタグの種類は以下があります。

  • IsoDep
  • MifareClassic
  • MifareUltralight
  • Ndef
  • NdefFormattable
  • NfcA
  • NfcB
  • NfcF
  • NfcV

これらのクラスはandroid.nfc.techパッケージに定義されています。
それぞれを説明します。

  • IsoDep
    • ISO-DEP(ISO/IEC 14443-4 DataExchangeProtocol)にアクセスできる
    • NfcAもしくはNfcBである
  • MifareClassic
    • NXP MifareClassic
    • NfcAである
  • MifareUltralight
    • NXP MifareUltralight
    • NfcAである
  • Ndef
    • Ndefにフォーマットされているタグ
  • NdefFormattable
    • Ndefにフォーマットできるタグ
  • NfcA
    • ISO/IEC 14443 TypeA
    • Mifare系がこれに該当する
  • NfcB
    • ISO/IEC 14443 TypeB
    • 日本の公共団体発行のカード等が該当する
  • NfcF
    • FeliCa系がこれに該当する
  • NfcV
    • いわゆる近傍型と呼ばれるタグの種類
    • ISO/IEC 15693
    • ICODE
    • NFCチップによっては対応していない場合があります

具体的にどれなんだろう

どのようなタグが該当するか、私の手持ちのタグをかざしてみます。

Suica

  • NfcF


Taspo

  • NdefFormattable
  • MifareClassic
  • NfcA


運転免許証

  • IsoDep
  • NfcB


Edy

  • NfcF


Clipper Card

  • NdefFormattable
  • IsoDep
  • NfcA


Brother ラベルプリンター RL-700S

  • NfcV
  • Ndef


ネットカフェの会員証

  • NdefFormattable
  • MifareClassic
  • NfcA


名刺

  • NfcF
  • Ndef

(中にNDEFフォーマットにvCardを書き込んだFeliCa Liteを仕込んでいます)


OCTOPUS

  • NfcF


NFC QUEST Card

  • Ndef
  • NfcF

カスタマー開発部 山下智樹

2012年7月19日木曜日

NFCに関するActionの種類


AndroidでNFCに関するActionは以下の3つがあります。

  • ACTION_NDEF_DISCOVERED
  • ACTION_TECH_DISCOVERED
  • ACTION_TAG_DISCOVERED

NFCタグが検出されるといずれかのActionのIntentが発行されます。
どういう場合に発行されるか説明します。

  • ACTION_NDEF_DISCOVERED
    • タグがNDEFでフォーマットされていた場合に、このActionで発行されます。
    • タグの種類によってフィルタリングすることができます。
    • IntentのExtra内にNDEFの情報が含まれます。
    • 最も優先順位が高いです。
  • ACTION_TECH_DISCOVERED
    • 上記のActionで反応するアプリがなかった場合に、このActionで発行されます。
    • タグがNDEFでフォーマットされていなかった場合、一番優先度が高いです。
    • タグの種類によってフィルタリングすることができます。
  • ACTION_TAG_DISCOVERED
    • 上記2種類のActionで対応するアプリがなかった場合に、このActionで発行されます。
    • このActionで指定していればどんなNFC Tagタイプでも反応することができますが、上記2つのActionでアプリが起動した場合、反応することができません。
    • 一番優先度が低いです。

Actionの優先度とは



タグの種類によってスタート地点が異なります。
タグがNDEFにフォーマットされている場合、ACTION_NDEF_DISCOVEREDの判定が行われます。
端末にインストールされているアプリでACTION_NDEF_DISCOVEREDを処理できるアプリが存在した場合
そちらにIntentが渡されます。
ACTION_NDEF_DISCOVEREDを処理できるアプリが存在しなかった場合、もしくはタグがNDEFでフォーマットされていない場合は
ACTION_TECH_DISCOVEREDの判定が行われます。
ACTION_TECH_DISCOVEREDはタグの種類によってフィルタリングすることが可能なIntentです。
(たとえばTypeAにのみ反応するアプリや、TypeFのみに反応するアプリなど)
端末にインストールされているアプリでACTION_TECH_DISCOVEREDを処理できるアプリが存在した場合
そちらにIntentが渡されます。
上記2つのActionを処理できるアプリが存在しなかった場合、ACTION_TAG_DISCOVEREDが発行されます。

Actionを優先順位順に並べると
ACTION_NDEF_DISCOVERED、ACTION_TECH_DISCOVERED、ACTION_TAG_DISCOVEREDとなり
優先順位の高い方から処理可能か判定されます。
途中で処理可能と判定された場合、優先順位の低いActionの判定は行われません。

アプリを作る際に注意しなければならないのは、どのようなタグに反応するアプリなのか決定し
できるだけ優先順位の高いActionで起動できるようにすること
安易にACTION_TAG_DISCOVEREDを指定すると、優先順位の高いアプリにIntentを奪われて起動されない事があります。

カスタマー開発部 山下智樹

NFCに関連するActionについて

NFCに関するActionの種類


AndroidでNFCに関するActionは以下の3つがあります。

  • ACTION_NDEF_DISCOVERED
  • ACTION_TECH_DISCOVERED
  • ACTION_TAG_DISCOVERED

NFCタグが検出されるといずれかのActionのIntentが発行されます。
どういう場合に発行されるか説明します。

  • ACTION_NDEF_DISCOVERED
    • タグがNDEFでフォーマットされていた場合に、このActionで発行されます。
    • タグの種類によってフィルタリングすることができます。
    • IntentのExtra内にNDEFの情報が含まれます。
    • 最も優先順位が高いです。
  • ACTION_TECH_DISCOVERED
    • 上記のActionで反応するアプリがなかった場合に、このActionで発行されます。
    • タグがNDEFでフォーマットされていなかった場合、一番優先度が高いです。
    • タグの種類によってフィルタリングすることができます。
  • ACTION_TAG_DISCOVERED
    • 上記2種類のActionで対応するアプリがなかった場合に、このActionで発行されます。
    • このActionで指定していればどんなNFC Tagタイプでも反応することができますが、上記2つのActionでアプリが起動した場合、反応することができません。
    • 一番優先度が低いです。

Actionの優先度とは



タグの種類によってスタート地点が異なります。
タグがNDEFにフォーマットされている場合、ACTION_NDEF_DISCOVEREDの判定が行われます。
端末にインストールされているアプリでACTION_NDEF_DISCOVEREDを処理できるアプリが存在した場合
そちらにIntentが渡されます。
ACTION_NDEF_DISCOVEREDを処理できるアプリが存在しなかった場合、もしくはタグがNDEFでフォーマットされていない場合は
ACTION_TECH_DISCOVEREDの判定が行われます。
ACTION_TECH_DISCOVEREDはタグの種類によってフィルタリングすることが可能なIntentです。
(たとえばTypeAにのみ反応するアプリや、TypeFのみに反応するアプリなど)
端末にインストールされているアプリでACTION_TECH_DISCOVEREDを処理できるアプリが存在した場合
そちらにIntentが渡されます。
上記2つのActionを処理できるアプリが存在しなかった場合、ACTION_TAG_DISCOVEREDが発行されます。

Actionを優先順位順に並べると
ACTION_NDEF_DISCOVERED、ACTION_TECH_DISCOVERED、ACTION_TAG_DISCOVEREDとなり
優先順位の高い方から処理可能か判定されます。
途中で処理可能と判定された場合、優先順位の低いActionの判定は行われません。

アプリを作る際に注意しなければならないのは、どのようなタグに反応するアプリなのか決定し
できるだけ優先順位の高いActionで起動できるようにすること
安易にACTION_TAG_DISCOVEREDを指定すると、優先順位の高いアプリにIntentを奪われて起動されない事があります。

カスタマー開発部 山下智樹

Related Posts Plugin for WordPress, Blogger...