CSXSによるホスト環境の取得

皆様、寒波に襲われてとてつもなく寒い日々が続いていますが、いかがお過ごしでしょうか。わたしは例によって風邪気味です。まあ、そんな事はどうでも良いですね。
間があいてしまっていますが、前回の続きです。CSXSを介した基本情報の取得が今回のテーマです。シングルインスタンスがどうだとかのややこしい事は前回書いてますので今回は具体的な例を挙げてみていく事にしましょう。

まずはmxmlファイルから

<?xml version=”1.0″ encoding=”utf-8″?>
<mx:Application xmlns:mx=”http://www.adobe.com/2006/mxml&#8221; layout=”absolute” historyManagementEnabled=”false” creationComplete=”load()”>
    <mx:Script>
        <![CDATA[
            import com.adobe.csxs.core.CSXSInterface;
            import com.adobe.csxs.types.*;
            import mx.controls.*;

            [Bindable]   
            public function load():void
            {
                var result:SyncRequestResult = CSXSInterface.getInstance().getHostEnvironment();
                var hostEnv:HostEnvironment
                if(result.status==SyncRequestResult.COMPLETE  && result.data)
                {
                    hostEnv = result.data as HostEnvironment;
                    message.text = result.data.toString();
                }
            }
        ]]>
    </mx:Script>
    <mx:TextArea id=”message” width=”350″ height=”350″ />
</mx:Application>

まあ、前回の見本コードそのまんまです。CSXSインターフェースクラスを利用するにあたってインポートするライブラリは以下の物。メソッドが返す型がSyncRequestResultなのでcsxs.typesも必要になります。

com.adobe.csxs.core.CSXSInterface;
com.adobe.csxs.types.*;

実際にはパネルの生成が完了した時点で呼び出されるファンクションが情報を取得します。

public function load():void
{
    var result:SyncRequestResult = CSXSInterface.getInstance().getHostEnvironment();
    var hostEnv:HostEnvironment
    if(result.status==SyncRequestResult.COMPLETE  && result.data)
    {
        hostEnv = result.data as HostEnvironment;
        message.text = result.data.toString();
    }
}

シングルインスタンスですので、ご覧の通りgetInstance()メソッドにくっつけてgetHostEnvironmentメソッドを使います。
ここでSyncRequestResultのステータスの種類を見ておきましょう。

SyncRequestResult Public Constants
COMPLETE : String = “PlugPlugRequestComplete”
DENIED : String = “PlugPlugRequestDenied”
EXTERNALINTERFACE_NOT_AVAILABLE : String = “ExternalInterfaceNotAvailable”
FAILED : String = “PlugPlugRequestFailed”
INVALID_INPUT_PARAMS : String = “InvalidInputParams”
INVALID_RETURN_PARAMS : String = “InvalidReturnParams”

COMPLETEが正常に情報が帰ってきた場合。FAILEDが失敗でDENIEDが拒否された場合。あといろいろですが、上記を見れば分かる通りCSXSInterfaceというのはPlugPlugInterfaceを介したネイティブAPIへのアクセスとなります。
とりあえず、抜き出したデータが以下です。

[HostEnvironment appName=”ILST” appVersion=”16.0.0″ appLocale=”ja_JP” appUILocale=”ja_JP” appId=”ILST” isAppOffline=false appSkinInfo=[AppSkinInfo baseFontFamily=”HiraKakuProN-W3″ baseFontSize=12 appBarBackgroundColor=[UIColor type=”rgb” antiAliasLevel=”medium” color=[RGBColor rgb=4408131 red=66.879997 green=66.879997 blue=66.879997 alpha=255]] panelBackgroundColor=[UIColor type=”rgb” antiAliasLevel=”medium” color=[RGBColor rgb=4408131 red=66.879997 green=66.879997 blue=66.879997 alpha=255]] appBarBackgroundColorSRGB=[UIColor type=”rgb” antiAliasLevel=”medium” color=[RGBColor rgb=4408131 red=66.879997 green=66.879997 blue=66.879997 alpha=255]] panelBackgroundColorSRGB=[UIColor type=”rgb” antiAliasLevel=”medium” color=[RGBColor rgb=4408131 red=66.879997 green=66.879997 blue=66.879997 alpha=255]] systemHighlightColor=[RGBColor rgb=11390719 red=173 green=206 blue=255 alpha=255]]]

