iPhone4SからAndroid BEAM !?

Android Advent Calendar

本エントリは、Android Advent Calendar 2011の裏エントリにもなっています。
普段、ブログ書かないのですが、そうそうたるAndroiderが名を連ね注目度も高いだろうということで、こっそり参加させてもらいました。

iPhoneからAndroid BEAM !?

Galaxy Nexusが発売されて、入手された皆さんはきゃっきゃうふふとAndroid BEAMしてますよね?きっと。

残念ながら僕は持ってません。。。
後輩はGalaxy Nexusを入手したようです。ええのう。

iPhone4Sにしたばかりの僕には、Galaxy Nexusに手を出せませんが、
僕のiPhone4Sから後輩のGalaxy NexusAndroid BEAMなら出せる気がします。

というわけで、この動画を見て下さい!

iPhone4Sで表示しているGoogle MapをタッチしてGalaxy Nexusへ!
見事な あんどろいどびーむ いや、あいふぉんびーむ か。

iPhone4SNFCなんか載ってないですよね?
どーなってんの??
ふふふふふ。

あいふぉんびーむ タネあかし


!?
そーです。RL-700Sで作成したNFCラベルをiPhone4Sのケースに貼り付けていたんですねー。

あ、NFCラベルプリンタについて知らない方はこちらの資料をご覧下さい。ちょっと古いですが、2011/5/23に名古屋ギークバーで行ったLT資料。

まぁ正確に言ったらNFCタグからビームが出ているわけではなく、Galaxy NexusNFCタグの内容を読み取っているだけなのでコレをAndroid BEAMと呼ぶのは間違ってると思いますが、ユーザから見える挙動は一緒でしょ?
iPhoneAndroid BEAMしたみたいに見えるよね!

ビーム用ラベルの作り方

初めに便利なアプリ2つ紹介します。
NFC TagInfo

NFCタグの内容を確認できるアプリですね。機能が充実しています。

NFC TagWriter

NFCタグの読み書きができるアプリですね。テキストやURLなどのデータをNDEF形式でNFCタグに書き込めるのでNFCタグ作成に大いに役立ちます。

まずは先ほどの あいふぉんびーむ したNFCタグをNFC TagInfoアプリで内容確認してみましょう。

アプリ起動するとタグを読めと出ます。

タグハケーン!

NDEF messageの内容を確認してみると...
中身は?そうGoogle mapのURLです。

ふむ。じゃあ本物のAndroid BEAMはどんなビーム(情報)を出しているのでしょう?
後輩君のGalaxy NexusAndroid BEAMするのを、開発用のNexusSでNFC TagInfo起動して待ち構えてみましょう!

動画と同じように今度はGalaxy NexusGoogle mapで地図を表示した状態で、NexusSと背面同士タッチさせると、Galaxy Nexus側でビームするか?と出るのでビームしてみました。

結果は?
そう。NDEFでGoogle mapのURLを渡しているわけですよ。

YouTubeの動画の場合

標準ブラウザでURL渡した場合

ね。基本的にNDEFでデータを渡している。

ちなみに自作アプリは?

マーケットでアプリ検索のURLのNDEFとEXTERNAL_TYPEでパッケージ名のNDEFの2つ渡してる。
特にアプリ側でAndroid BEAMでこういうデータ渡したいって作りこみをしなければ、起動のためのアプリパッケージ名とインストールされていない場合にインストールを促すURLを送信するって挙動ですかね。(想像)


さぁそうとわかれば、このNDEFのNFCタグを作成すればいいわけですよ。
そこで活躍するのがTagWriterのアプリです。

今度はGalaxy NexusからGoogle MapのAndroid BEAMするのをNexusSではTagWriterを立ち上げ、

Viewの状態で待ち構えてみましょう。

来ました。隊長!NDEF捕捉しました。

うむ。次はCreateしてみろ。

おぉHistoryに先ほど捕捉したNDEF URLの内容があります。

うむ。そのまま書き込んでおしまい!

イエッサー!

こうしてビーム用NDEFタグが出来上がります。

皆さんもNFCタグ用意して遊んでみて下さい。
え、手元にNFCタグが無い?
そんな方はこんなとこから調達してみてはいかがでしょう?20枚1,050円から買えますよ。

あ、でもICSにはこのバグがありますからね。
NDEF未フォーマットな生タグ買ってもNDEF書き込めません。。
これは早急に修正して欲しいですね。

あと、注意点としてはビームする内容は固定ですし、iPhoneに貼るならビームする内容の画面表示を自分であわせておくことがポイントです。にっかり。

XXビーム その他の例

RL-700Sで作成するNFCラベルはステッカーになってますからね。
別にスマホでなくても貼り付けたものからビームうてちゃうわけですよ!

