corner imagecorner image
FeaturesPluginsDocs & SupportCommunityPartners

ビジュアルモバイルデザイナのカスタムコンポーネント: モバイルアプリケーション用の待機画面の作成

Java ME アプリケーションが適切に動作するために、ネットワークへの接続が必要になることがよくあります。ところが、ワイヤレスネットワークは現在でも比較的低速です。ネットワーク接続やデータ転送を待機するバックグラウンドタスクによってアプリケーションが一時停止した場合に、表示画面が完全に固まってしまったのか、中止してあとでやり直したほうがいいのか、判断に迷うことがあります。このようなユーザーにとって不愉快で、ありがちな事態に、開発者はどのように対処したらよいでしょうか。

答えは「待機画面」を追加することです。待機画面では、ユーザーがバックグラウンド作業 (ネットワークへの接続など) のブロックを実行したり、作業の進捗状況を表示したり、アプリケーションが正常に動作中であることをユーザーに通知するメッセージを画面に表示することができます。このチュートリアルでは、ビジュアルモバイルデザイナ (VMD) を使用して、カスタマイズ可能な待機画面カスタムコンポーネントを含む待機画面の作成を簡素化し、アプリケーションフローに追加できます。

NetBeans でのモバイルアプリケーション開発に習熟していない場合、次に進む前に「NetBeans Java ME MIDP 開発のクイックスタートガイド」から始めることをお勧めします。

目次

このページの内容は NetBeans IDE 6.1、6.5、および 6.7 が対象です

要件

このチュートリアルを完了するには、次のソフトウェアとリソースが必要です。

ソフトウェアまたはリソース 必須バージョン
NetBeans IDE と Java ME version 6.1 以上
Java Development Kit (JDK) version 6 または
version 5

はじめに: 待機画面コンポーネントの動作方法

待機画面コンポーネントのためのバックグラウンドタスクの作成には、2 種類の方法があります。取消可能タスクインタフェースを実装するクラスを記述するか、または簡易取消可能タスクリソースを使用できます。setTask() メソッドを使用して、バックグラウンドタスクを待機画面に割り当てることができます。

待機画面コンポーネントでは、バックグラウンドタスクの完了時に、表示可能な別のオブジェクトへの切り替えが自動的に行われます。タスクが正常に終了した場合、待機画面は setNextDisplayable() メソッドによって提供される画面に切り替わります。タスクが正常に終了しなかった場合、待機画面は setFailureDisplayable() メソッドによって提供される画面に切り替わります。デフォルトの表示可能なオブジェクトが設定されていない場合、待機画面は setNextDisplayable() メソッドで指定される画面に切り替わります。次に表示可能な画面が設定されていない場合、待機画面は以前に表示された画面に戻ります。

このコンポーネントは、MIDP 2.0 デバイスプロファイルがサポートされたアプリケーションでのみ使用できます。

サンプルアプリケーションのインストールと実行

始める前に、チュートリアルの最終結果を確認します。

次の手順で waitscreenexample サンプルアプリケーションをインストールします。

  1. waitscreen.zip をダウンロードします。
  2. ファイルを展開します。
  3. IDE で、「ファイル」>「プロジェクトを開く」を選択し、展開したファイルがあるフォルダを選択します。
  4. 「プロジェクト」ウィンドウを開きます。画面は次のようになります。
  5. WaitScreenExample ファイルが表示された「プロジェクト」ウィンドウ

  6. 「プロジェクト」ウィンドウでプロジェクトノードを右クリックし、「プロジェクトを実行」を選択するか、F6 キーを押します。アプリケーションが実行されると、エミュレータウィンドウが開き、デフォルトのデバイスエミュレータでアプリケーションが実行されるところが表示されます。
  7. 「エミュレータ」ウィンドウで「起動」の下のボタンをクリックします。エミュレータに NetBeans Web サイトの URL アドレスである http://netbeans.org が表示されます。
  8. 「OK」の下のボタンをクリックします。通信時間を使用してよいかどうかを尋ねる画面が表示されます。
  9. 「Yes」の下のボタンをクリックして続行します。エミュレータで Web サイトへの接続が試行され、待機画面が表示されます。

    サンプル待機画面アプリケーションが表示された DefaultColorPhone エミュレータ

  10. エミュレータを接続したら、アプリケーションを閉じます。

待機画面カスタムコンポーネントを使用したモバイルアプリケーションの作成

