SlideShare une entreprise Scribd logo
1  sur  19
Télécharger pour lire hors ligne
2次元と仲良くしよう
                と思いました
               NFCLab 8月定例会   下川 敬弘




12年8月25日土曜日
自己紹介

              株式会社ソニックムーブ(神楽坂)

              フロントエンド エンジニア

              NFCLab, JAG, JAG   城支部

              @androhi



12年8月25日土曜日
アプリ作ってみてます




12年8月25日土曜日
概要


              NDEFメッセージ   QRコード

              Library : ZXing 2.0




12年8月25日土曜日
想定する利用シーン

              A「このポスターにタッチすると、スマートフォンで何か見られるらしいぞ。」


              B「どれどれ…。?。何も起きないけど。」


              C「あっ!おサイフケータイには、順次対応予定ですって書いてある!」


              D「私のも、おサイフケータイだからダメだわ。」


              あなた「まかせろっ!(」・ω・)」うー!(/・ω・)/にゃー!」


              ABCD「キャー!ステキー!」




12年8月25日土曜日
勉強になったコード




12年8月25日土曜日
NDEFメッセージ読み込み
      private String getUrl(NdefMessage msg) {

              // NDEFレコードからTNFを取り出す
              NdefRecord[] records = msg.getRecords();
              short tnf = records[0].getTnf();

              if (tnf == NdefRecord.TNF_WELL_KNOWN) {
                  return parseWellKnown(records[0]);
              } else if (tnf == NdefRecord.TNF_ABSOLUTE_URI) {
                  return parseAbsolute(records[0]);
              }

              throw new IllegalArgumentException("Unknown TNF " + tnf);
      }



12年8月25日土曜日
TNF = Type Name Format

              TNF_ABSOLUTE_URI

                URIをベースとしたタイプフィールド


              TNF_WELL_KNOWN

                設定したRTDに応じて、振る舞いが変わる



12年8月25日土曜日
NDEFレコード読み込み
     private String parseAbsolute(NdefRecord record) {
         byte[] payload = record.getPayload();
         return new String(payload, Charset.forName("UTF-8"));
     }

     private String parseWellKnown(NdefRecord record) {
         // RTD Uriかチェック
         if (Arrays.equals(record.getType(), NdefRecord.RTD_URI)) {
             byte[] payload = record.getPayload();
             String prefix = prefixMap.get(payload[0]);
             byte[] uriData = Arrays.copyOfRange(payload, 1, payload.length);
             String uri = new String(uriData, Charset.forName("UTF-8"));
             return prefix.concat(uri);
         }
         throw new IllegalArgumentException("Not Support RTD");
     }




12年8月25日土曜日
RTD = Record Type Definition

              RTD_URI

                URIをベースとしたPayload




12年8月25日土曜日
Recordsマッピング
          Name    Offset     Size       Value            Description

                                         URI         The URI identifier
     Identifier
                    0       1 byte    identifier    code, as specified in
        code
                                         code             Table 3.

                                                    The rest of the URI,
          URI                                       or the entire URI (if
                    1          N     UTF-8 string
         field                                        identifier code is
                                                            0x00).



                           引用:NFC URI RTD Technical Specification
                           http://www.nfc-forum.org/specs/spec_list/#rtds


12年8月25日土曜日
URI identifier code
     Decimal   Hex             Protocol            Decimal        Hex         Protocol

        0      0x00              N/A                  18         0x12         rtsp://

        1      0x01          http://www.              19         0x13           urn:

        2      0x02          https://www.             20         0x14           pop:

        3      0x03            http://                21         0x15           sip:

        4      0x04            https://               22         0x16          sips:

        5      0x05              tel:                 23         0x17          tftp:

        6      0x06            mailto:                24         0x18         btspp://

        7      0x07   ftp://anonymous:anonymous@      25         0x19        btl2cap://

        8      0x08           ftp://ftp.              26         0x1A        btgoep://

        9      0x09            ftps://                27         0x1B        tcpobex://

        10     0x0A            sftp://                28         0x1C       irdaobex://

        11     0x0B             smb://                29         0x1D         file://

        12     0x0C             nfs://                30         0x1E       urn:epc:id:

        13     0x0D             ftp://                31         0x1F       urn:epc:tag:

        14     0x0E             dav://                32         0x20       urn:epc:pat:

        15     0x0F             news:                 33         0x21       urn:epc:raw:

        16     0x10           telnet://               34         0x22         urn:epc:

        17     0x11             imap:                 35         0x23         urn:nfc:

                                                   36...255   0x24...0xFF       RFU


