| Oracle® Fusion Middleware Oracle Application Development Frameworkモバイル開発者ガイド 11g リリース2 (11.1.2.4.0) B70750-02 |
|
![]() 前 |
![]() 次 |
この付録では、デプロイメント時、ADFモバイルがどのようにユーザー・プリファレンスを変換するかについて説明します。
このドキュメントには次の項が含まれます。
デプロイメント・ターゲットが呼び出されると、ADFモバイル・アプリケーション・プリファレンスの、モバイル・プラットフォーム表現への変換が行われます。変換後、表C-1で説明されているネーミング・パターンにより、モバイル・プラットフォーム上で各プリファレンスを一意に識別できるようになります。adfmf-application.xmlおよびadfmf-feature.xmlファイル内の各プリファレンス要素は、デプロイメントの前に、その兄弟要素の範囲内で一意に識別される必要があります。
識別子値の例は、次のとおりです。
application.gen.gps.trackGPS
feature.f0.gen.gps.trackGPS
表C-1は、完全修飾されたプリファレンス識別子の生成方法を示しています。
表C-1 プリファレンスに対するADFモバイルのネーミング・パターン
| Expression | 説明 | Syntax |
|---|---|---|
|
|
モバイル・プラットフォーム表現に変換されたプリファレンス要素の識別子値を表します。 |
|
|
|
|
<adfmf:preferences>
<adfmf:preferenceGroup id="gen">
<adfmf:preferenceGroup id="gps">
<!-- The mobile-platform identifier would be "application.gen.gps.trackGPS" -->
<adfmf:preferenceBoolean id="trackGPS"/>
</adfmf:preferenceGroup>
</adfmf:preferenceGroup>
</adfmf:preferences>
|
|
|
|
<adfmf:feature id="f0">
<adfmf:preferences>
<adfmf:preferenceGroup id="gen">
<adfmf:preferenceGroup id="gps">
<!-- The mobile-platform identifier would be "feature.f0.gen.gps.trackGPS" -->
<adfmf:preferenceBoolean id="trackGPS"/>
</adfmf:preferenceGroup>
</adfmf:preferenceGroup>
</adfmf:preferences>
</adfmf:feature>
|
表C-1のコード例で引用されている<adfmf:preferences>要素にはid属性がなく、そのため、これはどのプリファレンス識別子でも表されません。
ADFモバイルのデプロイメントでは、XMLとXLSを使用して、アプリケーション機能とADFモバイル・アプリケーション・レベルの両方で定義されているユーザー・プリファレンス・ページを、次の3つのXMLドキュメントに変換します。
preferences.xml
arrays.xml
strings.xml
このファイルには、adfmf-feature.xmlとadfmf-application.xmlの両方のファイルからの変換済のプリファレンスが含まれています。
表C-2は、ADFモバイルのプリファレンス定義の、Androidテンプレート・プリファレンスおよびAndroidネイティブ・プリファレンスへのマッピングを示しています。
表C-2 ADFモバイル・プリファレンスの、Androidプリファレンスへのマッピング
| ADFモバイル・プリファレンス定義 | テンプレート・カスタムまたはAndroidネイティブ・プリファレンス定義(デプロイメントで使用される) | Androidネイティブ・プリファレンス定義(デプロイメントで使用されない) |
|---|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Preferences.xmlファイルには、strings.xmlおよびarrays.xmlファイルの両方に格納されている文字列リソースへの参照が含まれています。Android SDKでは、XMLファイル内のリソースの構文を@[<package_name>:]<resource_type>/<resource_name>と定義しています。このファイルには、文字列値への参照だけでなく、リスト・プリファレンスの名前と値のペアも含まれています。XSLは、文字列とリスト・プリファレンスに対して次のものを作成します。
<package_name> は、リソースが存在するパッケージの名前です(同じパッケージのリソースを参照するときは必要ありません)。参照のこのコンポーネントは使用されません。
<resource_type>は、リソース・タイプのRサブクラスです。このコンポーネントは、文字列参照の作成時はstring、リスト・プリファレンスの作成時はarrayの値を持ちます。
<resource_name>は、XML要素内のandroid:name属性値です。android:title属性を指定する場合、このコンポーネントの値は、<PreferenceIdentifier>_titleになります(<PreferenceIdentifier>の定義については、第C.1項「プリファレンスのネーミング・パターン」を参照してください)。
表C-3と表C-4は、特定のADFモバイル・プリファレンスに対するADFモバイル属性の、Androidプリファレンスへのマッピングを示しています。
この表では、
{X}というフォームのエントリ(表C-3の{default}など)は、Xという名前のADFモバイル属性の値を示しています。
<PreferenceIdentifier>があるエントリは、第C.1項「プリファレンスのネーミング・パターン」で説明されているとおり、プリファレンス識別子の値を示しています。
アスタリスク(*)が付いている属性は、ADFモバイルの名前空間で定義されているカスタムのテンプレート属性であり、preferences.xmlにadfmf:<attributeName>というフォームで存在している必要があります。それ以外の属性は、Androidの名前空間の一部であり、preferences.xmlにandroid:<attributeName>として存在している必要があります。
表C-3 ADFモバイル・プリファレンス属性の、Androidプリファレンスへのマッピング
| ADFモバイル属性定義 | テンプレート・カスタムまたはAndroidネイティブ・プリファレンス属性 | Android属性値 | 適用対象 |
|---|---|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
指定された |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
次の場合、adfmf-application.xmlおよびadfmf-feature.xmlファイル用の概要エディタでは、XMLからの属性名と値は除外されます。
属性タイプがxsd:booleanである。
属性値に<default>値オプションがある。
ユーザーが値として<default>を指定している。
XSLは、ブール・タイプのADFモバイル属性と、対応するデフォルト値を認識している必要があります。XSLはその後、適切なAndroidまたはテンプレート・カスタム属性値を指定します(ユーザーによって選択された場合)。
表C-4は、変換されるADFモバイル・プリファレンスにdefault属性が含まれていない場合に、デプロイメントでandroid:defaultValue属性に対して指定されるものを示しています。
preferences.xmlファイルには、<PreferenceScreen>と呼ばれるルート要素があります。Androidテンプレートでは、この要素に次のXML名前空間定義が存在している必要があります。
xmlns:adfmf="http://schemas.android.com/apk/res/<Application Package Name>
ここで、<Application Package Name>要素は、AndroidManifest.xmlファイル内にあるものと同じアプリケーション・パッケージ名として定義されます。<Android Package Name>は、AndroidManifest.xmlファイルで指定されているAndroidパッケージ名を定義します。詳細は、第5.3.1項「モバイル・アプリケーションのIDおよび表示動作の設定方法」を参照してください。
デプロイメントでは、Androidデプロイメント・プロファイルのアプリケーション・バンドルID値が使用されます(存在する場合)。プロファイルにアプリケーション・バンドルID値が存在しない場合は、adfmf-application.xmlファイルに含まれているアプリケーションの表示名およびアプリケーションIDからこの値が取得されます。デプロイメントJavaコードは、この値をXSLドキュメントにパラメータとして渡します。
例C-1は、adfmf-feature.xmlファイルに含まれているADFモバイル・プリファレンスを示しています。
例C-1 adfmf-feature.xmlファイルで定義されているプリファレンス
<?xml version="1.0" encoding="UTF-8" ?>
<adfmf:features xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance
xmlns:adfmf="http://xmlns.oracle.com/jdev/adfmf">
<adfmf:feature id="oracle.hello"
name="Hello"
icon="oracle.hello/navbar-icon.png"
image="oracle.hello/springboard-icon.png">
<adfmf:content id="Hello.Generic">
<adfmf:localHTML url="oracle.hello/index.html"/>
</adfmf:content>
<adfmf:preferences>
<adfmf:preferenceGroup id="prefGroup"
label="preference group">
<adfmf:preferenceBoolean id="boolPref"
label="boolPref perference"
default="true"/>
<adfmf:preferenceNumber id="numPref"
label="numPref preference"
default="1"
min="1"
max="10"/>
<adfmf:preferenceText id="textPref"
label="textPref preferences"
default="Foo"/>
<adfmf:preferenceList id="listPref"
label="listPref preference"
default="value2">
<adfmf:preferenceValue name="name1"
value="value1"/>
<adfmf:preferenceValue name="name2"
value="value2"/>
</adfmf:preferenceList>
</adfmf:preferenceGroup>
</adfmf:preferences>
</adfmf:feature>
</adfmf:features>
arrays.xmlファイルは、preferences.xmlファイルから参照されるリスト・プリファレンスの名前と値を列挙する文字列配列要素で構成されています。adfmf-application.xmlおよびadfmf-feature.xmlファイルに含まれている各<preferenceList>要素は、2つの文字列配列要素(1つは名前用、もう1つは値用)に変換されます。たとえば、例C-2に記載されているADFモバイルのpreferenceList定義は、例C-3に示されているように、arrays.xmlファイル内の<string-array name="feature.oracle.hello.prefGroup.MyList___entry_values">および<string-array name="feature.oracle.hello.prefGroup.MyList___entries">に変換されます。
例C-2 adfmf-feature.xmlファイルにおけるPreferenceList定義
<adfmf:features xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:adfmf="http://xmlns.oracle.com/jdev/adfmf">
<adfmf:feature id="oracle.hello" name="Hello" icon="oracle.hello/navbar-icon.png" image="oracle.hello/springboard-icon.png">
...
<adfmf:preferences>
<adfmf:preferenceGroup id="prefGroup">
<adfmf:preferenceList id="MyList" label="My List">
<adfmf:preferenceValue name="name1" value="value1"/>
<adfmf:preferenceValue name="name2" value="value2"/>
<adfmf:preferenceValue name="name3" value="value3"/>
</adfmf:preferenceList>
</adfmf:preferenceGroup>
</adfmf:preferences>
</adfmf:feature>
...
例C-3は、arrays.xmlファイルに含まれている、<preferenceList>要素から変換された文字列配列要素のペアを示しています。
例C-3 arrays.xmlにおける、<string-array>要素に変換されたプリファレンス・リスト
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:adfmf="http://schemas.android.com/apk/res/oracle.myandroidapp">
<string-array name="feature_oracle_hello_prefGroup.MyList___entry_values">
<item>name1</item>
<item>name2</item>
<item>name3</item>
</string-array>
<string-array name="feature_oracle_hello_prefGroup.MyList___entries">
<item>value1</item>
<item>value2</item>
<item>value3</item>
</string-array>
</resources>
例C-4は、preferences.xmlで参照されている<string-arrays>を示しています。
例C-4 preferences.xmlファイルからのPreferenceList参照
<oracle.adfmf.preferences.AdfMFPreferenceList android:key="feature.oracle.hello.MyList" android:title="@string/feature_oracle_hello_prefGroup.MyList___title" android:entries="@array/feature_oracle_hello_prefGroup.MyList___entries" android:entryValues="@array/feature_oracle_hello_prefGroup.MyList___entry_values" />
例C-5で示されているstrings.xmlファイルは、preferences.xmlファイルによって参照される文字列要素、およびadfmf-application.xmlおよびadfmf-feature.xmlファイルで定義されているリソース・バンドル参照で構成されています。各文字列要素には、文字列および文字列値を一意に識別するname属性があります。
例C-5 strings.xmlファイル
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:adfmf="http://schemas.android.com/apk/res/oracle.myandroidapp">
...
<string name="feature.PROD.bundle.FeatureName">Products</string>
<string name="feature.oracle.hello.prefGroup.MyBooleanPreference___title">My feature boolean pref</string>
...
</resources>
文字列のソースがリソース・バンドル文字列への参照でない場合、name属性のネーミング規則は<PreferenceIdentifier>___<androidAttributeName>です。
例C-6 adfmf-feature.xmlファイルで定義されているリソース・バンドル参照
<adfmf:features xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:adfmf="http://xmlns.oracle.com/jdev/adfmf">
<adfmf:loadBundle basename="mobile.ViewControllerBundle"
var="bundle"/>
<adfmf:feature id="oracle.hello"
name="Hello"
icon="oracle.hello/navbar-icon.png"
image="oracle.hello/springboard-icon.png">
<adfmf:feature id="PROD"
name="#{bundle.FeatureName}"
icon="openMore.png"
image="G.png"
credentials="none">
...
<adfmf:preferences>
<adfmf:preferenceGroup id="prefGroup">
<adfmf:preferenceBoolean default="true"
id="MyBooleanPreference"
label="My feature boolean pref"/>
</adfmf:preferenceGroup>
</adfmf:preferences>
</adfmf:feature>
iOSデプロイヤは、表C-4に記載されているADFモバイル・プリファレンスを、iOS Settingsアプリケーションで必要なプリファレンス・リスト(.plist)ファイル表現に変換します。
表C-5 ADFモバイル・プリファレンスと、対応するiOS表現
| ADFモバイル・プリファレンス・コンポーネント | iOS表現 |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
プリファレンス・リスト(.plist)ファイルのiOS要件については、iOS Developer Library (http://developer.apple.com/library/ios/navigation/)にある『iOS Application Programming Guide』の「Implementing Application Preferences」を参照してください。
例C-7は、ADFモバイル・プリファレンスのスタンザを示しています。