Felica Night 20090129(sony Felica) No2
- 1. X
SDK for FeliCa & Adobe® AIR ® /Adobe ® Flash ®
によるアプリケーション開発
2010/01/29
ソニー株式会社
FeliCaデバイス事業部
竹村 航
© 2009 Sony Corporation
- 3. どのように実現しているのか
Flash/AIRアプリケーションからUSB接続されたリーダ/ライタへは直接制御でき
ない
FeliCa Proxy Service という常駐プロセスを経由することで実現
あらかじめクライアントPCにインストールされている必要がある
FeliCa Port Software (ドライバ、ツールなどの基本的なソフトウェア一式)に含まれてい
る
localhost内での USB
Socket通信
Flash/AIR FeliCa Proxy
リーダ/ライター
アプリケーション Service
無線
カード
© 2009 Sony Corporation
- 4. Flash/AIRとFeliCa Proxy Serviceとの通信
Flash/AIRアプリケーションから送信したリクエストはFeliCa Proxy Serivceに処理
される。
処理結果のレスポンスは非同期にイベント通知される。
① 非同期イベントを待ち受けるリスナ
をaddEventListener()で登録する。
Flash/AIR アプリケーション
② リクエストを送信する。
⑤ あらかじめ指定したリスナーが呼
び出されることで、結果を取得できる。
④ レスポンスを送信
③ リーダー/ライターやカードへコマ
ンドを送信。コマンドの処理結果を
受ける。
FeliCa Proxy Service
© 2009 Sony Corporation
- 5. アプリケーション開発の流れ
SDK for FeliCa & Adobe® AIR® / Adobe® Flash®の基本的な手順の理解する為に
簡単なFlashアプリケーションとして、ボタンをクリックすると「FeliCa機能搭載の携帯電話の
ブラウザを起動させる」というFlashアプリケーションを作成します。
1. 初期化
2. FeliCaProxyServiceと認証を行なう
3. 「FeliCa機能搭載の携帯電話のブラウザを起動させる」APIの実行する
4. FeliCaProxyServiceとの認証を切断する
© 2009 Sony Corporation
- 6. 初期化
SDKで提供されているクラスをインポートします。
import com.sony.felica.*;
import com.sony.jp.felica.event.*;
FeliCaControlオブジェクトを作成します。
private var fc:FeliCaControl = new FeliCaControl();
© 2009 Sony Corporation
- 7. FeliCaProxyServiceとの認証
FeliCaAccessクラスのopenメソッドでソケット接続の要求を行います。
private function init():void
{
fc.open(10250);
} 10250はポート番号ですが、必ず
この値を指定してください。
© 2009 Sony Corporation
- 8. FeliCaProxyServiceとの認証
openメソッド呼び出しの前に、open成功時に呼び出されるリスナを登録します。
private function init():void
{
fc.addEventListener(OpenStatusEvent.OPEN_COMPLETE, onOpenComplete);
fc.open(10250);
openが成功したときに通知される非同期イベント。
} 失敗したときに通知されるイベント(OPEN_FAILURE)もある。
private function onOpenComplete(evt:OpenStatusEvent):void
{
mx.controls.Alert.show(“open成功”);
}
© 2009 Sony Corporation
- 9. 携帯電話のブラウザ起動
MobileFeliCaRequestを初期化し、FeliCa Proxy Service に送信します。
private function sendURL():void
{
携帯電話内部の機能の起動を要
求するためのリクエスト
var request:MobileFeliCaRequest = new MobileFeliCaRequest();
request.type = MobileFeliCaRequest.WEBTO;
「ブラウザの起動」の他には、「iア
request.url = “http://www.google.co.jp/m”; プリの起動」、「共通領域の読み
込み」がある
fc.access(request);
}
リクエストをFeliCa Proxy Service
に送信
© 2009 Sony Corporation
- 10. 携帯電話のブラウザ起動
open()と同様、access()呼び出しの前にリスナを登録します。
private function sendURL():void
この他にエラー用のイベントが2種類ある
{
fc.addEventListener(FeliCaStatusEvent.FELICA_ACCESS_COMPLETE,
onAccessComplete);
var request:MobileFeliCaRequest = new MobileFeliCaRequest();
request.type = MobileFeliCaRequest.WEBTO;
request.url = “http://www.google.co.jp/m”;
fc.access(request);
}
private function onAccessComplete(evt:FeliCaStatusEvent):void
{
mx.control.Alert.show(“完了”);
}
© 2009 Sony Corporation
- 11. FeliCaProxyServiceの切断
最後に、FeliCa Control クラスのclose()メソッドを呼び出します。
private function onAccessComplete(evt:FeliCaStatusEvent):void
{
mx.control.Alert.show(“完了”);
fc.close();
}
© 2009 Sony Corporation
- 13. FeliCa検知 (Polling)
リーダー/ライターにかざされたカードを検知することができ
る
検知時に取得できるデータ
IDm
PMm
IDmは概ねユニークなので、セキュリティを必要としないのな
らば利用可能
© 2009 Sony Corporation
- 15. NFC, Type3 Tag
NFC
NFC Forumが定める近距離通信の国際規格です。FeliCaはNFCに対応していま
す。
Type3 Tag
NFCが定めるタグの一つ。
タグとは?
カードの一種
少メモリ、安価
様々な形状
© 2009 Sony Corporation
- 16. Type3 Tag への書き込み、読み込み
基本的には、MobileFeliCaRequest()の例と同様です
private function writeTag():void
{
fc.addEventListener(FeliCaStatusEvent.FELICA_ACCESS_COMPLETE,
onWriteComplete);
var request:NFCType3TagRequest = new NFCType3TagRequest();
request.type = NFCType3TagRequest.WRITE;
request.data = “0123456789” // 16進数で表記
fc.access(request);
}
private function onWriteComplete(evt:FeliCaStatusEvent):void
{
mx.control.Alert.show(“書き込み完了”);
}
© 2009 Sony Corporation
- 17. Type3 Tag への書き込み、読み込み
基本的には、MobileFeliCaRequest()の例と同様です
private function readTag():void
{
fc.addEventListener(FeliCaStatusEvent.FELICA_ACCESS_COMPLETE,
onWriteComplete);
var request:NFCType3TagRequest = new NFCType3TagRequest();
request.type = NFCType3TagRequest.READ;
fc.access(request);
}
private function onReadComplete(evt:FeliCaStatusEvent):void
{
var response:NFCType3TagResponse = evt.object as NFCType3TagResponse;
mx.control.Alert.show(response.data);
}
© 2009 Sony Corporation
- 18. Type3 Tag に書き込めるデータフォーマット
Type3 Tag 自体は書き込むデータフォーマットを定義しない
単なる208バイトのスクラッチパッドとしても扱える
NFC では複数の Record Type Definition (RTD) が定義されている
Smart Poster – URL情報などを記録し、かざした対象機器上でウェブ
サイトへ誘導
Smart Poster 形式を使えばFeliCa Launcherと連携してウェブサイトへの
誘導ができる
© 2009 Sony Corporation
- 21. FeliCa Plug とは
機器に組み込み、リーダー/ライターとデータ転送をすることが可能
リーダー/ライターからはFeliCaカードと同様にアクセスすることが可能
FeliCa Plug 内蔵歩数計
アコーズ開発
過去15日分のデータをFeliCaで送信
© 2009 Sony Corporation
- 23. このように処理しています
wataru-takemura.com
① 写真を撮る
② サーバーに送信
③ URLを返す
④ WebTo機能でURL ⑤ URLへアクセス
を送信
© 2009 Sony Corporation
- 25. 電子マネーの対応状況
Edyの履歴表示機能が利用可能
Edy番号
残高
使用金額、時間
マッシュアップできそうなメタデータは今のところ利用できな
い・・・
利用した店舗情報
購入した商品名
第一回FeliCaナイトより
「利用した駅、店舗をGoogle Map上に表示する
アプリ」を作りたい
「Edyの購入履歴とHotpepper APIをマッシュ
アップしておすすめ店舗の検索するサービス」
© 2009 Sony Corporation
- 26. FeliCaの使い方提案
IDとして
セキュリティを必要としないならばIDm
携帯電話とのインターフェース
送信できるデータ量は少ないが、サーバー連携でできることが増えそ
う
Tag
不特定多数に配布してサイト誘導
FeliCa Plug組み込み機器とのインターフェース
健康器具の履歴をオンライン管理
玩具を使ったソーシャルアプリ
© 2009 Sony Corporation
- 27. 開発上の注意
エラー処理について
エラー時に発生するイベントに対するリスナを登録し、エラー時の処理を適切に
行ってください。エラー要因としては以下のようなものがあります。
FeliCa Proxy Service が起動していない
リーダー/ライタが接続されていない、正しく認識されていない
必要なソフトウェアがインストールされていない (FeliCa Port Software)
カードがかざされていない
通信エラー
連続してリクエストを送信しない
複数のリクエストを送信する場合には、
リクエストはキューされません
非同期イベントの到着を待って、次のリクエストを送信してください
© 2009 Sony Corporation