このチュートリアルでは、Oracle Enterprise Pack for Eclipseを使用してMobile Application Frameworkベースのアプリケーションの構築とデプロイを行います。
詳細を表示/非表示詳細表示

このアプリケーションでは、単純なJavaクラスを使用してデータを保存し、あるページ上で従業員のリストを表示し、別のページ上で給与グラフを表示します。また、パート2では特定のデバイス機能をアプリケーションに統合し、パート3では天気情報を返すWebサービスのコールを追加します。

前提条件:

このチュートリアルを実行するには、Oracle Enterprise Pack for Eclipse12.1.3.1をインストールしておく必要があります。また、Android SDKバージョン -19.x(最小) - .21.x(推奨)、APIレベル15(最小)、19以上をインストールしておく必要もあります。お好みで、アプリケーションを接続中のAndroidデバイスにデプロイできますが、このチュートリアルでは、Androidエミュレータへのアプリケーションのデプロイ方法を説明します。エミュレータの起動には、Android Virtual Device(AVD)Managerを使用します。AVD ManagerはAndroid SDK Toolsに付属しています。

iOS環境を使用する場合は、次のチュートリアルを使用して開発環境を設定できます。iOS環境の設定と構成

Android環境を使用する場合は、次のチュートリアルを使用できます。Android環境の設定と構成

目的 所要時間 アプリケーション
このチュートリアルでは、OEPEとMobile Application Frameworkでアプリケーションを開発する方法について説明します。これから作成するアプリケーションの完成版を確認するには、「Download」ボタンをクリックして最終的なアプリケーションのzipファイルをダウンロードし、作業領域にインポートしてください。 2.5時間 MAF Solution.zipのダウンロード

パート1:MAFアプリケーションの作成

OEPEで作業する場合はプロジェクト単位で作業を整理し、いくつかのプロジェクトを1まとめにしてアプリケーションを作成します。

最初に、MAFアプリケーション・ウィザードを使用して新しいMAFアプリケーションを作成します。次に、構築中のアプリケーションを保持するモバイル機能を作成します。

ステップ1:MAFアプリケーションの作成
  1. OEPEを開きます。ヒント:OEPEをインストールした場所にナビゲートして「eclipse.exe」をダブルクリックします。

  2. Project Explorerの内を右クリックし、「New」→「MAF Application」の順に選択します。

    アプリケーション・ナビゲータ
  3. Application display nameとしてEmployeeを入力し、「Next」をクリックします。

    New Gallery
  4. Application project nameとView project nameはデフォルト値にしたまま「Next」をクリックします。

  5. Create Mobile Appのステップ1
  6. 次のペインにMAFランタイムのバージョンが表示されます。複数のバージョンがある場合は、このプロジェクトに使用するバージョンを選択できます。デフォルト値のまま「Finish」をクリックしてプロジェクトを作成します。

  7. Create Mobile Appのステップ2
  8. プロジェクトが作成されたら、このプロジェクトをOracle MAFパースペクティブで開くかどうかを確認するプロンプトが表示されます。「Yes」をクリックして同意し、プロジェクトを開きます。

  9. Create Mobile Appのステップ3

    Project Explorerは次のように表示されます。

    Create Mobile Appのステップ4

    以降の手順では、MAFアプリケーション・プロジェクトの一部として作成されたいくつかのアーチファクトを確認します。

    表示からわかるとおり、それぞれのMAFアプリケーションは1つのトップレベル(アセンブリ・プロジェクト)、1つのアプリケーション・プロジェクトおよび1つ以上のビュー・プロジェクトで構成されます。アプリケーションのパッケージ化とデプロイメントに必要なアーチファクトはすべてトップレベル(アセンブリ・プロジェクト)で保持されます。

  10. これらのアーチファクトを内容表示するために、Project ExplorerでEmployeeを開きます。

  11. Create Mobile Appのステップ3
  12. Project Explorerのツールバーの下矢印をクリックし、「Customize View」を選択します。

  13. Create Mobile Appのステップ3
  14. Customize Viewダイアログで「.* resources」を選択解除し、「OK」をクリックします。

  15. Create Mobile Appのステップ3
  16. Project Explorerに.main.androidがフォルダとして表示されます。.main.androidを開いてパッケージ・アーチファクトとデプロイ・アーチファクトを表示します。

  17. Create Mobile Appのステップ3
  18. もう一度Customizationsダイアログを開き、「.* resources」を選択して「OK」をクリックします。これで、.* resourcesはProject Explorerビューでフィルタされるようになります。

  19. EmployeeApplicationプロジェクトには、デバイス機能とアプリケーション機能を抽象化するData Control Managerが含まれています。

  20. EmployeeApplication」→「MAF」の順に展開し、「Data Control Manager」をダブルクリックします。

  21. Create Mobile Appのステップ3
  22. Data Control Managerで、「DeviceFeatures」と「ApplicationFeatures」を両方とも展開します。自動的にアプリケーションで機能が使用できるようになることを確認します。

  23. Create Mobile Appのステップ3

    このチュートリアルでは、大半の作業を EmployeeViewプロジェクト内で行います。これから作成するアーチファクトは、おもにソース・フォルダ(src)またはView Contentフォルダで保持されます。下のイメージは、これら2つのフォルダを展開したところを表しています。

    Create Mobile Appのステップ3

    これで、MAFアプリケーションの作成といくつかのアーチファクトの確認が終了したので、MAFアプリケーションの構築に進みます。