待機画面コンポーネントが動作するところを確認できたので、最初に戻ってこのアプリケーションを作成します。アプリケーションを作成するには、次の手順を実行します。

  1. WaitScreenExample プロジェクトの作成
  2. MyWaitScreen プロジェクトにパッケージとビジュアル MIDlet を追加
  3. MyWaitScreenMIDlet へのコンポーネントの追加
  4. 画像リソースの追加
  5. 了解コマンド、戻るコマンド、および終了コマンドをテキストボックスコンポーネントと待機画面コンポーネントに追加
  6. アプリケーションフローを作成
  7. 待機画面のバックグラウンドタスクの作成
  8. プロジェクトを実行する

注: このプロジェクトを作成する前に、前の手順で作成した WaitScreenExample のサンプルプロジェクトを必ず終了または削除してください。NetBeans IDE では、同じ名前のプロジェクトを同時に開くことはできません。

WaitScreenExample プロジェクトの作成

  1. 「ファイル」>「新規プロジェクト」(Ctrl-Shift-N) を選択します。「カテゴリ」から「Java ME」を選択します。「プロジェクト」で「モバイルアプリケーション」を選択して、「次へ」をクリックします。
  2. 「プロジェクト名」フィールドに「WaitScreenExample」と入力します。「プロジェクトの場所」をシステム上の任意のディレクトリに変更します。このディレクトリを $PROJECTHOME とします。
  3. 「Hello MIDlet を作成」チェックボックスの選択を解除します。「次へ」をクリックします。
  4. 「エミュレータプラットフォーム」は、「Sun Java Wireless Toolkit 2.5.2」を選択したままにしておきます。「完了」をクリックします。

WaitScreenExample プロジェクトへのパッケージとビジュアル MIDlet の追加

  1. 「プロジェクト」ウィンドウで WaitScreenExample プロジェクトを選択し、「ファイル」>「新規ファイル」(Ctrl-N) を選択します。「カテゴリ」から「Java」を選択します。「ファイルの種類」として「Java パッケージ」を選択します。「次へ」をクリックします。
  2. 「パッケージ名」フィールドに「waitscreenexample」と入力します。「完了」をクリックします。
  3. 「プロジェクト」ウィンドウで waitscreenexample パッケージを選択し、「ファイル」>「新規ファイル」(Ctrl-N) を選択します。「カテゴリ」にある「MIDP」を選択します。「ファイルの種類」として「ビジュアル MIDIlet」を選択します。「次へ」をクリックします。
  4. 「MIDlet 名」フィールドと「MIDP クラス名」フィールドに「MyWaitScreenMidlet」と入力します。「完了」をクリックします。

MyWaitScreenMidlet へのコンポーネントの追加

「ビジュアル MIDlet」を選択してビジュアルモバイルデザイナ (VMD) を開きます。VMD ウィンドウ最上部の「フロー」ビューをクリックしてフローデザイナを開き、ここでアプリケーションフローを設計します。

  1. ビジュアル MIDlet を「フロー」ビューに切り替えます。次の画面コンポーネントをコンポーネントパレットからドラッグし、フローデザイナにドロップします。
    • テキストボックス
    • 待機画面
    • リスト
    • 警告
  2. 「textBox1」を選択します。コンポーネントパレットの下の「プロパティー」ウィンドウで、「タイトル」プロパティーを「Text Box」に変更します。
  3. 次のコンポーネントに対し、同じ操作を実行してタイトルを変更します。
    • waitScreen1 を「Wait Screen」に変更
    • List1 を「List」に変更
    • Alert1 を「Alert」に変更
  4. 次の各コンポーネントの「文字列」プロパティーを使用して、値を変更します。
    • textBox1 の文字列を「http://netbeans.org」に変更
    • alert1 の文字列を「Connection Failed」に変更
  5. WaitScreen1 のテキストプロパティーを「Please Wait...」に変更

「フロー」ビューは、次の画像のように表示されるはずです。

コンポーネントアイコンが表示された「フロー」ビュー

各コンポーネントの横に、オレンジ色の四角形が、1 つまたは複数あることに注目してください。これらを使用して、アプリケーションフローの順序に合わせてコンポーネントを接続することができます。waitScreen1 の右側に 2 つの四角形があることにも注目してください。

画像リソースの追加

