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

Adobe公式の解説

スリープモードの制御

AIR for Android メモ 画面、タッチ、ジェスチャー

権限に DISSABLE_KEYGUARD, WAKE_LOCK が必要。 SystemIdleMode を設定して行う。