Unofficial
"CLDC 1.1
+ MIDP 2.0"
API Reference.
(日本語版)

javax.microedition.midlet
クラス MIDlet

java.lang.Object
  上位を拡張 javax.microedition.midlet.MIDlet

public abstract class MIDlet
extends Object

MIDlet は MID Profile アプリケーションです。 アプリケーション管理ソフトウェアが MIDlet をコントロールし、アプリケーション・ディスクリプタから設定を取得し、状態変更に関する通知および要求することを可能にするために、アプリケーションはこのクラスを継承しなければなりません。 このクラスのメソッドは、アプリケーション管理ソフトウェアが MIDlet を作成、開始、休止、破棄することを可能にします。 MIDlet は、実行および制御をアプリケーション管理ソフトウェアが行うために設計されたインタフェースを持つ、1セットのクラスです。 「状態(state)」によって、アプリケーション管理ソフトウェアは実行環境内の複数の MIDlet の活動を管理します。 いずれかの MIDlet を個別に開始および休止することにより所定の時間にアクティブな MIDlet を選択することができます。 アプリケーション管理ソフトウェアは、MIDlet の状態を維持し、状態を変更するために、MIDlet のメソッドを呼び出します。 MIDlet は、アプリケーション管理ソフトによって呼び出される、内部の活動およびリソースの使用状況を更新するこれらのメソッドを実装します。 MIDlet はいくつかの状態変更を自身で始めることができ、適切なメソッドの呼び出しによりそれらの状態変更をアプリケーション管理ソフトウェアに通知します。

注釈:このメソッドの呼び出しによって、インタフェース・シグナル状態を変更します。 状態変更を行うメソッドの呼び出しが返るまで、状態変更は完全ではありません。 これらのメソッドは迅速に処理が返されることが意図されています。

導入されたバージョン:
MIDP 1.0

コンストラクタの概要
protected MIDlet()
          サブクラスのために保護されたコンストラクタです。
 
メソッドの概要
 int checkPermission(String permission)
          指定したパーミッションのステータスを取得します。
protected abstract  void destroyApp(boolean unconditional)
          MIDlet破棄状態に移行し、終了することを伝えます。
 String getAppProperty(String key)
          アプリケーション管理ソフトから指定された名前のプロパティを取り出すためのメカニズムを MIDlet に提供します。
 void notifyDestroyed()
          MIDlet が破棄状態へ移行し始めたことをアプリケーション管理ソフトウェアに通知するために使用します。
 void notifyPaused()
          MIDlet がアクティブ状態から休止状態に入ることをアプリケーション管理ソフトウェアに通知します。
protected abstract  void pauseApp()
          その MIDlet が休止し、休止状態に入ることを通知します。
 boolean platformRequest(String URL)
          示した URL をデバイスが扱う(例えば、表示またはインストール)ように要求します。
 void resumeRequest()
          アクティブ状態へ移行したいことを MIDlet が示すためのメカニズムを提供します。
protected abstract  void startApp()
          その MIDlet が開始し、アクティブ状態になったことを通知します。
 
クラス java.lang.Object から継承されたメソッド
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

コンストラクタの詳細

MIDlet

protected MIDlet()

サブクラスのために保護されたコンストラクタです。 アプリケーション管理ソフトウェアは MIDlet の作成と MIDlet 作成の制限に責任を持ちます。 MIDlet は他の MIDlet の作成を試みてはなりません。

例外:
SecurityException - アプリケーション管理ソフトウェアによる MIDlet の作成ではない場合に throw します。
メソッドの詳細

startApp

protected abstract void startApp()
                          throws MIDletStateChangeException

その MIDlet が開始し、アクティブ状態になったことを通知します。 アクティブ状態の MIDlet は、リソースを所有することができます。 MIDlet休止状態の場合にメソッドが呼び出されます。

継続的な失敗と一時的な失敗の2種類の失敗はサービスが開始するのを防ぐことができます。 一時的な失敗は、MIDletStateChangeException 例外を throw すべきです。 一時的ではない失敗については、notifyDestroyed() メソッドを呼び出すべきです。