このセクションでは、待機画面と警告画面に使用する画像を追加します。

  1. alert.png ファイルと sandglass.png ファイルをダウンロードして $PROJECTHOME/src/waitscreenexample フォルダにコピーします。
  2. 「リソース」フォルダを右クリックし、「追加」>「画像」を選択します。
  3. 「image1」を選択します。「プロパティー」ウィンドウで「リソースのパス」プロパティーを選択し、省略 (...) ボタンをクリックします。このダイアログで「alert.png」を選択します。
  4. 「alert1」コンポーネントを選択します。
  5. alert1 の「プロパティー」ウィンドウで「画像」プロパティーを見つけ、一覧から「image1」を選択します。この操作によって、alert.png 画像が alert1 コンポーネントにバインドされます。
  6. 手順 2 から 5 を繰り返して image2 を追加し、「リソースのパス」を sandglass.png に設定し、これを waitScreen1 コンポーネントにバインドします。

了解コマンド、戻るコマンド、および終了コマンドをテキストボックスコンポーネントと待機画面コンポーネントに追加

  1. コンポーネントパレットの「コマンド」セクションで了解コマンドを選択します。このコマンドを textBox1 にドラッグ&ドロップします。
  2. コンポーネントパレットの「コマンド」セクションで戻るコマンドを選択します。このコマンドを list1 にドラッグ&ドロップします。
  3. コンポーネントパレットの「コマンド」セクションで終了コマンドを選択します。このコマンドを list1 にドラッグ&ドロップします。

アプリケーションフローの作成

これで、アプリケーションフローを作成する準備ができました。

  1. 「フロー」ビューで、モバイルデバイスの開始ポイントをクリックし、textBox1 コンポーネントまでドラッグします。
  2. 同様に、次の図に示すようにコンポーネントを接続します。

    Mobile Device、textBox1、waitScreen1、list1、Mobile Device の順に接続されたフローデザイナ画面。エラーコマンドから alert1 に接続したあとで、list1 に接続する

待機画面のバックグラウンドタスクの作成

  1. 「リソース」を右クリックし、「追加」>「簡易取消可能タスク」を選択します。
  2. 「フローデザイナ」ウィンドウの「waitScreen1」コンポーネントを選択します。
  3. waitScreen1 の「プロパティー」ウィンドウで「タスク」プロパティーをクリックし、ドロップダウンメニューから「simpleCancellableTask1」を選択します。これで、simpleCancellableTask1 が waitScreen1 コンポーネントのバックグラウンドタスクになりました。
  4. VMD ウィンドウ最上部の「ソース」ボタンをクリックします。アプリケーションのソースコードが開きます。
  5. MyWaitScreenMIDlet ソースコードの public void destroyapp(boolean unconditional) { } のあとに、次のコードをペーストします。
  6.       private void getServerInfo() throws IOException {
          String url = textBox1.getString();
          list1.deleteAll();
          /**
          * HttpConnection を開く
          */ 
          HttpConnection hc = (HttpConnection) Connector.open(url);
    
          /**
          * 索引でヘッダーフィールドキーとヘッダーフィールドを
          * 取得し、list1 に挿入する
          */
          list1.setTitle(hc.getURL());   
          for (int i=0;hc.getHeaderFieldKey(i)!=null; i++){
          list1.insert(0,hc.getHeaderFieldKey(0)+" :"+hc.getHeaderField(0),null);       
          }     
          /**
          * 終了時間 ...
          */
          hc.close();
          } 
    
  7. SimpleCancellableTask1 の「プロパティー」ウィンドウで「実行」プロパティーを選択します。
  8. 「コードを挿入」ウィンドウに「getServerInfo();」と入力します。

プロジェクトの実行

  1. F6 キーを押して主プロジェクトを実行します。

    「実行」>「主プロジェクトを実行」を選択する方法もあります。

待機画面コンポーネントと簡易取消可能タスクリソースの詳細

NetBeans IDE には、VMD で使用できるコンポーネントと同様に、待機画面コンポーネントや簡易取消可能タスクリソースのコンポーネントに関する API ドキュメント (javadocs) が用意されています。javadocs を読むには、次の手順に従います。

  1. 「ヘルプ」>「Javadoc 参照」>「NetBeans MIDP コンポーネント」を選択します。このアクションによって、ファイルがブラウザに表示されます。
    • 待機画面コンポーネントの詳細を参照するには、「org.netbeans.microedition.lcdui」リンクをクリックします。次に、「Class Summary」表の「WaitScreen」リンクをクリックします。
    • 簡易取消可能タスクの詳細を参照するには、「org.netbeans.microedition.util」リンクをクリックします。次に、「Class Summary」表の「SimpleCancellableTask」リンクをクリックします。

その他の NetBeans Java ME カスタムコンポーネントチュートリアル