「AIRネイティブ拡張」を使って、 AndroidでNFCを読み込んでみた

65
AIRネイティブ拡張」を使って、 ANDROIDNFCを読み込んでみた @mos1210 121220日木曜日

description

「AIRネイティブ拡張」を使って、 AndroidでNFCを読み込んでみた

Transcript of 「AIRネイティブ拡張」を使って、 AndroidでNFCを読み込んでみた

Page 1: 「AIRネイティブ拡張」を使って、 AndroidでNFCを読み込んでみた

「AIRネイティブ拡張」を使って、

ANDROIDでNFCを読み込んでみた

@mos1210

12年12月20日木曜日

Page 2: 「AIRネイティブ拡張」を使って、 AndroidでNFCを読み込んでみた

自己紹介

TW: mos1210 (本名:山本 尚紀)

WebとかAndroidアプリの開発してます。

Re:Kayo-System

12年12月20日木曜日

Page 3: 「AIRネイティブ拡張」を使って、 AndroidでNFCを読み込んでみた

• Flashで作ったAndroidアプリで、NFCを使えませんか?

いきさつ

12年12月20日木曜日

Page 4: 「AIRネイティブ拡張」を使って、 AndroidでNFCを読み込んでみた

どんなアプリか

• NFCを読み込んだ時、画面にキャラクターが追加される

12年12月20日木曜日

Page 5: 「AIRネイティブ拡張」を使って、 AndroidでNFCを読み込んでみた

そもそも「Flashで作ったAndroidアプリ」とは?

FlashのAIR for Androidで出力したアプリ※Web版のFlashソースコードを移植したとのこと

12年12月20日木曜日

Page 6: 「AIRネイティブ拡張」を使って、 AndroidでNFCを読み込んでみた

FLASHでNFCを扱うコードは書けないか?

ググってみたが、不可と分かる

12年12月20日木曜日

Page 7: 「AIRネイティブ拡張」を使って、 AndroidでNFCを読み込んでみた

FLASHで「NFC」は使えるのか?

案その1

• Androidのブラウザ(WebView)で、Flash再生

• NFC読み込み時に、JavaScript経由でFlashを呼び出す

↓実現出来たが、速度が遅いと言われた

12年12月20日木曜日

Page 8: 「AIRネイティブ拡張」を使って、 AndroidでNFCを読み込んでみた

ADOBE AIRのネイティブ拡張というのがあるらしい

•プラットフォーム固有機能にアクセスする仕組み

電話帳、各種センサー、アプリ内課金、Bluetooth

• Androidデバイス Android2.2以降

FLASHで「NFC」は使えるのか?

12年12月20日木曜日

Page 9: 「AIRネイティブ拡張」を使って、 AndroidでNFCを読み込んでみた

• Adobe AIRのネイティブ拡張(AIR Native Extension)

FLASHで「NFC」は使えるのか?

案その2

↓出来るかも?

↓出来たけど、今回の案件では速くなかった...

12年12月20日木曜日

Page 10: 「AIRネイティブ拡張」を使って、 AndroidでNFCを読み込んでみた

FLASH CS6でネイティブ拡張を「使う」

12年12月20日木曜日

Page 11: 「AIRネイティブ拡張」を使って、 AndroidでNFCを読み込んでみた

こんなアプリを作成

• ID: NFCを読み込むとIDが値として表示される

• Clearボタン: IDをクリアする

12年12月20日木曜日

Page 12: 「AIRネイティブ拡張」を使って、 AndroidでNFCを読み込んでみた

FLASH CS6でネイティブ拡張を「使う」

• Flash CS6をインストール

• Air Native Extensionをライブラリパスに追加する

•ソースコード記述

• sample-app.xmlの編集(手動で記述)

12年12月20日木曜日

Page 13: 「AIRネイティブ拡張」を使って、 AndroidでNFCを読み込んでみた

FLASH CS6をインストール

• Flash CS6をインストールすると、同じフォルダ内にAir

SDK3.2もインストールされます。※後でAir SDKも使います

12年12月20日木曜日

Page 14: 「AIRネイティブ拡張」を使って、 AndroidでNFCを読み込んでみた

FLASH CS6でネイティブ拡張を使う

• Flash CS6をインストール

• Air Native Extensionをライブラリパスに追加する

•ソースコード記述

• sample-app.xmlの編集(手動で記述)

12年12月20日木曜日

Page 15: 「AIRネイティブ拡張」を使って、 AndroidでNFCを読み込んでみた

Air Native Extensionをライブラリパスに追加する

• AIR for Androidを選択

12年12月20日木曜日

Page 16: 「AIRネイティブ拡張」を使って、 AndroidでNFCを読み込んでみた

Air Native Extensionをライブラリパスに追加する

•「OK」を選択