例えば、
うちの娘の作ったあんどろいど(かまぼこの板製)

びーむ。

例えば、
うちの息子そのもの

おぉ、まさか...

あんどろいどび〜む!

あはは。超楽しい。

NFCアプリ楽しいよ

何もNFCNFC搭載のスマホを2台用意しないと遊べないわけじゃないんです。
NFCタグとアプリの組合せでも楽しいこといっぱいできるわけですよ。

参考になればということで、3つほどNFCアプリをAndroidマーケットにアップしていますので、
それぞれ、どんなアプリでどんなNFCタグになっているか解説しておきますね。

twitterラベル診断


普通に読めばその人のtwitterページにとぶラベルを2枚読むことで、その2人がお互いフォローしてるか、twitter上での会話、ふぁぼり具合などから親密度を診断するアプリです。

実際のタグにはどんな情報が書き込まれているのでしょう?
本日表エントリ@kakenaviさんのタグを作成してみたので、これで確認してみましょう!

はい。普通にtwitterのその人のURLですね。

ということでこの http://twitter.com/kakenavi のkakenavi部分をそれぞれのtwitter idに変更したURL情報を書き込んだタグ用意すれば、このアプリ遊べますよ!

せっかくなんで親密度診断してみましょ。

片思いでした。。

共通でフォローするユーザ137人はAndroidクラスタの方々いっぱい。

@kakenaviさんのtwitterブログは超面白いですからね。
来年はお会いして、このラベルどっかでお渡しできるといいなぁ。

touch!ATND


WebアプリCheck!ATNDと連携してATNDのイベント出席確認するアプリです。
ATNDユーザにその人のATNDタグを用意してあげる。
イベントの際にそれを持ってきてもらい読み取ることで出席確認をとるわけです。

この辺りの人に絡むタグはNFCスマホ標準搭載になったら、それこそAndroid BEAMみたいにP2Pで確認する実装にすべきでしょうが、こんな使い方もあるよっていう参考に。

実際のタグにはどんな情報が書き込まれているのでしょう?確認してみましょう。

こちらはこのアプリ専用のデータとしています。
NDEF MIME_MEDIAのタグでtypeがapplication/vnd.touchrl.atnd、PayloadはtextでATND id,nicknameって感じにしています。

このタグで起動するアプリを作成するにはManifestファイルのintent-filterに

            <intent-filter>
                <action android:name="android.nfc.action.NDEF_DISCOVERED" />
                <category android:name="android.intent.category.DEFAULT" />
                <data android:mimeType="application/vnd.touchrl.atnd" />
            </intent-filter>

なんて書けばいいわけです。

このタグはTagWriterからは作成できませんが、作るべきタグの仕様が分かればタグ作成アプリを作るのはそんなに難しくありませんので挑戦してみてはいかがでしょうか?

あ、このtouch!ATND x Check!ATNDのアプリはMashup Awardsで何らかの賞を貰えるらしく表彰式に呼ばれています。(交通費自腹...)あざーす。
当日参加される方には懇親会時に各種タグお作りしますし、デモ用ATND立てましたので、参加登録しておいて頂けると実際に挙動を確認できますので、是非参加登録してみて下さい。

ロケタッチRL


位置情報チェックイン系サービスは今後、GPS情報だけでなく、NFCラベルにタッチしてチェックインという形式も一般化するだろう。ロケタッチで作ってみたよ!

ロケタッチRLラベルにはどんな情報が書き込まれているのでしょう?
Bar AndroidロケタッチRLラベルで確認してみましょう。

こちらもロケタッチRL用のラベルとわかるように、NDEF MIME typeをapplication/vnd.touchrl.loctouchとしたNDEFを書き込んでいますが、Payload部分には何もデータ入れていません。

こちらに関してはタグの固有ID(下図のUID)とロケタッチのスポット情報を紐付けて、ロケタッチRLサーバで管理しています。
まぁタグにロケタッチのスポットIDを格納しても良いのですが、実際にその場所に行って、そこに貼り付けてあるNFCタグの固有IDがわからないとロケタッチRLできない。エアタッチRLできない。という効果が少しはあるかなと思って、そういう実装にしています。

今年は運よく2回東京出張とあわせてBar Androidへ行くことができました。
来年もこっそりこのタグ貼り付けにお邪魔できればいいなーなんて思ってます。

最後に

さぁ、こんな楽しいことできるNFC搭載AndroidスマホNFCラベルプリンタRL-700S。

既に販売完了してますが、評価機貸出活動中です。コチラから申込み可能ですので、
あなたも何かNFCアプリ作ってみませんか?

それではよいクリスマスをー!

Special thanks to @wof_moriguchi ← Android BEAMを放つガキんちょネタ考案者