モバイル FeliCa クライアント for Android SDK で遊ぼう
Upcoming SlideShare
Loading in...5
×

Like this? Share it with your network

Share

モバイル FeliCa クライアント for Android SDK で遊ぼう

  • 13,480 views
Uploaded on

関西NFCLab勉強会 #2

関西NFCLab勉強会 #2

  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
No Downloads

Views

Total Views
13,480
On Slideshare
13,334
From Embeds
146
Number of Embeds
2

Actions

Shares
Downloads
20
Comments
0
Likes
7

Embeds 146

http://wiki.onakasuita.org 141
https://twitter.com 5

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

  • 1. モバイル FeliCa クライアント for Android SDK で 遊ぼう! @esperia09
  • 2. 自己紹介● 名前: えすぺりあ – Twitter: @esperia09● 所属: Re: Kayo-System● 趣味: Web系(JavaScript), 音楽, イラスト等● 最近はAndroidと音楽ばっかやってます
  • 3. Agenda● FeliCaやNFCについて● モバイルFeliCaクライアント for Androidで出 来ること● Push機能の紹介● Push機能を使ったアプリの作り方
  • 4. おサイフケータイ使ってますか? IS03 SH-01E
  • 5. おサイフケータイでできること● お金のチャージ● お金の支払い● チャージしたお金の確認
  • 6. おサイフケータイでできること● お金のチャージ● お金の支払い● チャージしたお金の確認● 他の端末へ情報を送信● カードの読取/書込
  • 7. そもそもFeliCaとは?
  • 8. FeliCaとは● ソニーが開発した近距離無線通信技術の名前 – ソニーの登録商標にもなっている● NFC (近距離無線通信) の規格の一部 – 具体的には ISO/IEC 18092● 高セキュリティ、高速通信
  • 9. NFC 3つのモード● カードエミュレーションモード – 端末がカードのフリをするモード カードのフリ…!
  • 10. NFC 3つのモード● P2Pモード – 端末から端末へ情報を送信 – Android Beam等 URL, 電話番号, 連絡先, etc…
  • 11. NFC 3つのモード● リーダー/ライターモード – 駅にある電子マネーシステム(ICOCA等) や、PaSoRiなど
  • 12. おサイフケータイでできること● お金のチャージ カードエミュレーション モード● お金の支払い● チャージしたお金の確認● 他の端末へ情報を送信 P2Pモード● カードの読取/書込 リーダー/ライターモード
  • 13. モバイル FeliCa クライアント(MFC) for Android SDK で 出来ることは?
  • 14. http://www.slideshare.net/satorii/nfchack-sony
  • 15. MFCで出来ること● カードエミュレーションモード – ※おサイフケータイは通常このモードになっています● P2Pモード – 他の端末と通信するモード Free!!● リーダ/ライタモード 許可証が – カードを読み書きするモード あれば可能 – 金銭のやりとりを行う 契約が必要 (リモート発行 サービス)
  • 16. 許可証?
  • 17. http://www.slideshare.net/satorii/nfchack-sony
  • 18. _人人人人人人人人人_> ソニーさんに相談 < ̄^Y^Y^Y^Y^Y^Y^Y^Y^ ̄
  • 19. _人人人人人人人人人人_> ちょっとめんどくさい < ̄^Y^Y^Y^Y^Y^Y^Y^Y^Y^ ̄
  • 20. じゃぁフリーの部分使おうじゃないの
  • 21. MFCで出来ること● カードエミュレーションモード – ※おサイフケータイは通常このモードになっています● P2Pモード フリー – 他の端末と通信するモード● リーダ/ライタモード – カードを読み書きするモード – 金銭のやりとりを行う
  • 22. MFC (フリー) でできること● Push送信機能 – 小さなデータを送信できる ● URLの送信 ● メーラの起動と件名、本文等の自動設定 ● インテント連携(Android同士のみ)● 対応端末 – おサイフケータイ対応の… ● Android端末 ● ガラケー
  • 23. MFC (フリー) でできること● FALP機能 – 比較的大きなデータの送信が出来る ● Android内のデータの送受信 ● インテント連携● 対応端末 – おサイフケータイ対応の… ● Android端末 (Android 2.3以降) ● ※送る側も受ける側も2.3以降必須
  • 24. MFC (フリー) でできること● 搬送波検知 – ケータイがリーダー/ライターにかざされたか どうかを検知する
  • 25. デモアプリ作った
  • 26. デモアプリ作った …んですが!
  • 27. FALP機能試せなかったF904i IS03 Medias N-06D(FOMA) (Android 2.2) (Android 2.3)
  • 28. 申し訳ない!! (´;ω;`) ブワッ
  • 29. ただ公式のデモアプリはある ● FALP画像送信 ● FALPルート検索 ● Android 2.3以上のおサイフ ケータイ端末が2台以上あ る方はこちらで試せます
  • 30. 諦めてPush機能を実装した アプリの紹介をします
  • 31. Push - URL ● URLを入力 ● 下の方にあるボタン を押すとURLを送信
  • 32. Push - 送信準備 FeliCaマークを合わせる
  • 33. Push - 送信! プッシュポン!
  • 34. Push - 送信! プッシュポン!
  • 35. Push - IS03の場合
  • 36. Push - F904iの場合
  • 37. (ドヤァ
  • 38. Push - メール ● To, Cc, タイトル, 本 文が入力できる ● ボタンを押して送信
  • 39. Push - IS03の場合
  • 40. Push - IS03の場合
  • 41. Push - F904iの場合 何も起こらなかった… (´・ω・`)
  • 42. Push - インテント ● 試しにマップアプリ を起動するように 作ってみた ● 緯度, 経度を入力 ● 送信
  • 43. Push - IS03の場合
  • 44. アプリの作り方
  • 45. アプリの作り方● 用意するもの● 下準備● Push送信のフロー● 送信のためのコード
  • 46. 用意するもの● Android開発環境● MFC for Android SDK (android_adhoc_libs_V2_20.zip) – ライブラリ本体: MFCUtility_2.0.0.jar – サンプルコード: sample(アドホック).zip
  • 47. MFC SDKのダウンロード ←ダウンロード ここからandroid_adhoc_libs_V2_20.zipがダウンロードできます
  • 48. Push送信フロー 1.MFCサービスへ接続2.FeliCaチップの利用開始3.FeliCaチップ オープン 5.FeliCaチップ クローズ 6.FeliCaチップ 利用終了 4.Push送信 7.MFCサービスを切断
  • 49. 下準備● FeliCaを利用するためのパーミッションと サービスの定義を追加 <uses-permission android:name="com.felicanetworks.mfc.permission.MFC_ACCESS" /> <uses-sdk android:minSdkVersion="7" android:targetSdkVersion="10" /> <application android:allowBackup="true" android:icon="@drawable/ic_launcher" android:label="@string/app_name" android:theme="@style/AppTheme" > <service android:name="com.felicanetworks.mfc.Felica" android:exported="false"></service> ... </application>
  • 50. 1-1. MFCサービスへ接続● Context#bindServiceを利用してMFCのサービ スに接続public class MfcAccesser implements ServiceConnection { public void connect() { if (mConnected) { // 接続済み return; リスナーをセット } Intent intent = new Intent(); intent.setClass(mContext, Felica.class); if (!mContext.bindService(intent, this, Context.BIND_AUTO_CREATE)) { // MFCサービスに接続できなかった時のエラー } } // 省略}
  • 51. 1-2. MFCサービスへ接続● #bindServiceにてセットしたListenerのコール バック関数内にて、Felicaインスタンスを取得 @Override public void onServiceConnected(ComponentName name, IBinder service) { // Felicaとの接続が確立されたので、Felicaインスタンスを取得する mFelica = ((Felica.LocalBinder) service).getInstance(); } @Override public void onServiceDisconnected(ComponentName name) { // Felicaの設定解除 mFelica = null; }
  • 52. 2-1. FeliCaチップの利用開始● Felica#activateFelica()を呼び出す● 第一引数に許可証を指定する。持っていない場合は null● 第二引数にFelicaEventListenerをセットする try { if (mFelica != null) { mFelica.activateFelica(null, this); } } catch (FelicaException e) { // TODO エラーを通知する } catch (Exception e) { // TODO 復帰不可能なエラーを通知する }
  • 53. 2-2. FeliCaチップの利用開始● チップの利用開始が成功する と、FelicaEventListener#finished()が呼ばれる● 失敗した場合、FelicaEventListener#errorOccurred() が呼ばれる● この時点で搬送波の取得が可能になる @Override public void errorOccurred(int id, String msg, AppInfo otherAppInfo) { // TODO エラーを通知 } @Override public void finished() { // TODO チップの利用開始が完了。チップのオープンへ }
  • 54. 3. FeliCaチップ オープン● Felica#open() を利用してFeliCaチップをオー プンする。● 成功するとPushが出来るようになる try { mFelica.open(); } catch (FelicaException e) { // TODO エラー } catch (Exception e) { // TODO 復帰不可能なエラー。 }
  • 55. 4. Pushに共通する条件● Pushを行うには、PushSegmentを継承したインスタン スを生成し、Felica#pushに渡す● 引数に指定できるデータのサイズが予め決まっている。 それを超えるとIllegalArgumentExceptionが発生● 画面をブロックするので、スレッド上で実行することが 望ましい PushSegment pushSegment = // TODO PushSegementの生成 mFelica.push(pushSegment);
  • 56. 4-1. URLのPush● PushStartBrowserSegmentを利用● URL, ブラウザ起動パラメータ合わせて184バイトまで try { PushStartBrowserSegment pushSegment = new PushStartBrowserSegment(url, null); mFelica.push(pushSegment); } catch (IllegalArgumentException e) { // TODO 引数を間違えていた時 } catch (FelicaException e) { // TODO エラー } catch (Exception e) { // TODO 復帰不可能なエラー }
  • 57. 4-2. メールのPush● PushStartMailerSegmentを利用● To, Cc, タイトル, 本文を指定● 全引数178バイトまで try { PushStartMailerSegment pushStartMailerSegment = new PushStartMailerSegment(to, cc, subject, body, null); mFelica.push(pushSegment); } catch (IllegalArgumentException e) { // TODO 引数を間違えていた時 } catch (FelicaException e) { // TODO エラー } catch (Exception e) { // TODO 復帰不可能なエラー }
  • 58. 4-3. インテントのPush● PushIntentSegmentを利用● 対象のIntent#toUri()を使ってUriに変換した際、その長さ が176バイト以下だと送信できる try { Intent intent = new Intent(); intent.setAction(Intent.ACTION_VIEW); intent.setData(Uri.parse("geo:" + mEditLatitude.getText().toString() + "," + mEditLongitude.getText().toString() + "")); PushIntentSegment seg = new PushIntentSegment(intent); mFelica.push(pushSegment); } catch (IllegalArgumentException e) { // TODO 引数を間違えていた時 } catch (FelicaException e) { // TODO エラー } catch (Exception e) { // TODO 復帰不可能なエラー }
  • 59. 5. FeliCaチップ クローズ● Felica#close() を利用してFeliCaチップをク ローズする。● 成功するとPushが出来なくなる try { mFelica.close(); } catch (FelicaException e) { // TODO エラー } catch (Exception e) { // TODO 復帰不可能なエラー。 }
  • 60. 6. FeliCaチップ 利用終了● Felica#inactivateFelica() を利用してFeliCa チップの利用を終了する。● 成功するとチップの利用を終了し、一切Felica の命令が発行できない状態に戻る try { mFelica.inactivateFelica(); } catch (FelicaException e) { // TODO エラーを通知する } catch (Exception e) { // TODO 復帰不可能なエラーを通知する }
  • 61. 7. MFCサービスを切断● Context#unbindService()を利用する● unbindServiceの引数のServiceConnectionリ スナーは、bindService時のものと同じで良い mContext.unbindService(this);
  • 62. ここまでの内容をサンプルとして まとめてうpりましたhttps://github.com/esperia/TestMfc
  • 63. まとめ● MFCは、フリーの範囲だとPush機能とFALP 機能、搬送波検知機能が使える● 他の機能は申請や契約が必要● ガラケーにもPushできる● 誰か2.3おサイフケータイ端末ください…
  • 64. 告知
  • 65. NFC勉強会 in 愛媛● 日時: 2013年 1月19日 (予定)● @touchRLさん来訪● 僕もなんか喋る予定です● 環境省の事業でなにやらNFCを貼り付けにく るので、それとのコラボが発生するかも?● Facebook: NFC-EHIME – http://www.facebook.com/groups/nfcehime/
  • 66. ご清聴ありがとうございました