ステップ2:アプリケーションへの機能の追加

Oracle MAFアプリケーションをデプロイすると、そのアプリケーションはモバイル機器上の単一アプリケーションとなります。このアプリケーションは通常、複数の部分で構成されます。たとえば、検索コンポーネント、ドキュメント(ヘルプ・ページなど)、データ入力フォーム、リストがあります。これらの部品はそれぞれ、アプリケーション内の一機能として定義されます。この項では、アプリケーションの一部分としてデプロイされる機能を作成します。

Oracle MAFアプリケーションの機能はmaf-feature.xmlファイル内に定義します。OEPEでは、このファイルに含まれるアーチファクトをMAF Feature Editorで管理します。

  1. 開いているエディタのタブがあれば、タブの右上隅にある「X」をクリックしてすべて閉じます。

    adfmf-feature.xml
  2. Project Explorerで、「EmployeeView」→「MAF」の順に展開し、「MAF Feature Editor」をダブルクリックしてエディタを開きます。

    Features表
  3. エディタで、Addボタン(緑色のプラス記号「緑のプラス記号」)をクリックして機能を追加します。

    Featureダイアログ
  4. 新しい機能のIdEmployeesに設定し、「OK」をクリックします。

    Featureダイアログ
  5. Outlineのトップレベルの「Features」をクリックして2つ目の機能を追加し、そのIdHelpに設定します。「OK」をクリックして機能を作成します。

  6. Features表

    Mobile Featuresは次のように表示されます。

    Features表

  7. 作業内容を保存します。作業時は頻繁に作業内容を保存することが重要です。作業内容の保存方法はいくつかあります。

    1)ツールバーの「Save」アイコンまたは「Save All」アイコンをクリックする。

    2)メニューを使用して、「File」→「Save」または「File」→「Save All」を選択する。

    1)ショートカット・キー[CTRL + S](Save)または[CTRL + Shift + S](Save All)を使用する。

    選択する方法がどれであっても、頻繁に保存するようにしてください。

  8. 各機能はなんらかのタイプのコンテンツによって支えられます。次の手順では、先ほど作成した機能のコンテンツを定義します。

  9. Help」機能を右クリックして「New」を選択します。

  10. Create HTML File
  11. New Objectダイアログで「Content」→「Local HTML」の順に選択し、「OK」をクリックします。

  12. help.htmlページ
  13. Outlineで「Help.1」を選択し、Fileフィールドの横にある作成アイコンをクリックします。

    Features表
  14. New Mobile HTMLダイアログで、View Contentフォルダが選択されていることを確認し、File nameをhelp.htmlに設定します。

    Features表
  15. help.htmlファイルが開いてエディタに表示されます。

  16. <body>開始タグと</body>終了タグの間にテキスト"This is going to be the Help System"を追加します。

    Features表
  17. 作業内容を保存します。

ステップ3:MAFタスク・フローの作成