12年8月25日土曜日
private String getUrl(NdefMessage msg) {

              // NDEFレコードからTNFを取り出す
              NdefRecord[] records = msg.getRecords();
              short tnf = records[0].getTnf();

              if (tnf == NdefRecord.TNF_WELL_KNOWN) {
                  // URLを取り出す
                  return parseWellKnown(records[0]);
              } else if (tnf == NdefRecord.TNF_ABSOLUTE_URI) {
                  // URLを取り出す
                  return parseAbsolute(records[0]);
              }

              throw new IllegalArgumentException("Unknown TNF " + tnf);
      }




12年8月25日土曜日
QRコード生成は、以下を参考にしました。


               ブログ:明日の


               ZXingを使ってQRコードを表示する


               http://d.hatena.ne.jp/tomorrowkey/
               20091114/1258206013




12年8月25日土曜日
public Bitmap createQRCodeByZxing(String contents, int size) throws WriterException {
        QRCodeWriter qrWriter = new QRCodeWriter();
        // 異なる型の値を入れるためgenericは使えない
         @SuppressWarnings("rawtypes")
         Hashtable encodeHint = new Hashtable();
         encodeHint.put(EncodeHintType.CHARACTER_SET, "shiftjis");
         // エラー修復レベルを指定
        encodeHint.put(EncodeHintType.ERROR_CORRECTION, ErrorCorrectionLevel.L);
        BitMatrix qrCodeData = qrWriter.encode(contents, BarcodeFormat.QR_CODE, size, size,
encodeHint);
        // QRコードのbitmap画像を生成
         Bitmap bitmap = Bitmap.createBitmap(size, size, Bitmap.Config.ARGB_8888);
         bitmap.eraseColor(Color.argb(255, 255, 255, 255));
         for(int x = 0; x < qrCodeData.getWidth(); x++) {
             for(int y = 0; y < qrCodeData.getHeight(); y++) {
                 if(qrCodeData.get(x, y)) {
                     // trueはBlack
                      bitmap.setPixel(x, y, Color.BLACK);
                  } else {
                      // falseはWhite
                      bitmap.setPixel(x, y, Color.WHITE);
                  }
              }
         }

         return bitmap;
    }


12年8月25日土曜日
QRコード生成のイメージ
              T   F   T   T   F   T   T   F   F

              F   F   F   T   T   T   F   T   F

              T   T   F   T   F   T   T   F   T

              T   F   T   T   F   T   F   F   F

              F   F   T   F   F   F   T   T   T

              F   T   T   F   F   F   T   T   F

              F   F   T   T   F   T   F   F   F

              T   T   F   F   T   T   F   T   F

              F   T   T   T   F   F   T   F   T




12年8月25日土曜日
まとめ1
              NDEFメッセージ

               仕様を理解する

               TNF = Type Name Format

               RTD = Record Type Definition




12年8月25日土曜日
まとめ2
              QRコード

               ZXing超便利(遅っ)




12年8月25日土曜日
ご清聴
              ありがとうございました



12年8月25日土曜日

Contenu connexe

Tendances

ナウなヤングにバカうけのイカしたタグ付き共用体
ナウなヤングにバカうけのイカしたタグ付き共用体ナウなヤングにバカうけのイカしたタグ付き共用体
ナウなヤングにバカうけのイカしたタグ付き共用体digitalghost
 
ネイティブコードを語る
ネイティブコードを語るネイティブコードを語る
ネイティブコードを語るKenji Imasaki
 
Fftw誰得ガイド
Fftw誰得ガイドFftw誰得ガイド
Fftw誰得ガイドchunjp
 
Sounds Like Common Lisp - ゼロからはじめるサウンドプログラミング
Sounds Like Common Lisp - ゼロからはじめるサウンドプログラミングSounds Like Common Lisp - ゼロからはじめるサウンドプログラミング
Sounds Like Common Lisp - ゼロからはじめるサウンドプログラミングt-sin
 