12年12月20日木曜日

Page 17: 「AIRネイティブ拡張」を使って、 AndroidでNFCを読み込んでみた

Air Native Extensionをライブラリパスに追加する

•「ファイル」>「保存」を選択し、C:/sampleフォルダに保存する。

• ※今回のファイル名:sample.fla

12年12月20日木曜日

Page 18: 「AIRネイティブ拡張」を使って、 AndroidでNFCを読み込んでみた

Air Native Extensionをライブラリパスに追加する

• sampleフォルダにlibs

フォルダを作成

• ANEファイルを配置

12年12月20日木曜日

Page 19: 「AIRネイティブ拡張」を使って、 AndroidでNFCを読み込んでみた

Air Native Extensionをライブラリパスに追加する

•スクリプトの「設定」ボタン押下

12年12月20日木曜日

Page 20: 「AIRネイティブ拡張」を使って、 AndroidでNFCを読み込んでみた

Air Native Extensionをライブラリパスに追加する

•「ドキュメントクラス」に「sample」を入力

•タブ「ライブラリパス」のネイティブ拡張(ANE)ファイルを参照ボタンを選択し、C:/sample/libs/

NfcAneExtension.aneを選択する。

12年12月20日木曜日

Page 21: 「AIRネイティブ拡張」を使って、 AndroidでNFCを読み込んでみた

FLASH CS6でネイティブ拡張を使う

• Flash CS6をインストール

• Air Native Extensionをライブラリパスに追加する

•ソースコード記述

• sample-app.xmlの編集(手動で記述)

12年12月20日木曜日

Page 22: 「AIRネイティブ拡張」を使って、 AndroidでNFCを読み込んでみた

ソースコード記述

•「クラス定義を編集」ボタン押下

12年12月20日木曜日

Page 23: 「AIRネイティブ拡張」を使って、 AndroidでNFCを読み込んでみた

ソースコード記述

•ソースのひな形が記述されるので、ActionScript3.0を追記していく

12年12月20日木曜日

Page 24: 「AIRネイティブ拡張」を使って、 AndroidでNFCを読み込んでみた

ソースコード記述

•左のような画面を生成するコードを書く

12年12月20日木曜日

Page 25: 「AIRネイティブ拡張」を使って、 AndroidでNFCを読み込んでみた

ソースコード記述

• Flash CS6を使ってソースコードの解説

12年12月20日木曜日

Page 26: 「AIRネイティブ拡張」を使って、 AndroidでNFCを読み込んでみた

FLASH CS6でネイティブ拡張を使う

• Flash CS6をインストール

• Air Native Extensionをライブラリパスに追加する

•ソースコード記述

• sample-app.xmlの編集(手動で記述)

12年12月20日木曜日

Page 27: 「AIRネイティブ拡張」を使って、 AndroidでNFCを読み込んでみた

Sample-app.xmlの編集(手動で記述)

• AIR for Android設定画面の権限タブで、チェック「アプリケーション記述ファイルへの権限およびマニフェストの追加を手動で管理します」を入れる。※Sample-app.xmlが自動生成される

12年12月20日木曜日

Page 28: 「AIRネイティブ拡張」を使って、 AndroidでNFCを読み込んでみた

↑の記述は省略 <android> <manifestAdditions><![CDATA[<manifest> <application> <activity> <intent-filter> <action android:name="android.intent.action.MAIN"/> <category android:name="android.intent.category.LAUNCHER"/> </intent-filter> </activity> <activity android:name="sample.ane.TagReaderActivity" android:theme="@android:style/Theme.NoDisplay" android:launchMode="singleTop" android:excludeFromRecents="true"></activity> </application><uses-permission android:name="android.permission.INTERNET"/><uses-permission android:name="android.permission.NFC"/></manifest>]]></manifestAdditions> </android> <extensions> <extensionID>sample</extensionID> </extensions></application>↑ファイルの最後

12年12月20日木曜日

Page 29: 「AIRネイティブ拡張」を使って、 AndroidでNFCを読み込んでみた

デプロイ

• デプロイタブ

• 証明書:選択、もしくは作成

• パスワード:入力

• デプロイタイプ:デバイスリリース

• AIRランタイム:任意

• パブリッシュ後:任意

12年12月20日木曜日

Page 30: 「AIRネイティブ拡張」を使って、 AndroidでNFCを読み込んでみた

デプロイ

パブリッシュ後にアプリケーションを起動するを選択している場合は、Android端末を接続しておく

12年12月20日木曜日

Page 31: 「AIRネイティブ拡張」を使って、 AndroidでNFCを読み込んでみた

デモンストレーション

12年12月20日木曜日

Page 32: 「AIRネイティブ拡張」を使って、 AndroidでNFCを読み込んでみた

ネイティブ拡張を「作る」

