この項では、デバイスのカメラと統合したり、takePictureページに移動したりするためのボタンをempListページに追加します。 takePictureページでは、別の写真を撮るためのボタンと、empListページに戻るためのボタンを追加します。 また、撮ったばかりの写真を表示するイメージも追加します。
iOSのシミュレータは、カメラが含まれていないので、チュートリアルのこのステップは、Androidのエミュレータにデプロイする必要があります。このチュートリアルのステップでは、iOSのシミュレータでテストすることができませんが、Mac環境で動作はします。Androidのエミュレータをインストールしたい場合、Android環境の設定および構成のチュートリアルに従ってください。
2番目のステップ(Email送信のためのJavaコード追加)はiOSのシミュレータ、あるいはAndroidのエミュレータのどちらでも動作します。
-
「EmpTaskFlow.xml」を開きます。 (ヒント:アプリケーション・ナビゲータで「EmpsTaskFlow.xml」をダブルクリックします。)
-
タスク・フロー上に新しいViewコンポーネントをドラッグし、それをtakePictureという名称にします。そして、empListからtakePictureビューにControl Flowケースを追加します。それをtakePixという名称にします。
作業内容を保存します。
-
「EmpList」をダブルクリックして、エディタで開きます。
-
コンポーネント・パレットから「Button」コンポーネントをStructureペイン内のPanel Itemにドラッグします。

-
ボタンのTextをTake a Pictureに、ActionをtakePixに設定します。
-
ここからは、takePictureページで作業します。 エディタで「takePicture」ページを開き、デフォルト値のままとします。 (ヒント:EmpsTaskFlow.xmlまたはアプリケーション・ナビゲータのどちらかで「takePicture.amx」をダブルクリックします。)
-
headerファセットの下にあるoutputTextコンポーネントを探し、その値をTake a Pictureに設定します。
-
「Data Controls」パレットを展開して、Device Featuresを表示します。
-
「getPicture(int,int,int,boolean,int,int,int)」を展開します。 getPictureメソッドに必要なパラメータに注意してください。 getPictureメソッドでは、コール元は、デバイスのさまざまな側面を制御するメソッドのパラメータを設定できます。 たとえば、メソッド・コールでは、結果の品質、高さ、および幅を設定できます。
-
「getPicture(int,int,int,boolean,int,int,int)」をStructureペイン内のPanel Pageにドラッグし、MAF Buttonとしてドロップします。
-
Edit Action Bindingダイアログ・ボックスで、パラメータの次の値を入力し、「OK」をクリックしてボタンを作成します。
Name Value quality 50 destinationType 1 sourceType 1 allowEdit true encodingType 1 targetWidth 200 targetHeight 200
-
ポップアップ・ペインを使用すると、メソッドは、デバイスへのアクセスを許可するように求められます。Grant Camera Access to this Applicationが選択されていることを確認し、OKをクリックします。

-
Data Controlsパレットで、getPictureメソッドからの「String」戻り値をStructureペイン内のPanel Pageにドラッグし、MAF Output Textとしてドロップします。
-
MAF AMX General Controlsで、コンポーネント・パレットから「Image」コンポーネントをStructureペイン内のPanel Pageにドラッグします。
-
Structure Windowで、Output Textコンポーネントを選択し、そしてProperties Windowsで、Valueプロパティからバインディング・コードをコピーします。
-
イメージ・コンポーネントを選択し、プロパティ・インスペクタで、バインディング・コードをSourceプロパティに貼り付けます([Ctrl]+[V]を使用します)。
-
コード・エディタまたはStructureペインのどちらかで「outputTextフィールド」を選択し、削除します。
-
Panel PageのFacet - primaryノードで「Button」コンポーネントを選択します。
プロパティ・インスペクタを使用して、TextをBackに、Actionを__backに設定します。
-
作業内容を保存します。
前に行ったのと同様に、アプリケーションをデプロイします。 (ヒント:JDeveloperのApplicationメニューから、「Deploy」→「Android2 to Android emulator」を選択します。)
それが動作していることを確認するには、Androidエミュレータにこれをデプロイする必要がありますので、iOSシミュレータではカメラが含まれていないことを思い出してください。
また、エミュレータがすでに起動し実行されていることも確認します。
-
メイン・ページの「Applications」ボタンをクリックし、「Employees」アプリケーションをクリックします。

-
アプリケーションが開いたら、「Take a Picture」をクリックします。 これにより、エミュレータ上でカメラ機能が開きます。

-
カメラ・エミュレータには、市松模様の背景の上を動き回る緑のボックスがあります。 シャッター・ボタン(フッターの中央にある青い円)をクリックして写真を撮ります。