実行時例外が startApp の処理中に発生すると、MIDlet はすぐに破棄されます。 destroyApp はクリーンナップを MIDlet に許容すると呼び出されます。

例外:
MIDletStateChangeException - MIDlet を現在開始することができないが、今後開始することができる可能性がある場合に throw します。

pauseApp

protected abstract void pauseApp()

その MIDlet が休止し、休止状態に入ることを通知します。 休止状態の MIDlet はリソースを開放し、不活性となります。 MIDletアクティブ状態の場合に限り、このメソッドは呼び出されます。

もし、この destroyApp の処理中に実行時例外が throw された場合、直ちに破棄状態へ移行します。 この際、クリーンナップが許可されるなら、MIDletdestroyApp(boolean) メソッドを呼び出します。


destroyApp

protected abstract void destroyApp(boolean unconditional)
                            throws MIDletStateChangeException

MIDlet破棄状態に移行し、終了することを伝えます。 破棄状態では、MIDlet はリソースを全て開放し、(必要に応じて)全ての永続的な状態を保存します。 このメソッドは休止状態あるいはアクティブ状態から呼ばれます。

MIDlet は、終了する前に、リソースを開放するか、必要な情報あるいは状態を保存など、要求された全てのオペレーションを実行完了しなければなりません。

注釈: MIDlet は、MIDletStateChangeException を throw することにより、破棄状態へ移行しないように要求することができます。 ただし、これが有効なのは unconditionalfalse の場合のみです。 この値が true の場合、MIDlet はこのメソッドがどのように終了するかに関わらず、破棄状態へ移行すると仮定します。 それが無条件の要求ではない場合、MIDletMIDletStateChangeException を throw することにより、現在の状態に留まることを望んでいることを示すことができます。 この要求が受け入れられると、destroyApp メソッドを後に再び呼び出します。

もし、この destroyApp の処理中に実行時例外が throw された場合、その実行時例外は無視して破棄状態へ移行します。

パラメータ:
unconditional - 必ずクリーンナップおよびリソースの開放を行う必要がある場合は true を、破棄状態に必ずしも遷移しなくてもよい場合は false を渡します。 この場合、MIDlet破棄状態に移行しないことを望む場合には MIDletStateChangeException を throw します。
例外:
MIDletStateChangeException - MIDlet が実行しつづけることを望む場合に throw します。 この要求は unconditionaltrue の場合、無視されます。

notifyDestroyed

public final void notifyDestroyed()

MIDlet が破棄状態へ移行し始めたことをアプリケーション管理ソフトウェアに通知するために使用します。 アプリケーション管理ソフトウェアは MIDlet の destroyApp メソッドを呼び出すことはありません。そして、MIDlet により保持された全てのリソースは再利用可能であるとみなします。 MIDlet は、そのために必要とされるオペレーション(リソースの開放やクリーンナップ処理等)を実行する必要があるのであれば、destroyApp(boolean) メソッドを呼び出されたのと同じように処理を記述しなければなりません。


notifyPaused

public final void notifyPaused()

MIDlet がアクティブ状態から休止状態に入ることをアプリケーション管理ソフトウェアに通知します。 MIDlet破棄状態へ移行する場合および MIDlet がまだ開始されていない場合は、このメソッドの呼び出しは効果がありません。

アクティブ状態の場合、MIDlet によって呼び出すことができます。

MIDletnotifyPause() メソッドを呼び出す場合、今後再びアクティブ状態に移行する際に startApp() メソッドを呼び出します。 また、自身が破棄状態に移行する際には destroyApp(boolean) メソッドが呼び出されます。

アプリケーションがそれ自身を休止すると、それが再度アクティブ状態になるという要求のためには resumeRequest を呼ぶ必要があります。


getAppProperty

public final String getAppProperty(String key)

アプリケーション管理ソフトから指定された名前のプロパティを取り出すためのメカニズムを MIDlet に提供します。 プロパティはアプリケーション・ディスクリプタ・ファイルとマニフェストの組み合わせから取り出します。 信頼されたアプリケーションにおいて、マニフェストにおける値はアプリケーション・ディスクリプタのものによって上書きされてはなりません。 両者が異なると、MIDlet はデバイスに対してインストールされません。 信頼されていないアプリケーションにおいて、マニフェストにおける属性と同じ名前がディスクリプタの属性にあるなら、ディスクリプタからの値を使用し、マニフェストからの値は無視します。