12年12月20日木曜日

Page 33: 「AIRネイティブ拡張」を使って、 AndroidでNFCを読み込んでみた

ネイティブ拡張を「作る」

• 手順

• ネイティブ拡張ライブラリの作成

• ネイティブ拡張ActionScriptライブラリの作成

• ネイティブ拡張記述ファイルの作成

• ANEファイルへパッケージング

12年12月20日木曜日

Page 34: 「AIRネイティブ拡張」を使って、 AndroidでNFCを読み込んでみた

ネイティブ拡張を「作る」

•ネイティブ拡張ライブラリの作成

•ネイティブ拡張ActionScriptライブラリの作成

•ネイティブ拡張記述ファイルの作成

• ANEファイルへパッケージング

12年12月20日木曜日

Page 35: 「AIRネイティブ拡張」を使って、 AndroidでNFCを読み込んでみた

ネイティブ拡張ライブラリの作成

12年12月20日木曜日

Page 36: 「AIRネイティブ拡張」を使って、 AndroidでNFCを読み込んでみた

プラットフォーム ネイティブAPI ネイティブ拡張開発言語 ネイティブ拡張ライブラリ

Android C API/Java API C言語/JavaShared library(.so) Java Archive library(.jar)

iOS C API C言語/Objective-C Static library(.a)

Windows C API C言語/C++/C# Dynamic Link Library(.dll)

Mac OS X C API C言語/Objective-C Framework(.framework)

ネイティブ拡張ライブラリの作成

12年12月20日木曜日

Page 37: 「AIRネイティブ拡張」を使って、 AndroidでNFCを読み込んでみた

ネイティブ拡張ライブラリの作成

•必要な物

• Eclipse(Android開発環境)

• Android SDK

12年12月20日木曜日

Page 38: 「AIRネイティブ拡張」を使って、 AndroidでNFCを読み込んでみた

ネイティブ拡張ライブラリの作成

• Androidプロジェクトを作成

12年12月20日木曜日

Page 39: 「AIRネイティブ拡張」を使って、 AndroidでNFCを読み込んでみた

ネイティブ拡張ライブラリの作成

• FlashRuntimeExtensions.jarをパスに追加

12年12月20日木曜日

Page 40: 「AIRネイティブ拡張」を使って、 AndroidでNFCを読み込んでみた

ネイティブ拡張ライブラリの作成

12年12月20日木曜日

Page 41: 「AIRネイティブ拡張」を使って、 AndroidでNFCを読み込んでみた

ネイティブ拡張ライブラリの作成

Eclipseでソースコード解説

12年12月20日木曜日

Page 42: 「AIRネイティブ拡張」を使って、 AndroidでNFCを読み込んでみた

ネイティブ拡張ライブラリの作成

•プロジェクトをjarでExport

12年12月20日木曜日

Page 43: 「AIRネイティブ拡張」を使って、 AndroidでNFCを読み込んでみた

ネイティブ拡張ライブラリの作成

12年12月20日木曜日

Page 44: 「AIRネイティブ拡張」を使って、 AndroidでNFCを読み込んでみた

ネイティブ拡張ライブラリの作成

12年12月20日木曜日

Page 45: 「AIRネイティブ拡張」を使って、 AndroidでNFCを読み込んでみた

http://www.adobe.com/jp/devnet/air/articles/native_extensions_part2.html

ネイティブ拡張(Native Extensions)入門 第2回 ネイティブ拡張の開発方法 前編

ネイティブ拡張ライブラリの作成

以下のサイトに詳しく載っています

12年12月20日木曜日

Page 46: 「AIRネイティブ拡張」を使って、 AndroidでNFCを読み込んでみた

ネイティブ拡張を「作る」

•ネイティブ拡張ライブラリの作成

•ネイティブ拡張ActionScriptライブラリの作成

•ネイティブ拡張記述ファイルの作成

• ANEファイルへパッケージング

12年12月20日木曜日

Page 47: 「AIRネイティブ拡張」を使って、 AndroidでNFCを読み込んでみた

ネイティブ拡張ActionScriptライブラリの作成

12年12月20日木曜日

Page 48: 「AIRネイティブ拡張」を使って、 AndroidでNFCを読み込んでみた

•必要な物

• Adobe Flash builder 4.6

ネイティブ拡張ActionScriptライブラリの作成

12年12月20日木曜日

Page 49: 「AIRネイティブ拡張」を使って、 AndroidでNFCを読み込んでみた

ネイティブ拡張ActionScriptライブラリの作成

12年12月20日木曜日

Page 50: 「AIRネイティブ拡張」を使って、 AndroidでNFCを読み込んでみた

ネイティブ拡張ActionScriptライブラリの作成

• a

12年12月20日木曜日