Visual C++コード分析を支えるSAL
Visual C++コード分析を支えるSALVisual C++コード分析を支えるSAL
Visual C++コード分析を支えるSALegtra
 
Xbyakの紹介とその周辺
Xbyakの紹介とその周辺Xbyakの紹介とその周辺
Xbyakの紹介とその周辺MITSUNARI Shigeo
 
2014年の社内新人教育テキスト #2(関数型言語からオブジェクト指向言語へ)
2014年の社内新人教育テキスト #2(関数型言語からオブジェクト指向言語へ)2014年の社内新人教育テキスト #2(関数型言語からオブジェクト指向言語へ)
2014年の社内新人教育テキスト #2(関数型言語からオブジェクト指向言語へ)Shin-ya Koga
 
2021 10-12.linx device-tree
2021 10-12.linx device-tree2021 10-12.linx device-tree
2021 10-12.linx device-treeShin-ya Koga
 
SEH on mingw32
SEH on mingw32SEH on mingw32
SEH on mingw32kikairoya
 
AVX-512(フォーマット)詳解
AVX-512(フォーマット)詳解AVX-512(フォーマット)詳解
AVX-512(フォーマット)詳解MITSUNARI Shigeo
 
あなたの知らないnopたち@ラボユース合宿
あなたの知らないnopたち@ラボユース合宿あなたの知らないnopたち@ラボユース合宿
あなたの知らないnopたち@ラボユース合宿MITSUNARI Shigeo
 
Intro to SVE 富岳のA64FXを触ってみた
Intro to SVE 富岳のA64FXを触ってみたIntro to SVE 富岳のA64FXを触ってみた
Intro to SVE 富岳のA64FXを触ってみたMITSUNARI Shigeo
 
KLab勉強会#6 発表資料
KLab勉強会#6 発表資料KLab勉強会#6 発表資料
KLab勉強会#6 発表資料Suguru Oho
 
乱数調整概説
乱数調整概説乱数調整概説
乱数調整概説Blastoise_X
 
Bluetooth通信の 仕組みと活用法紹介
Bluetooth通信の仕組みと活用法紹介Bluetooth通信の仕組みと活用法紹介
Bluetooth通信の 仕組みと活用法紹介Takehiko YOSHIDA
 
コルーチンでC++でも楽々ゲーム作成!
コルーチンでC++でも楽々ゲーム作成!コルーチンでC++でも楽々ゲーム作成!
コルーチンでC++でも楽々ゲーム作成!amusementcreators
 

Tendances (20)

ナウなヤングにバカうけのイカしたタグ付き共用体
ナウなヤングにバカうけのイカしたタグ付き共用体ナウなヤングにバカうけのイカしたタグ付き共用体
ナウなヤングにバカうけのイカしたタグ付き共用体
 
ネイティブコードを語る
ネイティブコードを語るネイティブコードを語る
ネイティブコードを語る
 
Fftw誰得ガイド
Fftw誰得ガイドFftw誰得ガイド
Fftw誰得ガイド
 
Sounds Like Common Lisp - ゼロからはじめるサウンドプログラミング
Sounds Like Common Lisp - ゼロからはじめるサウンドプログラミングSounds Like Common Lisp - ゼロからはじめるサウンドプログラミング
Sounds Like Common Lisp - ゼロからはじめるサウンドプログラミング
 
Visual C++コード分析を支えるSAL
Visual C++コード分析を支えるSALVisual C++コード分析を支えるSAL
Visual C++コード分析を支えるSAL
 
Xbyakの紹介とその周辺
Xbyakの紹介とその周辺Xbyakの紹介とその周辺
Xbyakの紹介とその周辺
 
2014年の社内新人教育テキスト #2(関数型言語からオブジェクト指向言語へ)
2014年の社内新人教育テキスト #2(関数型言語からオブジェクト指向言語へ)2014年の社内新人教育テキスト #2(関数型言語からオブジェクト指向言語へ)
2014年の社内新人教育テキスト #2(関数型言語からオブジェクト指向言語へ)
 
