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