Page 51: 「AIRネイティブ拡張」を使って、 AndroidでNFCを読み込んでみた

ネイティブ拡張ActionScriptライブラリの作成

12年12月20日木曜日

Page 52: 「AIRネイティブ拡張」を使って、 AndroidでNFCを読み込んでみた

ネイティブ拡張ActionScriptライブラリの作成

• Adobe Flash BuilderでSampleExtension.as解説

12年12月20日木曜日

Page 53: 「AIRネイティブ拡張」を使って、 AndroidでNFCを読み込んでみた

ネイティブ拡張ActionScriptライブラリの作成

12年12月20日木曜日

Page 54: 「AIRネイティブ拡張」を使って、 AndroidでNFCを読み込んでみた

ネイティブ拡張記述ファイル

12年12月20日木曜日

Page 55: 「AIRネイティブ拡張」を使って、 AndroidでNFCを読み込んでみた

• platform: Androidの場合は、Android-ARMを指定

• id: ActionScriptからネイティブ拡張を指定する際に使用

• nativeLibrary: ネイティブ拡張ライブラリを指定

• initializer : FREExtensionを実装したクラス名

• finalizer : FREExtensionを実装したクラス名

ネイティブ拡張記述ファイル

12年12月20日木曜日

Page 56: 「AIRネイティブ拡張」を使って、 AndroidでNFCを読み込んでみた

ネイティブ拡張ActionScriptライブラリの作成

12年12月20日木曜日

Page 57: 「AIRネイティブ拡張」を使って、 AndroidでNFCを読み込んでみた

• ADTとは? = AIR Developer Tools

•場所 /Applications/Adobe Flash CS6/AIR3.2/bin ※パスを通しておく

ADTによるパッケージング

12年12月20日木曜日

Page 58: 「AIRネイティブ拡張」を使って、 AndroidでNFCを読み込んでみた

ADTによるパッケージング

• library.swf: NfcAne_asext.swcの拡張子をzipに変更し、解凍。中に入っているlibrary.swfを取り出しplatform/

androidフォルダに配置

•NfcAneAnd.jar 作成済みのネイティブ拡張ライブラリを配置

12年12月20日木曜日

Page 59: 「AIRネイティブ拡張」を使って、 AndroidでNFCを読み込んでみた

•使うツール: ターミナル

• Flash Builderで作ったディレクトリに移動して、 コマンド実行

ADTによるパッケージング

12年12月20日木曜日

Page 60: 「AIRネイティブ拡張」を使って、 AndroidでNFCを読み込んでみた

ADTによるパッケージング

12年12月20日木曜日

Page 61: 「AIRネイティブ拡張」を使って、 AndroidでNFCを読み込んでみた

ADTによるパッケージング

12年12月20日木曜日

Page 62: 「AIRネイティブ拡張」を使って、 AndroidでNFCを読み込んでみた

ADTによるパッケージング

コマンド実行adt-package-storetype pkcs12 -keystore 証明書ファイル-target ane ANEファイル名 ネイティブ拡張記述ファイル-swc ネイティブ拡張ActionScriptライブラリ-platform プラットフォーム名-C プラットフォームディレクトリ .

ディレクトリ移動$ cd /Users/naoki/Desktop/NfcAne_asext

12年12月20日木曜日

Page 63: 「AIRネイティブ拡張」を使って、 AndroidでNFCを読み込んでみた

ADTによるパッケージング

コマンド実行 ※実際は1行adt-package-storetype pkcs12 -keystore 証明書ファイル-target ane ANEファイル名 ネイティブ拡張記述ファイル-swc ネイティブ拡張ActionScriptライブラリ-platform プラットフォーム名-C プラットフォームディレクトリ .

12年12月20日木曜日

Page 64: 「AIRネイティブ拡張」を使って、 AndroidでNFCを読み込んでみた

ADTによるパッケージングadt -package -storetype pkcs12 -keystore test.p12 -target ane NfcAneExtension.ane extension.xml -swc bin/NfcAne_asext.swc -platform Android-ARM -C platform/android .

※実際は1行

12年12月20日木曜日

Page 65: 「AIRネイティブ拡張」を使って、 AndroidでNFCを読み込んでみた

参考にしたURL

ネイティブ拡張(Native Extensions)入門 第1回 ネイティブ拡張を理解するhttp://www.adobe.com/jp/devnet/air/articles/native_extensions_part1.html

ネイティブ拡張(Native Extensions)入門 第2回 ネイティブ拡張の開発方法 前編http://www.adobe.com/jp/devnet/air/articles/native_extensions_part2.html

ネイティブ拡張(Native Extensions)入門 第3回 ネイティブ拡張の開発方法 後編http://www.adobe.com/jp/devnet/air/articles/native_extensions_part3.html

12年12月20日木曜日