From IA-32 to avx-512
From IA-32 to avx-512From IA-32 to avx-512
From IA-32 to avx-512
 
2021 10-12.linx device-tree
2021 10-12.linx device-tree2021 10-12.linx device-tree
2021 10-12.linx device-tree
 
SEH on mingw32
SEH on mingw32SEH on mingw32
SEH on mingw32
 
AVX-512(フォーマット)詳解
AVX-512(フォーマット)詳解AVX-512(フォーマット)詳解
AVX-512(フォーマット)詳解
 
あなたの知らないnopたち@ラボユース合宿
あなたの知らないnopたち@ラボユース合宿あなたの知らないnopたち@ラボユース合宿
あなたの知らないnopたち@ラボユース合宿
 
Intro to SVE 富岳のA64FXを触ってみた
Intro to SVE 富岳のA64FXを触ってみたIntro to SVE 富岳のA64FXを触ってみた
Intro to SVE 富岳のA64FXを触ってみた
 
KLab勉強会#6 発表資料
KLab勉強会#6 発表資料KLab勉強会#6 発表資料
KLab勉強会#6 発表資料
 
乱数調整概説
乱数調整概説乱数調整概説
乱数調整概説
 
Fbx解説 (1 構文編) (1)
Fbx解説 (1  構文編) (1)Fbx解説 (1  構文編) (1)
Fbx解説 (1 構文編) (1)
 
Bluetooth通信の 仕組みと活用法紹介
Bluetooth通信の仕組みと活用法紹介Bluetooth通信の仕組みと活用法紹介
Bluetooth通信の 仕組みと活用法紹介
 
ゆるバグ
ゆるバグゆるバグ
ゆるバグ
 
コルーチンでC++でも楽々ゲーム作成!
コルーチンでC++でも楽々ゲーム作成!コルーチンでC++でも楽々ゲーム作成!
コルーチンでC++でも楽々ゲーム作成!
 
コルーチンを使おう
コルーチンを使おうコルーチンを使おう
コルーチンを使おう
 

En vedette

Android Studio Pluginを使ってみた
Android Studio Pluginを使ってみたAndroid Studio Pluginを使ってみた
Android Studio Pluginを使ってみたTomoki YAMASHITA
 
Dialogを使うときはこうしてます
Dialogを使うときはこうしてますDialogを使うときはこうしてます
Dialogを使うときはこうしてますTomoki YAMASHITA
 
避けては通れないバイナリ地獄 もっとRTDを-
避けては通れないバイナリ地獄 もっとRTDを-避けては通れないバイナリ地獄 もっとRTDを-
避けては通れないバイナリ地獄 もっとRTDを-Tomoki YAMASHITA
 
ぼくのビルドはにゃあとなく
ぼくのビルドはにゃあとなくぼくのビルドはにゃあとなく
ぼくのビルドはにゃあとなくTomoki YAMASHITA
 
Nfc(Jelly Bean)利用アプリ紹介+関連技術ネタ
Nfc(Jelly Bean)利用アプリ紹介+関連技術ネタNfc(Jelly Bean)利用アプリ紹介+関連技術ネタ
Nfc(Jelly Bean)利用アプリ紹介+関連技術ネタKenichi Kambara
 
UIDのことわかってますか? -フォーマット編-
UIDのことわかってますか? -フォーマット編-UIDのことわかってますか? -フォーマット編-
UIDのことわかってますか? -フォーマット編-Natsuhiko Suwamura
 

En vedette (9)

Android Studio Pluginを使ってみた
Android Studio Pluginを使ってみたAndroid Studio Pluginを使ってみた
Android Studio Pluginを使ってみた
 
Dialogを使うときはこうしてます
Dialogを使うときはこうしてますDialogを使うときはこうしてます
Dialogを使うときはこうしてます
 
避けては通れないバイナリ地獄 もっとRTDを-
避けては通れないバイナリ地獄 もっとRTDを-避けては通れないバイナリ地獄 もっとRTDを-
避けては通れないバイナリ地獄 もっとRTDを-
 
ぼくのビルドはにゃあとなく
ぼくのビルドはにゃあとなくぼくのビルドはにゃあとなく
ぼくのビルドはにゃあとなく
 
