AIR 2.6 と Android アプリケーション画面の回転

先日、Adobe Developer Connection に Android アプリケーションの画面の向きを、縦にしたり横にしたりする方法について書きました。

画面を回転させる方法は、大きく 2 種類に分けられます。

AIR の自動回転機能を使うものと、全てをスクリプトから制御するものです。2 つの記事の内、パート 1 は自動回転を利用する場合、パート 2 は利用しない場合のシナリオを解説しています。

(可能であれば、パート 1 に紹介している自動回転機能を有効にして、RESIZE イベントで表示を制御する方法が楽だと思います)

さて、AIR 2.6 では、iOS と Android 間の API の整合性を高めるため、いくつかの変更が行われました。その影響で、画面の回転に関連する項目でも AIR 2.0 から AIR 2.5 へのアップデートで一旦使えなくなった機能がいくつか復活しています。

これまでの経緯

具体的な項目に触れる前に、背景を整理しておくと、

  1. AIR 2.0 は iOS を第一に設計された
  2. iOS 向け AIR アプリの配布が禁止された
  3. AIR 2.5 は Android を前提に設計された
    → そのため Android 上で利用できない AIR 2.0 の API は AIR 2.5 になって廃止された (iOS 向けの開発は中断)
  4. iOS 向け AIR アプリの配布が許可された
  5. AIR 2.6 は iOS, Android 両方のサポートを目指した

このように、これまでは iOS 対応と Android 対応は別のルートを辿ってきました。Packager for iPhone のユーザーは AIR 2.0 を使ってきましたし、AIR for Android のユーザーは AIR 2.0 とは非互換の AIR 2.5 を使ってきました。

なので、両者にとって AIR 2.6 は異なるアップデートに見えるかもしれません。

AIR 2.6 における画面の向き関連の変更点

本題に戻って、AIR 2.6 で、画面の向きに関連する項目の内、変更があったのは以下の通りです。

  • autoOrients 属性が書き込み可能に
  • supportedOrientations 属性を Stage に新規追加
  • setOrientation() メソッドが再び利用可能に
  • orientation 属性が再び利用可能に
  • ORIENTATION_CHANGING イベントが再び利用可能に

下の 3 つは、AIR 2.5 では廃止とされていた機能です。

しかし、AIR が 2.6 にバージョンアップしたからといって Android 側の機能が増えた訳ではありません。ということで、AIR 2.6 から利用可能になったとはいえ、これらの機能には制限があります。

Android では setOrientation() メソッドは 2 つの方向しか設定できません。setAspectRatio() メソッドで設定できる方向と同じ方向限定です。設定できる方向を取得するために Stage.supportedOrientationsが追加されました。これを使えば OS 非依存のコードを書くことは可能そうです。

ORIENTATION_CHANGING イベントもコンパイルは通るようになりましたが、実際には Android 環境では発行されません。ですので、結局 ORIENTATION_CHANGING イベントは使えない、という結論になりそうです。

AIR 2.6 限定ではないのですが、deviceOrientation 属性にも注意が必要です。deviceOrientation には加速度計の値を元にデバイスの向きが設定されますが、画面が水平に近い状態 (z 軸方向の加速度が大きい場合) では値が unknown になります。なので、画面の上下を常に示す訳ではありません。

 

トラックバック(0)

トラックバックURL: http://cuaoar.jp/mt4/mt-tb.cgi/156

コメントする

2014年1月

Sun Mon Tue Wed Thu Fri Sat
      1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31  
レンタルサーバー

月別 アーカイブ

Powered by Movable Type 4.261