パラメータ:
key - プロパティの名前を渡します。
戻り値:
対応するプロパティの値が文字列で返します。 対応する値が存在しなければ null を返します。
例外:
NullPointerException - namenull を渡すと throw します。

resumeRequest

public final void resumeRequest()

アクティブ状態へ移行したいことを MIDlet が示すためのメカニズムを提供します。 アプリケーション管理ソフトウェアはアクティブ状態にどのアプリケーションを移行させるか決定するために、このメソッドの呼び出しを使用することができます。

アプリケーション管理ソフトウェアがこのアプリケーションをアクティブ状態へ移行させることを決定した場合、startApp() メソッドを呼び出します。

このメソッドを呼び出すアプリケーションは一般に休止状態にあります。 休止状態でも、アプリケーションはタイマーまたはコールバックのような非同期イベントを扱うことができます。


platformRequest

public final boolean platformRequest(String URL)
                              throws ConnectionNotFoundException

示した URL をデバイスが扱う(例えば、表示またはインストール)ように要求します。

プラットフォームに利用可能な適切な能力とリソースがあるなら、プラットフォームは適切なアプリケーションをフォアグラウンドに移動し、バックグラウンドに実行中の MIDlet スイートをキープしたまま、ユーザーはコンテンツと対話できるようにすべきです。 プラットフォームに利用可能な能力またはリソースがなければ、プラットフォームは URL 要求の扱いを MIDlet スイートが終了するまで待つかもしれません。 このような場合、要求した MIDlet スイートの終了時に、ユーザーがコンテンツと対話できるように、プラットフォームはそのときに適切なアプリケーション(もしも1つ存在しているなら)をフォアグラウンドに移動しなければなりません。

このメソッドはブロックしません。 さらに、このメソッドは複数の要求をキューには入れません。 要求が扱われる前に MIDlet スイートが終了しなければならないプラットフォームでは、最後の要求だけをプラットフォームは扱わなければなりません。 同時に MIDlet スイートと要求を扱うことができるプラットフォームでは、直ちに MIDlet スイートの各要求を扱うプラットフォーム・ソフトウェアに渡さなければなりません。

指定された URL が MIDlet スイート(アプリケーション・ディスクリプタまたは JAR ファイルのどちらか)への参照なら、要求を処理するアプリケーションは指定の名前のパッケージをインストールするという要求としてそれを解釈しなければなりません。 この場合、プラットフォームの通常の MIDlet スイートのインストール処理を使用べきです。そしてユーザーに処理を制御させなければなりません(ダウンロード、および/または、インストールの中止などを含む)。 インストールされる MIDlet スイートが現在動作している MIDlet スイートのアップデートであれば、アップデートを実行する前に、プラットフォームは現在動作している MIDlet スイートを最初に停止させなければなりません。 プラットフォームによっては、常にインストールを開始する前に現在動作している MIDlet スイートを止めることを必要とすることがあります。

指定された URL の形式が tel:<番号>であれば、RFC2806 で指定されるように、プラットフォームは音声通話を開始するという要求として、これを解釈しなければなりません。 プラットフォームに1つの"電話"を扱うアプリケーションが提供されているならば、その要求を渡さなければなりません。 "電話"アプリケーションが存在するなら、ローカルおよびグローバルな電話をセットアップし、DTMF 送信ダイヤルを実行できなければなりません。 特に RFC2806 の要素が実装されなければならない全てではありません(特に状況を理解している端末における領域指定子、あるいはその他のいかなる要求事項)。 また、ISDN- サブアドレス、サービス・プロバイダ、および将来の拡張は無視することがあります。 ダイヤル中のポーズはいくつかの電話サービスでは使用することができません(典型的なアナログ電話では使用できますが、デジタル化された回線では1度にダイヤル内容を送信するため、ポーズの概念が存在しないためです)。

デバイスは、上記でリストアップされた要求事項に加えて、追加の URL 体系をサポートすることを選択することができます。