Nfc(Jelly Bean)利用アプリ紹介+関連技術ネタ
Nfc(Jelly Bean)利用アプリ紹介+関連技術ネタNfc(Jelly Bean)利用アプリ紹介+関連技術ネタ
Nfc(Jelly Bean)利用アプリ紹介+関連技術ネタ
 
NFC app launcher
NFC app launcherNFC app launcher
NFC app launcher
 
What is androider
What is androiderWhat is androider
What is androider
 
UUID
UUIDUUID
UUID
 
UIDのことわかってますか? -フォーマット編-
UIDのことわかってますか? -フォーマット編-UIDのことわかってますか? -フォーマット編-
UIDのことわかってますか? -フォーマット編-
 

Similaire à Nfc lab8月定例会

ハードウェアによる仮想化支援機能を利用したハイパバイザーIPS
ハードウェアによる仮想化支援機能を利用したハイパバイザーIPSハードウェアによる仮想化支援機能を利用したハイパバイザーIPS
ハードウェアによる仮想化支援機能を利用したハイパバイザーIPSFFRI, Inc.
 
自作LSIコミュニティの可能性
自作LSIコミュニティの可能性自作LSIコミュニティの可能性
自作LSIコミュニティの可能性Junichi Akita
 
Windowsのパケットモニタ作成
Windowsのパケットモニタ作成Windowsのパケットモニタ作成
Windowsのパケットモニタ作成Shinichi Hirauchi
 
Wiresharkの解析プラグインを作る ssmjp 201409
Wiresharkの解析プラグインを作る ssmjp 201409Wiresharkの解析プラグインを作る ssmjp 201409
Wiresharkの解析プラグインを作る ssmjp 201409稔 小林
 
[TL06] 日本の第一人者が C# の現状と今後を徹底解説! 「この素晴らしい C# に祝福を!」
[TL06] 日本の第一人者が C# の現状と今後を徹底解説! 「この素晴らしい C# に祝福を!」[TL06] 日本の第一人者が C# の現状と今後を徹底解説! 「この素晴らしい C# に祝福を!」
[TL06] 日本の第一人者が C# の現状と今後を徹底解説! 「この素晴らしい C# に祝福を!」de:code 2017
 
サーバ異常検知入門
サーバ異常検知入門サーバ異常検知入門
サーバ異常検知入門mangantempy
 
ラズパイでデバイスドライバを作ってみた。
ラズパイでデバイスドライバを作ってみた。ラズパイでデバイスドライバを作ってみた。
ラズパイでデバイスドライバを作ってみた。Kazuki Onishi
 
Cortex-M0プロセッサから自作して Lチカをやってみた
Cortex-M0プロセッサから自作してLチカをやってみたCortex-M0プロセッサから自作してLチカをやってみた
Cortex-M0プロセッサから自作して LチカをやってみたJunichi Akita
 
組み込みシステムのセキュリティ
組み込みシステムのセキュリティ組み込みシステムのセキュリティ
組み込みシステムのセキュリティFFRI, Inc.
 
Makerの「道具」としてのLSI ~「LED点滅用のLSIをつくって   Lチカをやってみた」のココロ~(MakerFaireTokyo2014)
Makerの「道具」としてのLSI~「LED点滅用のLSIをつくって  Lチカをやってみた」のココロ~(MakerFaireTokyo2014)Makerの「道具」としてのLSI~「LED点滅用のLSIをつくって  Lチカをやってみた」のココロ~(MakerFaireTokyo2014)
Makerの「道具」としてのLSI ~「LED点滅用のLSIをつくって   Lチカをやってみた」のココロ~(MakerFaireTokyo2014)Junichi Akita
 
R言語勉強会#6.pdf
R言語勉強会#6.pdfR言語勉強会#6.pdf
R言語勉強会#6.pdfTakuya Kubo
 
自作RISC-VチップでLチカをやってみた
自作RISC-VチップでLチカをやってみた自作RISC-VチップでLチカをやってみた
自作RISC-VチップでLチカをやってみたJunichi Akita
 
スタート低レイヤー #0
スタート低レイヤー #0スタート低レイヤー #0
スタート低レイヤー #0Kiwamu Okabe
 