この項では、Employees機能によって使用されるMAFタスク・フローを作成します。MAFタスク・フローには、相互作用する複数のページが含まれます。タスク・フローは、この相互作用の構造を定義するものです。

  1. maf-feature.xml」タブをクリックしてMAF Feature Editorに戻ります。

  2. Employees」機能を右クリックして「New」を選択します。

  3. Create HTML File
  4. この機能のコンテンツがタスク・フローになるため、New Objectダイアログで「Content」→「Task Flow」の順に選択し、「OK」をクリックします。

  5. help.htmlページ

    次に、この機能のタスク・フローを作成します。

  6. 機能エディタでEmployees.1を選択した状態のまま、Task Flowのファイル名フィールドの横にある作成ボタンをクリックします。

    Features表
  7. Create Task Flowダイアログで、ViewContentフォルダが選択されていることを確認し、タスク・フローのFile nameをemp-task-flow-definitionに設定します。File nameを設定するとTask Flow IDも変わります。「Finish」をクリックしてタスク・フローを作成します。

    Features表
  8. これでタスク・フローの作成が終了し、空のタスク・フローがエディタに表示されます。

  9. 作業内容を保存します。

  10. これで、タスク・フローにコンテンツを追加できるようになりました。このコンテンツは、ビュー・アクティビティ(ページへのポインタ)と制御フロー・ケース(ナビゲーション・コントロール)で構成されます。以降の手順では、タスク・フロー内に2つのアクティビティを作成します。

  11. パレットのActivitiesパネルはOEPEの左下隅にあります。このパネルからタスク・フローにビュー・アクティビティをドラッグします。

  12. エディタ

    エディタ

    エディタ
  13. このビュー・アクティビティの名前をemployeeListに変更します。

  14. タスク・フロー
  15. 次に、2つ目のビュー・アクティビティをタスク・フローにドラッグして、graphという名前にします。

  16. タスク・フロー

    これで、タスク・フローに2つのビュー・アクティビティが作成されました。次の手順では、これらのビュー・アクティビティ間にナビゲーション・ルール(制御フロー・ケース)を作成します。

  17. パレットの「Control Flow」パネルをクリックし、「Control Flow Case」をクリックします。次に、「employeeList」アクティビティをクリックして制御フローの開始点としてマークし、「graph」をクリックして制御フローの目的地としてマークします。この制御フロー・ケースの名前をshowGraphに設定します。

    タスク・フロー

    作成したビュー・アクティビティは、ページへのポインタに過ぎません。以降の手順では、これらのビュー・アクティビティをサポートするページを作成します。

  18. タスク・フロー・エディタで「employeeList」ビュー・アクティビティをダブルクリックしてNew MAF Pageダイアログを開きます。デフォルト名のまま「Finish」をクリックしてページを作成します。

    プロパティ・インスペクタ
  19. 作業内容を保存します。

  20. タスク・フロー・エディタに戻り、「graph」アクティビティをダブルクリックしてページを作成します。先ほどと同様、デフォルト名のまま「Finish」をクリックしてページを作成します。

    プロパティ・インスペクタ
  21. 作業内容を保存します。

    タスク・フローは次のように表示されます。

    プロパティ・インスペクタ

  22. これで、2つのビュー・アクティビティを含むタスク・フローの作成が完了しました。これらのビュー・アクティビティをサポートするページも作成しましたが、現時点でこのページは空のシェルにすぎません。次の項では、これらのページにデータを供給するJavaクラスを作成します。

ステップ4:Javaクラスとデータ・コントロールの作成

Oracle MAFにはデータを管理するアプリケーション・レイヤーがあるため、データの保管先や保管方法を気にすることなくUIでデータを使用できます。このレイヤーのことをデータ・コントロール・レイヤーと言います。

このチュートリアルでは、アプリケーションのデータソースとしてPOJO(Plain Old Java Object)を使用します。この項では、Javaクラスを作成し、それらのクラスを基とするデータ・コントロールを生成する方法について説明します。アプリケーションのユーザー・インタフェース部分では、このデータ・コントロールを使用して、ユーザーにデータを表示します。

この項では、2つのJavaクラスを作成します。1つは従業員データを含むemployeeクラスで、もう1つは従業員のコレクションを供給するemployeeServiceクラスです。