上記はイラストレータのものですが、見にくいですね。少し整形したものも掲載しておきましょう。

[HostEnvironment
    appName=”IDSN”
    appVersion=”7.0.4″
    appLocale=”ja_JP”
    appUILocale=”ja_JP”
    appId=”IDSN”
    isAppOffline=false
    appSkinInfo=[AppSkinInfo
        baseFontFamily=”ƒqƒ‰ƒMƒmŠpƒS ProN W3″
        baseFontSize=9
        appBarBackgroundColor=[UIColor
            type=”rgb”
            antiAliasLevel=”medium”
            color=[RGBColor
                rgb=15790320
                red=240.35408
                green=240.35408
                blue=240.35408
                alpha=255
                ]
            ]
        panelBackgroundColor=[UIColor
            type=”rgb”
            antiAliasLevel=”none”
            color=[RGBColor
                rgb=15921906
                red=242
                green=242
                blue=242
                alpha=255
                ]
            ]
        appBarBackgroundColorSRGB=[UIColor
            type=”rgb”
            antiAliasLevel=”medium”
            color=[RGBColor
                rgb=15790320
                red=240.35408
                green=240.35408
                blue=240.35408
                alpha=255
                ]
            ]
        panelBackgroundColorSRGB=[UIColor
            type=”rgb”
            antiAliasLevel=”none”
            color=[RGBColor
                rgb=15921906
                red=242
                green=242
                blue=242
                alpha=255
                ]
            ]
        systemHighlightColor=[RGBColor
            rgb=11916799
            red=181
            green=213
            blue=255
            alpha=255
            ]
        ]
    ]

こちらはインデザインです。日本語表記のフォント名が文字化けしていますね。もともとCS-SDKというのはNorthern American Englishにしか対応していません。UIはローカライズされてはいますが、他の言語では帰ってくるデータ等が正常にバリデートされないものも存在します。
また、一部のデータだけが必要な場合、以下の様に階層を辿った状態で抜き出します。

result.data.appName

getAppID.png

result.data.app.SkinInfo.panelBackgroundColorSRGB.color

getRGB.png

アプリケーションIDだけが必要な場合は以下の様にするとよいでしょう。

<?xml version=”1.0″ encoding=”utf-8″?>
<mx:Application xmlns:mx=”http://www.adobe.com/2006/mxml&#8221; layout=”absolute” historyManagementEnabled=”false” creationComplete=”load()”>
    <mx:Script>
        <![CDATA[
            import com.adobe.csxs.core.CSXSInterface;
            [Bindable]
            public function load():void
            {
                message.text = CSXSInterface.getInstance().getApplicationId();
            }
        ]]>
    </mx:Script>
    <mx:TextArea id=”message” width=”350″ height=”350″ />
</mx:Application>

帰ってくるのは

getAppID.png

しかしながら、アプリケーションを判別するだけなら以下の様にホスト情報を抜き出す方が簡単です。

appNm:String = HostObject.mainExtension;

この場合帰ってくるのは

getHost.png

となります。
また、エクステンションIDが必要な場合、

<?xml version=”1.0″ encoding=”utf-8″?>
<mx:Application xmlns:mx=”http://www.adobe.com/2006/mxml&#8221; layout=”absolute” historyManagementEnabled=”false” creationComplete=”load()”>
    <mx:Script>
        <![CDATA[
            import com.adobe.csxs.core.CSXSInterface;
            [Bindable]
            public function load():void
            {
                message.text = CSXSInterface.getInstance().getExtensionId();
            }
        ]]>
    </mx:Script>
    <mx:TextArea id=”message” width=”350″ height=”350″ />
</mx:Application>

getExtID.png

のようにgetExtensionId()メソッドを利用する事で取得可能です。

広告

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト /  変更 )

Google フォト

Google アカウントを使ってコメントしています。 ログアウト /  変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト /  変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト /  変更 )

%s と連携中