実践 WebRTC 〜最新事例と開発ノウハウの紹介〜
実践 WebRTC 〜最新事例と開発ノウハウの紹介〜実践 WebRTC 〜最新事例と開発ノウハウの紹介〜
実践 WebRTC 〜最新事例と開発ノウハウの紹介〜Yusuke Naka
 
Observable Everywhere - Rxの原則とUniRxにみるデータソースの見つけ方
Observable Everywhere  - Rxの原則とUniRxにみるデータソースの見つけ方Observable Everywhere  - Rxの原則とUniRxにみるデータソースの見つけ方
Observable Everywhere - Rxの原則とUniRxにみるデータソースの見つけ方Yoshifumi Kawai
 

Similaire à Nfc lab8月定例会 (20)

ハードウェアによる仮想化支援機能を利用したハイパバイザーIPS
ハードウェアによる仮想化支援機能を利用したハイパバイザーIPSハードウェアによる仮想化支援機能を利用したハイパバイザーIPS
ハードウェアによる仮想化支援機能を利用したハイパバイザーIPS
 
自作LSIコミュニティの可能性
自作LSIコミュニティの可能性自作LSIコミュニティの可能性
自作LSIコミュニティの可能性
 
Windowsのパケットモニタ作成
Windowsのパケットモニタ作成Windowsのパケットモニタ作成
Windowsのパケットモニタ作成
 
Wiresharkの解析プラグインを作る ssmjp 201409
Wiresharkの解析プラグインを作る ssmjp 201409Wiresharkの解析プラグインを作る ssmjp 201409
Wiresharkの解析プラグインを作る ssmjp 201409
 
What is Metasepi?
What is Metasepi?What is Metasepi?
What is Metasepi?
 
Slide
SlideSlide
Slide
 
[TL06] 日本の第一人者が C# の現状と今後を徹底解説! 「この素晴らしい C# に祝福を!」
[TL06] 日本の第一人者が C# の現状と今後を徹底解説! 「この素晴らしい C# に祝福を!」[TL06] 日本の第一人者が C# の現状と今後を徹底解説! 「この素晴らしい C# に祝福を!」
[TL06] 日本の第一人者が C# の現状と今後を徹底解説! 「この素晴らしい C# に祝福を!」
 
0622
06220622
0622
 
サーバ異常検知入門
サーバ異常検知入門サーバ異常検知入門
サーバ異常検知入門
 
ラズパイでデバイスドライバを作ってみた。
ラズパイでデバイスドライバを作ってみた。ラズパイでデバイスドライバを作ってみた。
ラズパイでデバイスドライバを作ってみた。
 
Cortex-M0プロセッサから自作して Lチカをやってみた
Cortex-M0プロセッサから自作してLチカをやってみたCortex-M0プロセッサから自作してLチカをやってみた
Cortex-M0プロセッサから自作して Lチカをやってみた
 
組み込みシステムのセキュリティ
組み込みシステムのセキュリティ組み込みシステムのセキュリティ
組み込みシステムのセキュリティ
 
Prosym2012
Prosym2012Prosym2012
Prosym2012
 
Makerの「道具」としてのLSI ~「LED点滅用のLSIをつくって   Lチカをやってみた」のココロ~(MakerFaireTokyo2014)
Makerの「道具」としてのLSI~「LED点滅用のLSIをつくって  Lチカをやってみた」のココロ~(MakerFaireTokyo2014)Makerの「道具」としてのLSI~「LED点滅用のLSIをつくって  Lチカをやってみた」のココロ~(MakerFaireTokyo2014)
Makerの「道具」としてのLSI ~「LED点滅用のLSIをつくって   Lチカをやってみた」のココロ~(MakerFaireTokyo2014)
 
R言語勉強会#6.pdf
R言語勉強会#6.pdfR言語勉強会#6.pdf
R言語勉強会#6.pdf
 
自作RISC-VチップでLチカをやってみた
自作RISC-VチップでLチカをやってみた自作RISC-VチップでLチカをやってみた
自作RISC-VチップでLチカをやってみた
 
HTTP/2, QUIC入門
HTTP/2, QUIC入門HTTP/2, QUIC入門
HTTP/2, QUIC入門
 