最初にemployeeクラスを作成します。

  1. EmployeeView」プロジェクトを右クリックして、「New」→「Class」の順に選択します。

  2. New Galleryの起動
  3. New Java Classダイアログで、パッケージをmodelに設定してクラス名をEmployeeに設定し、「Finish」をクリックしてクラスを作成します。

  4. New Gallery
  5. コード・エディタで、次のプライベート変数を追加します。ヒント:public class Employee {のあとに新しい行を挿入します。

    private String name;
    private String email;
    private int salary;
    private Date hireDate;

  6. Date変数にカーソルを移動すると、警告に対する修正候補が表示されます。エラーの修正候補のリストが表示されます。ポップアップで「import 'Date' (java.util)」をクリックします。

    エディタ
  7. コードは次のようになります。

    エディタ
  8. 作業内容を保存します。

  9. 次に、2つのコンストラクタを生成します。1つ目のコンストラクタを生成するために、最後のプライベート変数宣言のあとのブランク行を右クリックし、「Source」→「Generate Constructors from Superclass」の順に選択します。デフォルトのまま「OK」をクリックしてコンストラクタを作成します。

    エディタ
  10. コードは次のようになります。

    エディタ
  11. 2つ目のコンストラクタを生成するために、1つ目のコンストラクタの閉じ括弧の直後で右クリックし、「Source」→「Generate Constructors using Fields」の順に選択します。デフォルトのまま「OK」をクリックしてコンストラクタを作成します。コードは次のように表示されます。

  12. エディタ
  13. 次は、フィールド・アクセッサを生成します。最後のコンストラクタの閉じ括弧の直後で右クリックし、「Source」→「Generate Getters and Setters for MAF」の順に選択します。「Select All」をクリックしてすべての変数を選択し、「OK」をクリックしてアクセッサを作成します。コードは次のように表示されます。

  14. Generate Accessors

    これでEmployeeクラスは完成です。次の手順では、従業員データを格納するEmployeeServiceクラスを作成します。

  15. 作業内容を保存します。

  16. 先ほどの手順と同様にしてJavaクラスを作成します。パッケージをserviceに設定し、クラス名前をEmployeeServiceにします(ヒント:「EmployeeView」を右クリックし、「New」→「Class」の順に選択します)。作成されたクラスは次のようになります。

  17. Create Java Class
  18. 次のコードでは、日付を取得するメソッドとともに従業員のリストを定義しています。このコード全体をEmployeeServiceクラスにコピーします。ヒント:開き括弧と閉じ括弧の間にコピーします。

        private List employeeList = null;

        public EmployeeService() {
          super();
        }

        public Employee[] getEmployees() {
          //This Method gets a list of the employees and their emails
          Employee[] employees = null;
          employeeList = new ArrayList();
          employeeList.add(new Employee("Bill", "bill@oracle.com",4000, getADate(2011,3,24,9,0) )) ;
          employeeList.add(new Employee("Gary", "gary@oracle.com", 5000, getADate(2007,2,24,9,0) )) ;
          employeeList.add(new Employee("Jeff", "jeff@oracle.com", 5500, getADate(2003,2,19,9,0) )) ;
          employeeList.add(new Employee("Joe", "joe@oracle.com", 4000, getADate(2012,2,13,9,0) )) ;
          employeeList.add(new Employee("Shay", "shay@oracle.com",6000, getADate(2002,2,21,9,0) )) ;
          employees = (Employee[]) employeeList.toArray(new Employee[employeeList.size()]);
          return employees;
        }

        private Date getADate(int y,int m, int d,int h, int mi) {
          Calendar c1 = Calendar.getInstance();
          c1.set(y, m, d, h, mi);
          Date retDate = c1.getTime();
          return retDate;
        }

    コードは次のようになります。

    Javaコード

    コードをコピーしただけで、インポートすべきクラスをエディタに認識させていないため、コードにmissing class errorのフラグが付けられるだけです。クラスのimportはこのあと追加します。

  19. 作業内容を保存します。

    importを追加するには、エディタの左側に表示されている警告アイコンを右クリックするか、エラーの原因となったコードの上にカーソルを移動します。

  20. まず、カーソルを(private List employeeList行の)Listの上に移動して、「import 'List' (java.util)」をクリックします。

    アプリケーション・ナビゲータ
  21. Employee(Import 'Employee' (model))、ArrayList(Import 'ArrayList' (java.util))、Date(Import 'Date' (java.util))、Calendar(Import 'Calendar' (java.util))に対してこの処理を繰り返します。
    コードは次のようになります。

    アプリケーション・ナビゲータ
  22. 作業内容を保存します。

  23. これで、アプリケーションに必要なデータを含む2つのJavaクラスを用意できました。以降の手順では、これらのクラスのデータ・コントロールを作成します。

  24. Project Explorerで「EmployeeService.java」を右クリックし、「Model Components」→「Create Data Control」の順に選択します。

    alt text
  25. デフォルト値のまま「Finish」をクリックしてデータ・コントロールを作成します。

  26. alt text
  27. 確認ダイアログで「OK」をクリックし、作業内容を保存します。

  28. 今度はData Control Managerが表示されます。EmployeeApplicationビューのデータ・コントロールとともに、先ほど作成したデータ・コントロールが表示されていることを確認します。

    alt text

  29. 作業内容を保存します。

  30. これでデータ・コントロールを定義できたので、アプリケーションのUI部分の作成を開始できます。

ステップ5:UIの作成とテスト

この項では、タスク・フローに作成したビュー・アクティビティに関連付けられているページに、作成したばかりのデータ・コントロールを追加します。

  1. 開いているエディタのタブをすべて閉じます。必ず必要というわけではありませんが、こうしたほうが、作業しているUIページ間のナビゲートがしやすくなります。

  2. エディタで「EmployeeList.amx」を開きます(ヒント:Project ExplorerでEmployeeList.amxをダブルクリックします)。

  3. タスク・フロー

    タスク・フロー

  4. パレットのDataタブで「EmployeeService」を展開します。

  5. ページの作成
  6. 最後の</amx:facet>タグの直後にemployeesアクセッサをドラッグし、List Viewコンポーネントとしてドロップします。

  7. エディタ
  8. Bind List Viewダイアログで、Formatには「Simple」を、Variationには2つ目のものを選択し、「Next」をクリックします。

  9. エディタ
  10. List Item Contentsセクションで、Divider Attributeをnameに、Divider ModeをFirst Letterに設定し、「Finish」をクリックします。

  11. alt text
  12. 作業内容を保存します。

  13. コード・エディタで、ヘッダーの「value」プロパティを選択し、値をEmployeesに変更します。これは、実行時機能のタイトルになる部分です。

  14. alt text

  15. 作業内容を保存します。

  16. コード・エディタで、primaryファセットの「amx:commandButton」をクリックします。

  17. Propertiesタブで、TextプロパティをGraphに設定します。ヒント:Propertiesタブが開いていない場合は、commandButtonのコードを右クリックして「Properties」を選択します。TextはCommonタブにあります。

    alt text
  18. 「Button Action」タブをクリックし、ActionをshowGraphに設定します。ヒント:値の選択アイコンを使用してActionの有効な値を表示し、その中から選択します。

    alt text

    alt text
  19. 作業内容を保存します。

    次は、従業員の給与を表示する棒グラフをGraphページに追加します。

  20. Project Explorerで「graph.amx」をダブルクリックしてエディタで開きます。

  21. alt text
  22. ページの実行時タイトルを設定するために、「header」ファセットを選択してValueプロパティをGraphに設定します。

    alt text

  23. パレットのDataタブで「EmployeeService」を展開します。

    ページの作成
  24. </amx:facet>タグの直後にemployeesアクセッサをドラッグし、「Chart」→「Bar」コンポーネントとしてドロップします。

  25. alt text
  26. レイアウトとスタイルをデフォルトのまま、Bind Bar Chartウィザードの「Next」をクリックします。

  27. alt text
  28. Add Attributesボタンを使用して、Barsプロパティに「salary」を、X Axisプロパティに「name」を選択します。「Finish」をクリックしてコンポーネントを作成します。

  29. alt text
  30. EmployeeListページに戻るボタンも設定する必要があります。コード・エディタで、primaryファセットの「CommandButton」をクリックします。PropertiesパネルでAction__backに設定します。

    alt text
  31. これで、2つのページ(EmployeeListとGraph)は完成です。

  32. 作業内容を保存します。

  33. 開いているタブをすべて閉じます。

  34. EmployeeView」→「MAF」の順にクリックして「MAF Feature Editor」をダブルクリックします。

    alt text
  35. 作成した機能がアプリケーションに登録されていることをMAF Featureエディタから確認します。

  36. Employees」機能を選択し、register applicationチェック・ボックスが選択されていることを確認します。

    alt text
  37. Help」機能を選択し、register applicationチェック・ボックスが選択されていることを確認します。

  38. alt text
  39. エディタのタブをすべて閉じ、作業内容を保存します。

  40. OEPEでMAFアプリケーションを構築する手順は、これですべて完了しました。次の項では、アプリケーションをデプロイしてテストします。

ステップ6:アプリケーションのデプロイとテスト

以降の手順では、デプロイメントの構成を作成し、Androidエミュレータにアプリケーションをデプロイします。

  1. MAFアプリケーションを開発するためのAndroid環境のセットアップと構成が完了していることを確認してください。完了していない場合は、セットアップのチュートリアルを実行してください。

    Androidエミュレータが稼働していない場合は、次の手順に従って起動します。すでに稼働している場合は、手順9に進んでください。

  2. Windowsエクスプローラを開き、SDKインストール・フォルダ内のSDKフォルダにナビゲートします。AVD Manager.exeをダブルクリックして開きます。

    Preferencesメニュー

  3. New」をクリックして新規のAndroid Virtual Deviceを作成し、プロパティに次の値を指定します。

    Check for Updates

    AVD Name = MAF
    Device = Nexus 4 (4.7", 768 x 1280; xhdpi)
    Target = Android 4.4.2 - API Level 19
    CPU/ABI = Intel Atom (x86)
    Skin = No skin
    Front Camera = Emulated
    Back Camera = Emulated
    Memory Options Ram = 512
    MiB Internal Storage = 1024 MiB
    SD Card = 1024 MiB
    Use Host GPU(チェックする)

  4. 残りはデフォルトのままにして「OK」ボタンをクリックします。

    別のデバイス・タイプも選択できますが、新しいデバイスほどリソース要件が高くなるため、マシンでRAMの問題が発生する可能性があることに注意してください。

    Check for Updates

  5. 新しいAVDに関する通知が表示されます。「OK」をクリックして通知を閉じます。

    Check for Updates

  6. 新しいAVDを選択して「Start」ボタンをクリックします。

    Check for Updates

  7. Launch Optionsペインの値はデフォルトのままにして「Launch」をクリックします。

  8. エミュレータが起動し、稼働し始めるまで、時間がかかる場合があります。CPUの速度によっては、2分程度かかる場合があります。

    Check for Updates
  9. Android Debug Bridge(adb)には、OEPEとエミュレータの間の通信チャネルがあります。コマンド・ウィンドウを開いてエミュレータを起動します(「スタート」→「ファイル名を指定して実行」→「cmd」)。

    Check for Updates
  10. コマンド・ウィンドウで<YourAndroidSDK>\sdk\platform-toolsにナビゲートします。

    alt text
  11. adb start-serverと入力して[Enter]を押します。

    alt text

    *daemon started successfully *と表示される場合は、プロセスが起動していてデプロイできる状態になっています。

  12. OEPEで「debug」ボタンをクリックし、「Debug Configurations」を選択します。

    alt text
  13. MAFApplication」を右クリックし、「New」を選択します。

    alt text
  14. Set the properties of the new configuration to the following:

    Name = MAF
    Assembly Project = Employee
    Target = Android 4.2.2 - API Level 19
    Device Emulator: (pick from the list) If an emulator is not available, click Refresh. If it is still not available, make sure it is running.

    alt text
  15. Debug」をクリックしてアプリケーションをエミュレータにデプロイします。使用しているシステムやアプリケーションの規模によって異なりますが、デプロイには数分かかります。デプロイが完了すると、BUILD SUCCESSFULというメッセージがLogウィンドウに表示されます。

    alt text
  16. Navigate to the emulator and follow any instructions there to get to the Home screen. Click the Application button in the middle bottom of the Home screen to open the list of available applications.

    alt text
  17. Appsページで「Employee」アプリケーションをクリックし、先ほど構築してデプロイしたアプリケーションを開きます。

    alt text
  18. アプリケーションが起動してemployeeListページが開き、データソースから取得された従業員のリストが表示されます。注:エミュレータの処理は実際のデバイスよりも遅く、アプリケーションのロードに時間がかかる場合があります。「Graph」をクリックしてGraphページを表示します。

  19. alt text
  20. Graphページが開き、全従業員の給与のグラフが表示されます。

  21. alt text

これで、チュートリアルの最初のパートは完了しました。次の項では、デバイス機能と直接統合する機能をアプリケーションに追加します。

Bookmark Print すべて表示 | すべて非表示

トップへ戻る
Copyright © 2014, Oracle and/or its affiliates.All rights reserved.