このメソッドを使用する多くの経路(例えば、ワイヤレス・ネットワークを通じてデータを転送する、または音声通話を開始する)が、多くのユーザーに対して金銭的な影響を及ぼすことがあります。 したがって、プラットフォームは動作を行う前に各要求を明らかに肯定を承認することをユーザーに提示しなければなりません。 実装における自由があるため、「心地よいユーザー経験」は確保できます。 例えば、いくつかのプラットフォームはユーザーに許可を求める各要求のためにダイアログを提示するかもしれません。他のプラットフォームでは適切なアプリケーションを実行し、URL または電話番号をフィールドに設定するかもしれませんが、ユーザーが明らかにロードをクリックするかダイヤルボタンを押すまで、アクションを行いません。

パラメータ:
URL - プラットフォームがロードする URL を渡します。 空の文字列(null はない)は、全ての保留中の要求を取り消します。
戻り値:
MIDlet スイートが先に終了しなければ内容を取得することができないのであれば true を、そうでなければ false を返します。
例外:
ConnectionNotFoundException - プラットフォームが要求された URL を扱うことができないのであれば throw します。
導入されたバージョン:
MIDP 2.0

checkPermission

public final int checkPermission(String permission)

指定したパーミッションのステータスを取得します。 デバイス上のどの API もそのとき要求された特定アクセスのパーミッションを定義していないなら、拒否するようにそれを報告しなければなりません。 実行時にユーザーとの対話を必要とするかもしれないため、パーミッションのステータスが不明であるなら、それは未知であると報告しなければなりません。

パラメータ:
permission - 拒否、許容、あるいは未知をチェックする対象を渡します。
戻り値:
許可が拒否されるなら 0 ; 許可が許容されるなら 1 ; 許可が未知であるなら 2 をステータスとして返します。
導入されたバージョン:
MIDP 2.0

Unofficial
"CLDC 1.1
+ MIDP 2.0"
API Reference.
(日本語版)

公式仕様書原文の著作権表記等(※):

Mobile Information Device Profile Specification ("Specification")
Version: 2.0
Status: FCS
Release: November 5, 2002

Copyright 2002 Sun Microsystems, Inc. and Motorola, Inc.
All rights reserved.
※ただしこの API リファレンスは英語仕様を一語一句正確に翻訳したものではなく、一度私が英語の仕様原文を読んだ上で元の意味と構造をなるべく保つように書き起こしたものです。このため一部は完全に異なる説明となっています。また CLDC 1.1 部分は同仕様の範囲外であるため、まったく参考とはしていません。

※仕様書のライセンス上、問題は無いと考えておりますが、万が一問題があるとお考えの関係者の方がいらっしゃいましたらメールにて連絡をいただけると幸いに存じます(第一言語に日本語、第二言語に英語を希望しますが、返信は基本的に日本語で行います)。

この API リファレンスは仕様書の日本語版という位置づけでは作成していませんし、仕様書ほど厳格でもありません。MUST、SHOULD、MAY などの仕様の条件を強調する文を維持していません(反映すらしていない個所もあります)。仮想マシンおよび MIDP の実装のために使用することは避けてください。そのような用途には必ず公式仕様書原文そのものを用いるべきです。
この API リファレンスに記載されている内容は"さかきけい"が Sun Microsystems, Inc や Motorola, Inc、Java Community Process が公開している各種公式資料を元に、独自に調査・編集したものであり、Sun Microsystems, Inc や Motorola, Inc、Java Community Process 等とは一切関係ありません。したがってこの API リファレンスに関する問い合わせを関係各社等に対して行うことを固く禁じます。
また、記載された内容には既知か否かに関らず誤りが含まれる可能性があり、一切保証はありません。本 API リファレンスを使用した結果、不利益が生じたとしても"さかきけい"は一切の責任を負いません。
許可無く公開/非公開および Internet/Intranet/LAN を問わず他サイトに転載すること、複写および複製すること、ローカル・ファイル等に保存することを禁じます。


Copyright© 2001-2002,2005-2009,2011 by KEI SAKAKI.
ALL RIGHTS RESERVED.
無断転載を禁じます。

Unofficial "CLDC 1.0 + MIDP 1.0" API Reference はこちらです。