スタート低レイヤー #0
スタート低レイヤー #0スタート低レイヤー #0
スタート低レイヤー #0
 
実践 WebRTC 〜最新事例と開発ノウハウの紹介〜
実践 WebRTC 〜最新事例と開発ノウハウの紹介〜実践 WebRTC 〜最新事例と開発ノウハウの紹介〜
実践 WebRTC 〜最新事例と開発ノウハウの紹介〜
 
Observable Everywhere - Rxの原則とUniRxにみるデータソースの見つけ方
Observable Everywhere  - Rxの原則とUniRxにみるデータソースの見つけ方Observable Everywhere  - Rxの原則とUniRxにみるデータソースの見つけ方
Observable Everywhere - Rxの原則とUniRxにみるデータソースの見つけ方
 

Dernier

論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...Toru Tamaki
 
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)Hiroshi Tomioka
 
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。iPride Co., Ltd.
 
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。iPride Co., Ltd.
 
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)Hiroshi Tomioka
 
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NTT DATA Technology & Innovation
 
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video UnderstandingToru Tamaki
 
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Gamesatsushi061452
 
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半        2024/04/26の勉強会で発表されたものです。新人研修 後半        2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。iPride Co., Ltd.
 
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルLoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルCRI Japan, Inc.
 
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイスLoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイスCRI Japan, Inc.
 

Dernier (11)

論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
 
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
 
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
 
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
 
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
 
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
 
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
 
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
 
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半        2024/04/26の勉強会で発表されたものです。新人研修 後半        2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
 
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルLoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
 
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイスLoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
 

