Adobe AirでAndroidアプリ開発するためのメモ
SubsonicのAndroidクライアントアプリを作る際、Javaで手っ取り早くやろうとすると、Flashを入れたりしないといけないし、クライアント側でアス比いじれないしということで、Air(Flex4)でやることにした。
開発はオープンソースのFlashDevelopだが、特に問題なく快適に開発できた。
画面遷移の方法
リストを使ったサンプル解説が分かりやすい。画面遷移以外でもいろいろ参考になった。
Flexで作るAndroidアプリ開発チュートリアル 3
- 次の画面へ:navigator.pushView(NextViewClassName, data)
- 前の画面へ:navigator.popView()
- Top画面へ:navigator.popToFirstView()
モバイルアプリケーションでのビューの定義
画面遷移以前の話からだけど、ViewがAndroidでいうActivityの単位にあたるのかな。
設定データ保存
Adobe® Flex™ 3.2 リファレンスガイド ShareObject
AirではShareObjectを使うのが基本のよう。
Alertの作り方
Flexモバイル版ではAlertが使えないみたい。sparkのリファレンスを探してみてもそれらしきものが見当たらない。
ということで、ポップアップをカスタマイズして使うことにする。
“ FlexモバイルでAlertが使えない件について を参考にさせてもらったが、このままだとViewごとにコピペしないといけないのかな?
ということで、汎用性をもたせるようカスタマイズ。
<?xml version="1.0" encoding="utf-8"?> <!-- containers\spark\myComponents\MyAlertPopUp.mxml --> <s:SkinnablePopUpContainer xmlns:fx="http://ns.adobe.com/mxml/2009" xmlns:s="library://ns.adobe.com/flex/spark" xmlns:mx="library://ns.adobe.com/flex/mx" width="100%" height="100%" creationComplete="init()"> <fx:Script> <![CDATA[ import flash.display.DisplayObject; private var aTitle:String = ""; private var aMsg:String = ""; public function config(atitle:String, msg:String):void { aTitle = atitle; aMsg = msg; } public function init():void { this.width = this.parent.width; this.height = this.parent.height; this.messageTitle.title = aTitle; this.messageAlert.text = aMsg; } ]]> </fx:Script> <s:Panel width="100%" height="100%" id="messageTitle" title="Message"> <s:VGroup width="100%" height="100%" horizontalAlign="center" verticalAlign="middle"> <s:Label id="messageAlert" text="Your custom alert box"/> <s:Button label="OK" click="close();"/> </s:VGroup> </s:Panel> </s:SkinnablePopUpContainer>
使用するときは以下のようにする。
var alert:MyAlertPopup = new MyAlertPopup(); alert.config("タイトル", "メッセージ"); alert.open(this);
戻るボタンにイベント追加
戻るボタンを押してもVideoDisplayが開放されなかったので、Subsonicのサーバー側でエンコードが続いてしまう。 player.source=”“ を戻るボタンを押した時に実行したいということで、こちらを参考にした。
こちら の ボタン検知 の項目でサンプルコード付きで解説されている。
他にも アプリの終了 などいろいろ書いてあって参考になった。
画面向きの固定
デバッグの方法
ここの解説 の通りにして、FlashDevelop4.2.3の環境でも問題なく実行できた。runだのcontinueだのしなきゃいけないのがちょっと面倒。
モバイル AIR アプリケーション固有の ActionScript API
スリープモードの制御
AIR for Android メモ 画面、タッチ、ジェスチャー
権限に DISSABLE_KEYGUARD, WAKE_LOCK が必要。 SystemIdleMode を設定して行う。