-
フッターの右側にあるチェックマークをクリックして、画像を受け入れます。
ページとコードは次のようになります。
次の手順では、getPictureメソッドの戻り値にバインドされた出力テキスト・コンポーネントを追加します。 確かに、カメラからの戻り値は、テキストではなく写真です。 出力テキスト・コンポーネントを追加するのは、メソッドの戻り値へのバインディングを作成することが目的です。 出力テキスト・コンポーネントを追加した後、イメージ・コンポーネントを追加し、そのバインディングをイメージ・コンポーネントのソースになるようにコピーします。 バインディングをコピーした後、テキスト・フィールドを削除します。
デバイス・カメラが閉じ、アプリケーションに戻ります。 その後、アプリケーションにより、TakePictureページに追加したイメージ・コンポーネントに写真が表示されます。
これで、MAFを使用した、標準のデバイス機能とのやり取りが正常に完了しました。 次の項では、デバイスの電子メール機能とやり取りするJavaプログラムを追加します。
この項では、プログラムで電子メールを送信するJavaコードを追加することによって、アプリケーションを拡張します。 デバイス・データ・コントロールをページにドラッグするのではなく、Javaコードからデバイス機能にアクセスします。
-
JDeveloperのエディタで「takePicture」ページを開きます。
-
コンポーネント・パレットから「Button」をPanelPageにドラッグします。 このボタンを使用して、電子メールを送信するメソッドをコールします。
-
TextプロパティをSend Emailに設定します。
-
Data ControlsパレットからDevice Featuresデータ・コントロールを使用するのではなく、JavaBeanを作成して、デバイス機能をコールします。 JavaBeanとメソッドを作成するには、Action Listenerプロパティの右にある下矢印をクリックし、「Edit」を選択します。
-
Edit Property: Action Listenerダイアログ・ボックスで、Managed Beanリストの隣にある「New」ボタンをクリックします。
-
Create Managed Beanダイアログ・ボックスで、次のプロパティ値を設定し、「OK」をクリックします。
Name Value Bean Name: backingPic Class Name BackingPic Scope view
-
Methodリストの隣にある「New」ボタンをクリックして、新しいメソッドを作成します。
-
Method NameにsendEmailと入力し、「OK」をクリックします。
-
「OK」をクリックして、Javaクラスとメソッドを作成します。
-
アプリケーション・ナビゲータで「BackingPic.java」をダブルクリックして、エディタで開きます。 (ヒント:「Application Sources」→「mycomp.mobile」を展開します。)
-
sendMail(ActionEvent actionEvent)メソッドを見つけ、そのメソッドの内部にDeviceManagerFactoryというコードを入力します。 JDeveloperから、DeviceManagerFactoryに対して推奨されるインポートが示されます。 [Alt]+[Enter]を押して、oracle.adf.model.datacontrols.device.DeviceManagerFactoryのインポート文を追加します。

-
DeviceManagerFactoryの最後にピリオド(.)を入力すると、JDeveloperから、このクラスの使用可能なメソッドのリストが提案されます。 「getDeviceManager()」をクリックし、[Enter]キーを押して、メソッド・コールをコードに追加します。

-
「getDeviceManager()」メソッドをクリックし、[Ctrl]+[Alt]+[V]を押して、Introduce Variableダイアログ・ボックスを開きます。 このダイアログ・ボックスでは、このメソッドに追加する変数と型が提案されます。 「OK」をクリックして、デフォルト値のままにします。

-
deviceManager宣言のすぐ下にある新しい行に、deviceManager.sと入力します。 JDeveloperから、使用可能なメソッドのリストが提案されます。 「sendMail(String,String,String,String,String,String,String)」を選択して、メソッド・コールをコードに追加します。
-
sendMailメソッドの下のData Controlsパレットに表示されるパラメータの名前に注意してください。 このパラメータのリストをガイドとして使用して、このメソッド・コールでの値を次のように設定します。
引数 値 to "Jeff @oracle.com" cc "" subject "An Email" body "Hello from me." bcc "" attachments "" mimeTypes ""
-
作業内容を保存します。
カメラと同じように、デバイスの電子メールへのアプリケーションのアクセスを許可する必要があります。コード内の電子メール機能を追加したので、手動でこの変更を行う必要があります。maf-application.xml(Application Resourcesウィンドウ: デスクリプタ - ADF META-INF)に戻ってナビゲートし、Device Accessタブで、E-mailsチェック・ボックスを選択します。
-
前に行ったのと同様に、アプリケーションをエミュレータにデプロイします。 (ヒント:「Application」→「Deploy」を選択します。)
-
デプロイメントが完了したら、エミュレータの「Applications」ボタンをクリックし、「Employees」アプリケーションをクリックします。
-
「Take a Picture」ボタンをクリックします。

-
カメラ機能で、シャッター・ボタンをクリックし、チェックマーク・アイコンをクリックして写真を受け入れます。
-
次のページ(TakePictureページ)で、「Send Email」をクリックします。
-
Androidエミュレータで電子メールを使用するための構成がなされていない場合、コードで指定された値が呼び出され、取り込まれます。送信するためにヘッダ上のボタン(folded airplane)をクリックします。
このチュートリアルでは、MAFアプリケーションを作成して、モバイル・デバイスまたはエミュレータにデプロイしました。 このアプリケーションには、基本的なフォーム、Webサービスのコール、およびカメラや電子メール・クライアントなどのデバイス機能とのやり取りが含まれています。
すべて表示 |
すべて非表示