Nfc lab8月定例会

  • 1. 2次元と仲良くしよう と思いました NFCLab 8月定例会 下川 敬弘 12年8月25日土曜日
  • 2. 自己紹介 株式会社ソニックムーブ(神楽坂) フロントエンド エンジニア NFCLab, JAG, JAG 城支部 @androhi 12年8月25日土曜日
  • 4. 概要 NDEFメッセージ   QRコード Library : ZXing 2.0 12年8月25日土曜日
  • 5. 想定する利用シーン A「このポスターにタッチすると、スマートフォンで何か見られるらしいぞ。」 B「どれどれ…。?。何も起きないけど。」 C「あっ!おサイフケータイには、順次対応予定ですって書いてある!」 D「私のも、おサイフケータイだからダメだわ。」 あなた「まかせろっ!(」・ω・)」うー!(/・ω・)/にゃー!」 ABCD「キャー!ステキー!」 12年8月25日土曜日
  • 7. NDEFメッセージ読み込み private String getUrl(NdefMessage msg) { // NDEFレコードからTNFを取り出す NdefRecord[] records = msg.getRecords(); short tnf = records[0].getTnf(); if (tnf == NdefRecord.TNF_WELL_KNOWN) { return parseWellKnown(records[0]); } else if (tnf == NdefRecord.TNF_ABSOLUTE_URI) { return parseAbsolute(records[0]); } throw new IllegalArgumentException("Unknown TNF " + tnf); } 12年8月25日土曜日
  • 8. TNF = Type Name Format TNF_ABSOLUTE_URI URIをベースとしたタイプフィールド TNF_WELL_KNOWN 設定したRTDに応じて、振る舞いが変わる 12年8月25日土曜日
  • 9. NDEFレコード読み込み private String parseAbsolute(NdefRecord record) { byte[] payload = record.getPayload(); return new String(payload, Charset.forName("UTF-8")); } private String parseWellKnown(NdefRecord record) { // RTD Uriかチェック if (Arrays.equals(record.getType(), NdefRecord.RTD_URI)) { byte[] payload = record.getPayload(); String prefix = prefixMap.get(payload[0]); byte[] uriData = Arrays.copyOfRange(payload, 1, payload.length); String uri = new String(uriData, Charset.forName("UTF-8")); return prefix.concat(uri); } throw new IllegalArgumentException("Not Support RTD"); } 12年8月25日土曜日
  • 10. RTD = Record Type Definition RTD_URI URIをベースとしたPayload 12年8月25日土曜日
  • 11. Recordsマッピング Name Offset Size Value Description URI The URI identifier Identifier 0 1 byte identifier code, as specified in code code Table 3. The rest of the URI, URI or the entire URI (if 1 N UTF-8 string field identifier code is 0x00). 引用:NFC URI RTD Technical Specification http://www.nfc-forum.org/specs/spec_list/#rtds 12年8月25日土曜日
  • 12. URI identifier code Decimal Hex Protocol Decimal Hex Protocol 0 0x00 N/A 18 0x12 rtsp:// 1 0x01 http://www. 19 0x13 urn: 2 0x02 https://www. 20 0x14 pop: 3 0x03 http:// 21 0x15 sip: 4 0x04 https:// 22 0x16 sips: 5 0x05 tel: 23 0x17 tftp: 6 0x06 mailto: 24 0x18 btspp:// 7 0x07 ftp://anonymous:anonymous@ 25 0x19 btl2cap:// 8 0x08 ftp://ftp. 26 0x1A btgoep:// 9 0x09 ftps:// 27 0x1B tcpobex:// 10 0x0A sftp:// 28 0x1C irdaobex:// 11 0x0B smb:// 29 0x1D file:// 12 0x0C nfs:// 30 0x1E urn:epc:id: 13 0x0D ftp:// 31 0x1F urn:epc:tag: 14 0x0E dav:// 32 0x20 urn:epc:pat: 15 0x0F news: 33 0x21 urn:epc:raw: 16 0x10 telnet:// 34 0x22 urn:epc: 17 0x11 imap: 35 0x23 urn:nfc: 36...255 0x24...0xFF RFU 12年8月25日土曜日
  • 13. private String getUrl(NdefMessage msg) { // NDEFレコードからTNFを取り出す NdefRecord[] records = msg.getRecords(); short tnf = records[0].getTnf(); if (tnf == NdefRecord.TNF_WELL_KNOWN) { // URLを取り出す return parseWellKnown(records[0]); } else if (tnf == NdefRecord.TNF_ABSOLUTE_URI) { // URLを取り出す return parseAbsolute(records[0]); } throw new IllegalArgumentException("Unknown TNF " + tnf); } 12年8月25日土曜日
  • 14. QRコード生成は、以下を参考にしました。 ブログ:明日の ZXingを使ってQRコードを表示する http://d.hatena.ne.jp/tomorrowkey/ 20091114/1258206013 12年8月25日土曜日
  • 15. public Bitmap createQRCodeByZxing(String contents, int size) throws WriterException { QRCodeWriter qrWriter = new QRCodeWriter(); // 異なる型の値を入れるためgenericは使えない @SuppressWarnings("rawtypes") Hashtable encodeHint = new Hashtable(); encodeHint.put(EncodeHintType.CHARACTER_SET, "shiftjis"); // エラー修復レベルを指定 encodeHint.put(EncodeHintType.ERROR_CORRECTION, ErrorCorrectionLevel.L); BitMatrix qrCodeData = qrWriter.encode(contents, BarcodeFormat.QR_CODE, size, size, encodeHint); // QRコードのbitmap画像を生成 Bitmap bitmap = Bitmap.createBitmap(size, size, Bitmap.Config.ARGB_8888); bitmap.eraseColor(Color.argb(255, 255, 255, 255)); for(int x = 0; x < qrCodeData.getWidth(); x++) { for(int y = 0; y < qrCodeData.getHeight(); y++) { if(qrCodeData.get(x, y)) { // trueはBlack bitmap.setPixel(x, y, Color.BLACK); } else { // falseはWhite bitmap.setPixel(x, y, Color.WHITE); } } } return bitmap; } 12年8月25日土曜日
  • 16. QRコード生成のイメージ T F T T F T T F F F F F T T T F T F T T F T F T T F T T F T T F T F F F F F T F F F T T T F T T F F F T T F F F T T F T F F F T T F F T T F T F F T T T F F T F T 12年8月25日土曜日
  • 17. まとめ1 NDEFメッセージ 仕様を理解する TNF = Type Name Format RTD = Record Type Definition 12年8月25日土曜日
  • 18. まとめ2 QRコード ZXing超便利(遅っ) 12年8月25日土曜日
  • 19. ご清聴 ありがとうございました 12年8月25日土曜日