(57)【要約】【課題】信頼できる場合のみ近接通信手段の通信を許可するとともに、近接通信手段の通信設定の煩わしさを軽減する。【解決手段】本発明に係る携帯電話は、ＣＰＵ２と、ＲＯＭ３と、メモリ４と、ＥＥＰＲＯＭ５と、Ａ／Ｄ７と、Ｄ／Ａ９と、偏心モータ１０と、通信部１２と、表示部１３と、キー入力部１４と、選択指示部１５と、ＢＴモジュール１６とを備えている。利用者がＪＡＶＡアプリケーション２２の起動を要求した場合に、そのアプリケーションが信頼できるか否かを自動的に検証し、信頼できる場合のみＢｌｕｅｔｏｏｔｈ通信に必要な情報を情報ファイルから自動的に読み出して設定を行うため、ユーザ自身で設定を行う必要がなくなり、ユーザの手間が省けるとともに、ＪＡＶＡ仮想マシンの仕様にとらわれずにＢｌｕｅｔｏｏｔｈ通信のための最適な設定を行うことができる。【選択図】  図１
2004297711.tif 000002
【特許請求の範囲】
【請求項１】
付属情報を含むアプリケーションプログラムを受信可能な第１の通信手段と、
前記付属情報に基づいて、前記アプリケーションプログラムが信頼できるか否かを検証する信頼検証手段と、
前記アプリケーションプログラムが利用する、前記第１の通信手段とは別の第２の通信手段と、
前記信頼検証手段により信頼できると検証された前記アプリケーションプログラムを実行するとき、前記付属情報に含まれる前記第２の通信手段による通信に必要な情報に従って前記第２の通信手段の通信設定を行う通信設定手段と、
前記通信設定手段が前記第２の通信手段に通信設定を行った後、前記アプリケーションプログラムを起動する起動開始手段と、を備えることを特徴とする無線端末。
【請求項２】
前記信頼検証手段は、
前記付属情報に含まれる前記アプリケーションプログラムの作成者または管理者の電子証明書が信頼できるか否かを検証して、該電子証明書が信頼できる場合には、該付属情報に含まれるアプリケーションプログラムの電子署名が信頼できるか否かを検証する署名検証手段を有することを特徴とする請求項１に記載の無線端末。
【請求項３】
前記署名検証手段により信頼できると検証された後に前記アプリケーションプログラムを保存する保存手段をさらに備え、
前記信頼検証手段は、前記保存手段が前記アプリケーションプログラムを保存し終わった後に、前記アプリケーションプログラムが信頼できることを示すフラグ情報を設定するフラグ設定手段をさらに有することを特徴とする請求項２に記載の無線端末。
【請求項４】
前記付属情報は、前記アプリケーションプログラムの属性情報と、前記第２の通信手段による通信に必要な情報と、前記アプリケーションプログラムの作成者または管理者の電子証明書と、前記アプリケーションプログラムの電子署名とを含むことを特徴とする請求項１及至３のいずれかに記載の無線端末。
【請求項５】
前記前記第２の通信手段による通信に必要な情報は、通信相手の起動検索、認証モード、リンクキー、ＰＩＮコード、送信電力、ページタイムアウト、スーパビジョンタイムアウト、ページスキャンインターバル、インクワイアリスキャンインターバル、他のアプリケーションの排他、有効通信距離、パケットタイプ、クラスオブデバイス、インクワイヤリアクセスコード及びチャネル番号の少なくとも一つを含むことを特徴とする請求項４に記載の無線端末。
【請求項６】
前記信頼検証手段により信頼できると検証されたアプリケーションプログラムを実行する前に、前記第２の通信手段の通信設定情報のうち変更を要する情報を一時的に退避させる情報退避手段と、
前記通信設定手段による設定の後に実行される前記アプリケーションプログラムの終了後、前記情報退避手段に退避した情報を前記第２の通信手段に再設定する再設定手段と、を備えることを特徴とする請求項１及至５のいずれかに記載の無線端末。
【請求項７】
前記第２の通信手段が通信許容状態に設定されているか否かを判断する通信許容判断手段と、
前記信頼検証手段によって信頼できると検証した場合に、前記第２の通信手段が通信許容状態に設定されていないと判断されると、前記第２の通信手段を通信許容状態に設定する通信許容設定手段と、を備えることを特徴とする請求項１及至６のいずれかに記載の無線端末。
【請求項８】
前記通信設定手段による前記第２の通信手段への通信設定が終了した後、前記第２の通信手段に対して、通信可能な通信装置の探索を開始する要求する探索要求手段を備え、
前記起動開始手段は、前記探索要求手段が前記第２の通信手段に探索開始を要求した後、前記アプリケーションプログラムの起動を開始することを特徴とする請求項１及至７のいずれかに記載の無線端末。
【請求項９】
前記通信設定手段が前記第２の通信手段の通信設定情報を変更した場合に、その旨を報知する報知手段を備えることを特徴とする請求項１及至８のいずれかに記載の無線端末。
【請求項１０】
前記第２の通信手段は、Ｂｌｕｅｔｏｏｔｈを利用した通信を行うことを特徴とする請求項１及至９のいずれかに記載の無線端末。
【請求項１１】
付属情報を含むアプリケーションプログラムを受信するステップと、
前記付属情報に基づいて、前記アプリケーションプログラムが信頼できるか否かを検証するステップと、
該信頼できると検証されたアプリケーションプログラムを実行するとき、前記付属情報に含まれる該アプリケーションプログラムによる通信に必要な情報に従って通信設定を行うステップと、
該通信設定を行った後、前記アプリケーションプログラムを起動するステップと、を実行させるための通信制御プログラム。
【請求項１２】
付属情報を含むアプリケーションプログラムを受信し、
前記付属情報に基づいて、前記アプリケーションプログラムが信頼できるか否かを検証し、
信頼できると検証された前記アプリケーションプログラムを実行するとき、前記付属情報に含まれる該アプリケーションプログラムによる通信に必要な情報に従って通信設定を行い、
該通信設定を行った後、前記アプリケーションプログラムを起動することを特徴とする通信制御方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、Ｂｌｕｅｔｏｏｔｈ（登録商標）などの比較的狭い範囲で通信を行う近接通信手段を備えた無線端末、通信制御プログラム及び通信制御方法に関し、特に、アプリケーションプログラムに従って近接通信手段での通信を行う技術に関する。
【０００２】
【従来の技術】
最近、伝送距離が１０ｍ程度の近距離無線通信が注目を集めている。従来の無線ＬＡＮの有効な伝送距離範囲が１００ｍ以上であるのに対し、近距離無線通信は、伝送範囲が狭い分、使用する電力が少ないので、携帯電話やＰＤＡ等の携帯型情報処理装置（以下、簡単に携帯端末と呼ぶ）などのバッテリーに制限がある通信機器に適している。
【０００３】
Ｂｌｕｅｔｏｏｔｈは、この種の近距離無線通信の１つであり、近年、このＢｌｕｅｔｏｏｔｈ通信手段を搭載した携帯端末が普及し始めている（非特許文献１〜４参照）。
【０００４】
Ｂｌｕｅｔｏｏｔｈは、デバイスの単価が安く、装置の小型化が可能なため、Ｂｌｕｅｔｏｏｔｈ通信機能を備えた装置が今後いたるところに普及すると予想される。Ｂｌｕｅｔｏｏｔｈが普及すると、任意の場所で、各場所に応じたサービスや情報の提供を受けられるようになる。
【０００５】
例えば、コンビニエンスストア、スーパーマーケット及び小売店などでは、電子クーポンサービス、電子ポイントサービス、電子決済、レシート及び領収書発行などの購買者向けのサービスを提供することが可能になる。また、電子チケットによりゲート開閉の制御、自動販売機での決済や割引サービス、駐車場、ガソリンスタンド及びドライブスルーでの料金支払いなどへの応用も期待されている。他に、インターネットへのアクセス、特定の場所に依存する情報配信及び利用者の位置情報の提供なども可能となる。
【０００６】
また、最近の携帯電話は、ＩＴＲＯＮ（登録商標）、Ｓｙｍｂｉａｎ（登録商標）、Ｌｉｎｕｘ（登録商標）のようなＯＳ（Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ）を搭載し、これらＯＳ上で仮想マシンを動作させ、異なるメーカの端末でも同一のアプリケーションを実行できるような環境が整っている。
【０００７】
ＪＡＶＡ（登録商標）の仮想マシンは１つの実現形態である。ＪＡＶＡ上で動作するＪＡＶＡアプリケーションは、携帯電話が有するデータ通信の機能を利用して、インターネット上の特定のサーバからダウンロードされ、携帯電話の内部の記憶装置に保存される。その際、ＪＡＶＡアプリケーションの付属情報を記述したＪＡＤ（Ｊａｖａ  Ａｐｐｌｉｃａｔｉｏｎ  Ｄｅｓｃｒｉｐｔｏｒ）ファイルも併せてダウンロードされて、記憶装置に保存される。
【０００８】
利用者が、アプリケーションの起動を携帯電話に指示すると、ＯＳは、ＪＡＶＡ仮想マシンを起動させ、そのＪＡＶＡ仮想マシン上で、指定したアプリケーションを動作させる。また、仮想マシンの起動時には、アプリケーションに対応づけられたＪＡＤファイル内の情報を元に、仮想マシンが利用可能なリソースの設定や制限を行う。
【０００９】
この種の仮想マシンの規格には、ＣＬＤＣと呼ばれるコアの規格や、通信とユーザインタフェースを規定したＭＩＤＰと呼ばれる規格が存在している。ＭＩＤＰは、Ｖｅｒ２の規格が策定され、ＪＡＶＡアプリケーションをダウンロードするときに、アプリケーションに付属する電子署名の検証を行い、そのアプリケーションが信頼できるかどうかの判定を行い、そのアプリケーションが利用可能なハードウェアリソースとクラスの制約を設定することが可能となっている。
【００１０】
また、ＪＡＶＡの仮想マシンからＢｌｕｅｔｏｏｔｈの機能の利用を可能とする規格  ＪＳＲ８２が制定されたことにより、ＪＡＶＡアプリケーションは、Ｂｌｕｅｔｏｏｔｈクラスのメソッドを通じてＢｌｕｅｔｏｏｔｈ通信機能を一部利用することが可能となった。ＪＡＶＡ仮想マシンのセキュリティの方針により、ＪＡＶＡアプリケーションが携帯電話のハードウェアを直接制御することは、禁止あるいは制限されており、そのために利用可能なＢｌｕｅｔｏｏｔｈ機能が限定されている。
【００１１】
ＪＳＲ８２では、ＪＡＶＡアプリケーションとは異なるＢＣＣ  （Ｂｌｕｅｔｏｏｔｈ  Ｃｏｎｔｒｏｌ  Ｃｅｎｔｅｒ）と呼ばれるエンティティを通じて、ハードウェアに関する設定を行うよう定義することで、上記機能制限を一部緩和している。仕様には、ＢＣＣの実現形態の１つとして、ＯＳネーティブのアプリケーションが担う形が記載されている。
【００１２】
【非特許文献１】
Ｊ２ＭＥＴＭ  Ｃｏｎｎｅｃｔｅｄ，  Ｌｉｍｉｔｅｄ  Ｄｅｖｉｃｅ  Ｃｏｎｆｉｇｕｒａｔｉｏｎ
ｈｔｔｐ：／／ｊｃｐ．ｏｒｇ／ｅｎ／ｊｓｒ／ｄｅｔａｉｌ？ｉｄ＝３０
【非特許文献２】
Ｍｏｂｉｌｅ  Ｉｎｆｏｒｍａｔｉｏｎ  Ｄｅｖｉｃｅ  Ｐｒｏｆｉｌｅ  ｆｏｒ  ｔｈｅ  Ｊ２ＭＥＴＭ  Ｐｌａｔｆｏｒｍ
ｈｔｔｐ：／／ｊｃｐ．ｏｒｇ／ｅｎ／ｊｓｒ／ｄｅｔａｉｌ？ｉｄ＝３７
【非特許文献３】
ＪａｖａＴＭ  ＡＰＩｓ  ｆｏｒ  Ｂｌｕｅｔｏｏｔｈ
ｈｔｔｐ：／／ｊｃｐ．ｏｒｇ／ｅｎ／ｊｓｒ／ｄｅｔａｉｌ？ｉｄ＝８２
【非特許文献４】
Ｍｏｂｉｌｅ  Ｉｎｆｏｒｍａｔｉｏｎ  Ｄｅｖｉｃｅ  Ｐｒｏｆｉｌｅ  ２．０
ｈｔｔｐ：／／ｊｃｐ．ｏｒｇ／ｅｎ／ｊｓｒ／ｄｅｔａｉｌ？ｉｄ＝１１８）
【００１３】
【発明が解決しようとする課題】
ＢＣＣを通じて行われた設定内容は、不揮発メモリなどに記憶される。ＪＡＶＡ仮想マシンは、ＪＡＶＡアプリケーションからＢｌｕｅｔｏｏｔｈ用のメソッドがコールされた時に、その処理が実行可能かどうか設定値を見て判定する。例えば、ＢＣＣでＢｌｕｅｔｏｏｔｈ通信機能をＯＦＦにしている状況で、ＪＡＶＡアプリケーションを起動し、ＪＡＶＡアプリケーションが端末発見コマンドを実行しようとすると、ＢＣＣの設定がＢｌｕｅｔｏｏｔｈの機能をＯＦＦに設定されているため、このコマンドの戻り値はエラーとなる。
【００１４】
また、ＢＣＣでセキュリティ機能をＯＦＦにしている状況で、ＪＡＶＡアプリケーションが認証コマンドを実行しようとすると、同様にこのコマンドの戻り値はエラーとなる。
【００１５】
この場合、利用者は、ＪＡＶＡアプリケーションを一旦終了し、ＢＣＣを起動して設定値を変更し、再度ＪＡＶＡアプリケーションを起動することになる。あるいは、他の実装形態として、コマンド要求時に、ＪＡＶＡ仮想マシンが、あるいは、ＯＳが自動的にＢＣＣを起動する、あるいは、設定変更用のダイアログを提示することにより、ＢＣＣが管理する設定の変更を明示的に利用者が変更するように促す方法もありうる。
【００１６】
また、ＢＣＣで認証モードに設定している場合は、相手装置に接続要求を行うとき、あるいは、接続要求を受け入れる時に、認証手順が実行される。通常ＨＣＩイベントとして認証要求イベントをＨＣＩタスクが受信し、ＪＡＶＡ仮想マシンタスク、あるいは、ＯＳが認証用のキーの入力を促すダイアログを画面に提示し、利用者の明示的なキー入力（通常ＰＩＮコードと呼ばれる、認証用のキーを作成するためのデータ入力）を要求する。
【００１７】
しかしながら、短いＰＩＮコードはセキュリティ的に問題があると指摘されており、理想的なＰＩＮコード長として１２８ビットが求められているが、１２８ビットのコード長では３２文字の英数字の入力が必要となり、利用者の入力に要する負担が非常に大きい。もし、この時入力ミスを行うと、双方の端末認証が失敗し、接続できなくなり、再度接続手順を実行してＰＩＮコードを正しく入力する必要がある。
【００１８】
また、他の装置に対して特定のサービスを提供する場合や、他の装置から特定のサービスの提供を受ける場合には、そのサービスが使用される状況に適したＢｌｕｅｔｏｏｔｈデバイスの設定が、処理時間やユーザビリティの観点からみて必要である。
【００１９】
例えば、顧客が所持する携帯電話とキャッシュレジスタがＢｌｕｅｔｏｏｔｈで接続しあって金銭決済を行う場合には、セキュリティ上、通信範囲を狭く設定するのが望ましい。
【００２０】
しかしながら、現在のＪＳＲ８２の仕様ではこのような通信範囲の変更設定は行えない。ＢＣＣを通じて設定を行う手法も考えられるが、アプリケーションを起動する前にＢＣＣを起動し、使用するアプリケーションに適した設定を利用者が明示的に行うのは非常に煩わしい。さらに、アプリケーション終了後に元の設定に戻すことを忘れてしまうと、次回異なるサービスを受ける場合に、うまくつながらないなどの問題が生じる可能性がある。
【００２１】
ＪＡＶＡアプリケーションからＢｌｕｅｔｏｏｔｈの処理を行う場合には、Ｂｌｕｅｔｏｏｔｈの処理時間に加えて、ＪＡＶＡ仮想マシンの起動やＪＡＶＡアプリケーションの起動時間などのオーバヘッドが生じるため、利用者の処理待ち時間が長くなる。
【００２２】
本発明は、このような点に鑑みてなされたものであり、その目的は、サービスを受けるアプリケーションが信頼できる場合のみ近接通信手段の通信を許可するとともに、近接通信手段の通信設定の煩わしさを軽減し、サービスを受けるまでの処理時間の短縮が可能な無線端末、通信制御プログラム及び通信制御方法を提供することにある。
【００２３】
【課題を解決するための手段】
上述した課題を解決するために、本発明は、付属情報を含むアプリケーションプログラムを受信可能な第１の通信手段と、
前記付属情報に基づいて、前記アプリケーションプログラムが信頼できるか否かを検証する信頼検証手段と、
前記アプリケーションプログラムが利用する、前記第１の通信手段とは別の第２の通信手段と、
前記信頼検証手段により信頼できると検証された前記アプリケーションプログラムを実行するとき、前記付属情報に含まれる前記第２の通信手段による通信に必要な情報に従って前記第２の通信手段の通信設定を行う通信設定手段と、
前記通信設定手段が前記第２の通信手段に通信設定を行った後、前記アプリケーションプログラムを起動する起動開始手段と、を備える。
【００２４】
【発明の実施の形態】
以下、本発明に係る無線端末について、図面を参照しながら具体的に説明する。以下では、本発明に係る無線端末の一例として、Ｂｌｕｅｔｏｏｔｈ通信機能を持つ無線端末について説明する。本実施形態の無線端末は、通信相手であるＢｌｕｅｔｏｏｔｈ機能を持つサービス提供装置との間で、Ｂｌｕｅｔｏｏｔｈの仕様に準拠する手法で接続を確立し、接続の確立に成功すると、サービス提供装置から各種サービスの提供を受けることができる。
【００２５】
本実施形態の無線端末は、例えば携帯電話やＰＤＡなどであり、サービス提供装置は、例えばキャッシュレジスタ、自動改札機、自動販売機及び情報提供装置などであるが、以下では、無線端末として携帯電話を用い、サービス提供装置としてキャッシュレジスタを用いる場合について説明する。
【００２６】
（第１の実施形態）
図１は本発明に係る無線端末の一実施形態である携帯電話の内部構成の一例を示すブロック図である。図１の携帯電話は、内部バス１に接続され所定のプログラムを実行するＣＰＵ２と、携帯電話制御プログラム、もともと内蔵されているプログラムや辞書データを記憶するＲＯＭ３と、一時的な変数やデータを格納するメモリ４と、個人登録情報や電子クーポン、ダウンロードしたプログラム、プログラム管理データなどを保存するＥＥＰＲＯＭ５と、マイク６で音声信号をデジタル信号に変換するＡ／Ｄ７と、デジタル信号を音声信号に変換してスピーカ８に出力するＤ／Ａ９と、筐体を振動させる偏心モータ１０と、基地局１１との通信を行う通信部１２と、各種情報を表示する表示部１３と、電話番号や文字を入力するキー入力部１４と、メニューの選択等を行う選択指示部１５と、Ｂｌｕｅｔｏｏｔｈモジュール１６と（以下、ＢＴモジュールと呼ぶ）を備えている。
【００２７】
ＢＴモジュール１６は、例えば、キャッシュレジスタとの間に無線通信路を確立し、キャッシュレジスタから提供されるサービスを受ける機能を有する。ＢＴモジュール１６の動作はＢｌｕｅｔｏｏｔｈの仕様に準拠するものとする。
【００２８】
ＢＴモジュール１６と内部バス１の間には、ＢＴモジュール１６を内部バス１に接続するためのＵＡＲＴインタフェースに準拠したインタフェース部１７が設けられる。このインタフェース部１７はＵＡＲＴの通信方式でＢＴモジュール１６との間で通信を行う。
【００２９】
あるいは、ＢＴモジュール１６の外部インタフェースの形式を内部バス１の信号形式に合わせてもよい。あるいは、ＢＴモジュール１６ではなく、Ｂｌｕｅｔｏｏｔｈ用のＲＦモジュール（不図示）を内部バス１に接続し、リンク管理を行うベースバンドモジュールが提供していた機能をＣＰＵ２がプログラムとして実行して、同等の機能を提供する構成も考えられる。
【００３０】
ＢＴモジュール１６に対してコマンドを与える手法やＢＴモジュール１６からイベントを受け取る手法は、Ｂｌｕｅｔｏｏｔｈの仕様に記述されているＨＣＩ（Ｈｏｓｔ  Ｃｏｎｔｒｏｌｌｅｒ  Ｉｎｔｅｒｆａｃｅ）に沿った形で実現する。あるいは、ベースバンド固有の通信プロトコルを利用する手法もありうる。
【００３１】
音声通話に関する構成は、従来の携帯電話と同様であり、例えば、通信部１２は、基地局１１との間で位置登録、発呼・着呼時の呼制御を行ってデータの送受信を行い、通信が終了した際には切断の呼制御を、通信中にはハンドオーバ等を行う。
【００３２】
通信部１２は、基地局１１からの接続要求を受信した場合には、スピーカ８から呼出し音を出力するか、あるいは、偏芯モータを駆動して携帯電話の筐体を振動させて、携帯電話の所有者であるユーザの注意を喚起する。ユーザが接続了解を応答した後、携帯電話とキャッシュレジスタとの間で回線接続を行って通信を開始する。
【００３３】
通信時には、携帯電話は、マイク６から入力された音声をＡ／Ｄ７でアナログ信号からデジタル信号に変換し、ＣＰＵ２の制御の下で、デジタルデータの圧縮処理を行い、通信部１２を通じて近接の基地局１１に送信する。また、通信部１２で受信された信号は、ＣＰＵ２の制御の下で、伸張処理等が行われて元の信号に戻された後、Ｄ／Ａ９でデジタル信号からアナログ信号に変換されてスピーカ８から出力される。
【００３４】
図１の携帯電話がキャッシュレジスタ１からサービス提供を受ける機能は通常、アプリケーションプログラムで実現される。近年では、ＪＡＶＡの仮想マシンを携帯電話内で実行し、公衆網を通じて取得したＪＡＶＡアプリケーションを携帯電話の記憶装置に保存し、そのＪＡＶＡアプリケーションをＪＡＶＡ仮想マシン上で実行する技術が普及している。本実施形態ではこの技術を用いて説明を行う。ＪＡＭ（Ｊａｖａ  Ａｐｐｌｉｃａｔｉｏｎ  Ｍａｎａｇｅｒ）は、アプリケーションの属性を記載したＪＡＤ（ＪＡＶＡ  Ａｐｐｌｉｃａｔｉｏｎ  Ｄｅｓｃｒｉｐｔｏｒ）ファイルのダウンロード、ＪＡＶＡアプリケーションのダウンロード、ダウンロードしたプログラムをＥＥＰＲＯＭ５への記録、また、図８のようなプログラム管理データを記録、記録したアプリケーションの起動、アプリケーションの削除などの管理を行う。ＪＡＭは、ＯＳネーティブのアプリケーションであり、起動時にプログラム管理データに記載している内容に従ってＯＳのリソースをアサインする。
【００３５】
携帯電話のＪＡＶＡアプリケーションを保存したり、ＪＡＶＡアプリケーションのデータを保存したりするスクラッチパッドと呼ばれるメモリ空間は、通常のメモリ空間とは異なる管理をされており、他のアプリケーションからアクセスを行うことはできない。これにより、不正なアプリケーションからデータを保護してセキュリティを確保している。
【００３６】
また、ＪＡＶＡ仮想マシンからＢｌｕｅｔｏｏｔｈを制御するＡＰＩ（Ａｐｐｌｉｃａｔｉｏｎ  Ｐｒｏｇｒａｍ  Ｉｎｔｅｒｆａｃｅ）はＪＳＲ−８２として規定されており、ＪＡＶＡアプリケーションは、ＪＡＶＡ仮想マシンが提供するＡＰＩを通じてＢＴモジュール１６にコマンドを送信し、ＢＴモジュール１６からのイベントは、ＪＡＶＡ仮想マシンを通じて受信し、登録した関数にコールバックされる。
【００３７】
図２はＪＡＶＡアプリケーションがＢｌｕｅｔｏｏｔｈ機能を使用するために必要なモジュールのブロック図である。本実施形態では、携帯電話のＯＳとしてＩＴＲＯＮを用いる例を説明する。図２の各ブロックはタスクとして管理し、携帯電話の電源投入時にタスクとして起動し、ＯＳから呼ばれるまで待機している。各タスク間では、ＯＳを経由してメッセージを交換することにより処理を進める。ＨＣＩタスク２１は、上位のプロトコル、あるいは、ＢＣＣから指示された値をＢＴモジュール１６に設定する、あるいは、指定された項目の現在ＢＴモジュール１６に設定されている値の読み出し、リンクを制御するためのコマンドの実行要求を行う。
【００３８】
ＪＡＶＡアプリケーション２２からのコマンドは、ＪＳＲ８２で規定されたＢｌｕｅｔｏｏｔｈクラスやＯＢＥＸクラス２３のインスタンスのメソッドからコールされる場合と、ＣＬＤＣに準拠したＫＶＭと呼ばれる仮想マシンタスク２４をＢｌｕｅｔｏｏｔｈ向けに拡張したＫＶＭ２４のコアクラスのインスタンスからコールされる場合と二通り存在する。前者は、ＡＣＬリンク確立のために利用され、周囲の通信可能な端末の発見開始を指示するｉｎｑｕｉｒｙコマンドに、後者は引数に指定されたプロトコルで、特定のＢｌｕｅｔｏｏｔｈアドレスを有する装置とコネクションの設定と、設定したコネクションを通じてデータの送受信を行うときに使用する。
【００３９】
ＢＴモジュール１６は、上述したようにＢｌｕｅｔｏｏｔｈ仕様に沿った方法で近接通信を行う。携帯用のＢＴモジュール１６は、消費電力を考慮して通信距離約１０ｍのＣＬＡＳＳ３を使用する。ＯＳの違いを吸収するハードウェア抽象化レイヤ  （ＨＡＬ：  Ｈａｒｄｗａｒｅ  Ａｂｓｔｒａｃｔｉｏｎ  Ｌａｙｅｒ）を挟んで、ＨＣＩタスク２１はＢＴモジュール１６と通信を行うが、本実施形態ではその説明を割愛する。
【００４０】
ＨＣＩタスク２１は、Ｌ２ＣＡＰタスク２５，Ｂｌｕｅｔｏｏｈ／ＯＢＥＸタスク２３，ＢＣＣタスク２６などからのコマンドやデータをＨＣＩコマンドに変換してＢＴモジュール１６に送信する。また、ＢＴモジュール１６から受信したイベントやデータを、Ｌ２ＣＡＰタスク２５、Ｂｌｕｅｔｏｏｈ／ＯＢＥＸタスク２３及びＢＣＣタスク２６に渡す。また、ＢＴモジュール１６のバッファサイズを考慮に入れてデータの分割を行うとともに、ＨＣＩタスク２１の受信バッファの容量に応じて、分割データを結合する処理を行う。
【００４１】
Ｌ２ＣＡＰタスク２５、ＲＦＣＯＭタスク２７及びＧＯＥタスクＰ２８は、スタックと呼ばれるものであり、Ｂｌｕｅｔｏｏｔｈの仕様に沿った機能を提供する。Ｂｌｕｅｔｏｏｈ／ＯＢＥＸタスク２３は、ＪＳＲ８２で規定された機能をＪＡＶＡアプリケーション２２が利用できるようにＡＰＩを提供し、ＡＰＩに指示されたコマンドを、Ｂｌｕｅｔｏｏｔｈスタックが提供するＡＰＩに合った形に変更する。
【００４２】
また、Ｂｌｕｅｔｏｏｈ／ＯＢＥＸタスク２３のＡＰＩは、Ｂｌｕｅｔｏｏｔｈスタックで提供される機能と比較して、より抽象的になっているため、Ｂｌｕｅｔｏｏｈ／ＯＢＥＸタスク２３において、スタックが提供する関数を制御するのに必要な処理を行う。
【００４３】
例えば、ＪＳＲ８２で規定されたＯＢＥＸの仕様では、４Ｍサイズのデータを送受信可能であるが、ＯＢＥＸの仕様で決められた転送可能なデータ量は３２Ｋバイトであるため、Ｂｌｕｅｔｏｏｈ／ＯＢＥＸタスク２３内でデータを３２Ｋのサイズに分割し、必要な回数分だけＯＢＥＸのＰＵＴコマンドを繰り返す。あるいは、データを受信した場合は、複数のパケットを連結して１つのデータとして、ＪＡＶＡアプリケーション２２がアクセスできるような形に変換する機能を有する。
【００４４】
図１の通信部１２は、基地局１１との間で、音声通話を行うだけでなく、データ通信も実現する。図３に示すように、携帯電話２０内の通信部１２は、基地局１１との間に専用の通信リンクを設定し、そのリンクを用いてＩＰパケットあるいはそのサブセットのデータを交換する。基地局１１はゲートウェイ４１の機能を有する装置と接続しており、受信したＩＰパケットをインターネット網４２へ送信し、また、携帯電話２０の通信部１２は、Ｗｅｂサーバ４３からインターネット４２を介して伝送されてくるパケットを、基地局１１を介して受信する。
【００４５】
上記の手法により、携帯電話２０とインターネット４２上のサーバ４３との間で、ＩＰパケットを交換することが可能となる。また、ＩＰパケット上にＴＣＰプロトコル、その上にＨＴＴＰプロトコルを実装することにより、携帯電話２０のアプリケーションは、インターネット４２上の特定のサーバ４３とデータの送受信を行うことができる。
【００４６】
ＭＩＤＰ２．０の仕様ではＳＳＬ（Ｓｅｃｕｒｅ  Ｓｏｃｋｅｔｓ  Ｌａｙｅｒ）がサポートされるため、携帯電話２０の通信機能は、サーバの身元を認証でき、データのダウンロード先のサーバを信頼することができる。またダウンロードしたＪＡＶＡアプリケーション２２に付属する電子署名を検証することにより、アプリケーションがそのサーバを管理する特定の企業が作成したことを確認できる。あるいは、アプリケーションが途中で改竄されているか否かを検証できる。
【００４７】
図４は携帯電話２０が行うアプリケーションの認証手順を示すフローチャートである。携帯電話２０のＲＯＭ３には、ルート認証局の公開鍵が保存されているものとする。ＪＡＭは、ＪＡＶＡアプリケーション２２のダウンロードに先立ち、ＪＡＤファイルを予めダウンロードする（ステップＳ１）。
【００４８】
図５はＪＡＤ（ＪＡＶＡ  Ａｐｐｌｉｃａｔｉｏｎ  Ｄｅｓｃｒｉｐｔｏｒ）ファイルの構造の１例を示す図である。図示のように、ＪＡＤファイルは、ＪＡＶＡアプリケーション２２の属性データ４４と、ＪＡＶＡアプリケーション２２を作成した企業の企業の電子証明書４５と、ＪＡＶＡアプリケーション２２の電子署名４６を有する。属性データ４４は、より具体的には、図６に示すように、アプリケーションＵＲＬ（Ｕｎｉｆｏｒｍ  Ｒｅｓｏｕｒｃｅ  Ｌｏｃａｔｏｒ）、アプリケーション名、アプリケーションサイズ、使用するコンフィギュレーションのバージョン、使用するプロファイルのバージョン、スクラッチパッドのサイズ、通信部１２の使用の有無、ＢＴモジュール１６の使用の有無、ＢＴモジュール１６の属性データ４４、デバイス管理フラグ及び起動検索フラグなどの情報を含む。
【００４９】
このうち、ＢＴモジュール１６の属性データ４４は、より詳しくは、図７に示すように、送信電力制御、パケットタイプ、認証モード、リンクキー、ＰＩＮコード、ページタイムアウト、スーパビジョンタイムアウト、インクワイアリスキャンインターバル、ページスキャンインターバル、チャネル番号、他のアプリケーション排他、有効通信距離及びアノニミティモードなどの情報を含む。
【００５０】
ＪＡＭは最初に、バージョン情報やプログラムサイズなどの属性データ４４により、自端末で実行可能か、保存可能かの判定を行う（図４のステップＳ２）。実行可能でなければエラー処理を行い、実行かつ保存可能であれば、ＪＡＭ（Ｊａｖａ  Ａｐｐｌｉｃａｔｉｏｎ  Ｍａｎａｇｅｒ）は、ルート認証局識別番号をＪＡＤから取得し、ルート認証局の公開鍵をＲＯＭ３から取得する（ステップＳ３）。
【００５１】
次に、ＪＡＭはＭＤ５などのハッシュ関数を使用して、企業証明書４５のハッシュ値を作成する。また、ＪＡＶＡアプリケーション２２の電子署名４６を、取得したルート認証局の公開鍵で復号する。そして、先ほど作成したハッシュ値と複合した値とを比較する（ステップＳ４，Ｓ５）。一致しなければエラー処理を行い、一致すればＪＡＤ内の企業の電子証明書４５は正しいと判定し、企業の電子証明書４５のなかからＪＡＶＡアプリケーション２２を作成した企業の公開鍵を取得する（ステップＳ６）。取得した公開鍵を利用して、ＪＡＤファイルに含まれるＪＡＶＡアプリケーション２２の電子署名４６を取得して復号する（ステップＳ７，Ｓ８）。次に、ＪＡＶＡアプリケーション２２をダウンロードして（ステップＳ９）、そのハッシュ値を作成する（ステップＳ１０）。
【００５２】
次に、ＪＡＭは、ＪＡＤファイル内の属性データ４４に記述されたＵＲＬからＪＡＶＡアプリケーション２２やリソースデータを含むＪＡＲファイルをダウンロードする。ダウンロード中にＭＤ５などのハッシュ関数を利用してＪＡＲファイルのハッシュ値を作成し、先ほど復号したハッシュ値と比較する（ステップＳ１１，Ｓ１２）。ハッシュ値が一致すれば、ダウンロードしたＪＡＶＡアプリケーション２２は間違いなく、企業が作成したアプリケーションを判定できる。
【００５３】
正しいと判定した場合は、信頼フラグを設定し（ステップＳ１３）、図８に示すような属性データ４４を含む管理データを作成し、ＪＡＶＡアプリケーション２２ＥＥＰＲＯＭ５に保存し（ステップＳ１４）、正常に保存されたか否かを確認する（ステップＳ１５）。管理データは、図８に示すように、アプリケーション識別子、アプリケーション名、アプリケーション作成企業名、アプリケーション属性データ４４、信頼できることを示すフラグ、属性変更フラグ、デバイス状態変更フラグ、認証状態フラグ等から構成される。管理データはアプリケーションごとに作成し、ＥＥＰＲＯＭ５に保存する。
【００５４】
次に、ダウンロードしたアプリケーションの属性を検査し、ＢＴモジュール１６を使用する場合は、保存時に、アプリケーション名や作成した企業名を利用者に提示するとともに（ステップＳ１６）、アプリケーション起動時にＢＴモジュール１６の設定を自動で変更するかどうかを利用者に確認し（ステップＳ１７）、利用者が変更すると指示した場合は、管理データの設定有効フラグを設定する（ステップＳ１８）。
【００５５】
一方、ステップＳ１２で信頼できないと判定されると、ＪＡＶＡアプリケーション２２をＥＥＰＲＯＭ５に保存するか否かを確認し（ステップＳ１９）、保存を希望する場合には、ステップＳ１４以降の処理を行い、保存を希望しない場合には、ダウンロードしたＪＡＶＡアプリケーション２２、管理データを廃棄する。
【００５６】
図９はＪＳＲ８２の仕様に準拠する、サービスを受領するアプリケーションが、データ交換を開始するまでのシーケンスを示す図である。ＪＡＶＡアプリケーション２２は利用者からのサービス受領指示を受けると、サービス提供を行う装置を発見するためにインクワイアリのメソッドをコールする（ステップＳ２１）。引数には、ＩＡＣ（Ｉｎｑｕｉｒｙ  Ａｃｃｅｓｓ  ｃｏｄｅ）と呼ばれる端末のフィルタリングを行う識別子を設定する。Ｂｌｕｅｔｏｏｈ／ＯＢＥＸタスク２３は、ＨＣＩタスク２１にインクワイアリ開始を要求する（ステップＳ２２）。ＨＣＩタスク２１は、ＢＴモジュール１６に対し、インクワイアリの開始を指示する（ステップＳ２３）。これにより、ＢＴモジュール１６は、インクワイアリを行うために、ＩＱパケットを送信する（ステップＳ２４）。
【００５７】
ＢＴモジュール１６が、インクワイアリにより新規端末が発見する（ＦＨＳパケットを受信する）と（ステップＳ２５）、ＢＴモジュール１６はＨＣＩタスク２１にイベントを通知し（ステップＳ２６）、ＨＣＩタスク２１はＢｌｕｅｔｏｏｈ／ＯＢＥＸタスク２３にメッセージを送信する（ステップＳ２７）。Ｂｌｕｅｔｏｏｈ／ＯＢＥＸタスク２３は、ＫＶＭタスク２４にメッセージを送信し（ステップＳ２８）、仮想マシンタスクは、アプリケーションが登録したメソッドをコールバックする。コールバック時の引数には、発見した装置のＢＴモジュールの識別子、発見した端末の種別を示すＣＯＤ（ｃｌａｓｓ  ｏｆ  ｄｅｖｉｃｅ）が含まれている。
【００５８】
アプリケーションは、取得したＣＯＤを検査し、所望のＣＯＤと一致する場合は、インクワイアリキャンセルの関数をコールし（ステップＳ２９〜Ｓ３３）、その後、利用者にわかりやすい識別名称であるリモートネームを取得するメソッドをコールする（ステップＳ３４〜Ｓ４１）。
【００５９】
あるいは、リモートネームを取得しないで、そのまま上位プロトコルのコネクションを設定するために、コネクタ―クラスのインスタンスを作成し、ＯＰＥＮメソッドをコールすることによりコネクションの設定を行う。コネクションが設定されるまで、ＪＡＶＡ仮想マシンはこの関数をブロックする。ＪＳＲ８２の仕様では、Ｌ２ＣＡＰ，ＲＦＣＯＭ，ＳＤＰ，ＯＢＥＸが上位プロトコルとしてサポートされている。
【００６０】
ＪＡＶＡアプリケーション２２は、ＯＢＥＸプロトコルを使用するために、ＯＢＥＸのコネクタオブジェクトを作成する。このコネクタオブジェクトのＯＰＥＮ要求を行うと（ステップＳ４２）、ＫＶＭ２４では、ＡＣＬリンクを作成するために、ＨＣＩタスク２１にＡＣＬリンクの接続を要求する（ステップＳ４３）。ＨＣＩタスク２１は、ＢＴモジュール１６に、ＣｒｅａｔｅＣｏｎｎｅｃｔｉｏｎコマンドを送信する（ステップＳ４４）。
【００６１】
ＢＴモジュール１６がＨＣＩスタックに対してリンクキー要求を行うと（ステップＳ４５）、ＨＣＩタスク２１はＢＴモジュール１６にリンクキーを送信する（ステップＳ４６）。
【００６２】
ＢＴモジュール１６は、コネクションの接続が完了すると、ＣｏｎｎｅｃｔｉｏｎＣｏｍｐｌｅｔｅイベントをＨＣＩタスク２１に通知する（ステップＳ４７）。ＨＣＩタスク２１は、ＫＶＭタスク２４に、ＡＣＬ作成イベントを通知する（ステップＳ４８）。ＫＶＭ２４は、Ｌ２ＣＡＰコネクションの作成を、Ｌ２ＣＡＰ２５タスクに要求し、Ｌ２ＣＡＰ２５タスクは、ＨＣＩタスク２１にデータの送信を要求する（ステップＳ４８）。以後、作成したＬ２ＣＡＰコネクションを通じてＲＦＣＯＭコネクションを作成し、ＲＦＣＯＭコネクションを通じてＯＢＥＸのコネクションを設定する。
【００６３】
ＯＢＥＸコネクションができるまで、ＫＶＭ２４はコネクタＯＰＥＮ関数をブロックし、ＯＢＥＸのコネクション要求の戻り値にその成功の可否が設定される。
【００６４】
以上の手順により、データ通信を開始する準備が整う。次に、本実施形態を利用して利用者がサービスを受領するまでの手順を図１０のフローチャートを使用して説明する。
【００６５】
利用者はＢｌｕｅｔｏｏｔｈ装置からサービス提供を受ける際、サービスに対応するＪＡＶＡアプリケーション２２を起動する（ステップＳ５１）。このときＪＡＭ（Ｊａｖａ  Ａｐｐｌｉｃａｔｉｏｎ  Ｍａｎａｇｅｒ）は、指定されたＪＡＶＡアプリケーション２２の識別子を調べて、管理データの中からアプリケーションの属性データ４４の内容を調べ（ステップＳ５２）、メモリ４や通信機能などＯＳのリソースを割り当てる（ステップＳ５３）。次にＪＡＶＡ仮想マシンタスクにメッセージを送り、指定されたＪＡＶＡアプリケーション２２を起動するように要求する。
【００６６】
このとき、ＪＡＭは、管理データ内の属性データ４４に基づいて、ＢＴモジュール１６を使用するかどうか調べ（ステップＳ５４）、起動するアプリケーションがＢＴモジュール１６を使用する場合は、次に管理データ内のアプリケーション信頼フラグを検査して、アプリケーションが信頼できるか否かを判定する（ステップＳ５５）。
【００６７】
アプリケーションが信頼できる場合には、管理データ内の属性データ４４内の近接通信手段属性データを読み出し、ＨＣＩタスク２１を通じてＢＴモジュール１６にその値を設定する（ステップＳ５６）。例えば、ページタイムアウトの項目に”２ｓ”と記載されている場合は、ＨＣＩタスク２１を通じてページタイムアウトの設定を”２ｓ”に変更するように要求する。ＨＣＩタスク２１はＷｒｉｔｅＰａｇｅＴｉｍｅｏｕｔコマンドを使用して、ＢＴモジュール１６の設定を変更するように指示する。
【００６８】
また、信頼できないアプリケーションでも、利用者に設定変更を確認するダイアログを提示し（ステップＳ５７）、一時的に信頼できるアプリケーションのようにＢＴモジュール１６の設定変更を許可する、あるいは、信頼できるアプリケーションでも起動ごとに確認するなどの実装もありうる。
【００６９】
次に、ＪＡＶＡ仮想マシンを起動し（ステップＳ５８）、ＪＡＶＡ仮想マシン上でＪＡＶＡアプリケーション２２を起動する（ステップＳ５９）。次に、Ｂｌｕｅｔｏｏｔｈ関数をコールし（ステップＳ６０）、ＢＣＣ２６設定と一致するか否かを判定し（ステップＳ６１）、一致する場合にはＢｌｕｅｔｏｏｔｈコマンドを送信し（ステップＳ６２）、一致しなければエラーイベントを通知する（ステップＳ６３）。
【００７０】
このように、第１の実施形態によれば、利用者がＪＡＶＡアプリケーション２２の起動を要求した場合に、そのアプリケーションが信頼できるか否かを自動的に検証し、信頼できる場合のみＢｌｕｅｔｏｏｔｈ通信に必要な情報を情報ファイルから自動的に読み出して設定を行うため、ユーザ自身で設定を行う必要がなくなり、ユーザの手間が省けるとともに、ＪＡＶＡ仮想マシンの仕様にとらわれずにＢｌｕｅｔｏｏｔｈ通信のための最適な設定を行うことができる。また、アプリケーションが信頼できない場合には、Ｂｌｕｅｔｏｏｔｈ通信を行わないため、セキュリティ性を向上できる。
【００７１】
また、ＪＡＶＡアプリケーション２２に添付された電子署名４６を検証することにより、そのアプリケーションを作成した企業を確認でき、かつダウンロード時にＳＳＬを使用することにより、提供するサーバの身元を確認できるため、悪意を有する者が運営するサーバか否かの識別と、改造したアプリケーションか否かの識別とを行うことができる。
【００７２】
（第２の実施形態）
第２の実施形態は、ＢＴモジュール１６の設定情報を、ＪＡＶＡアプリケーション２２の起動前に一時的にメモリ４に退避し、起動終了後に元に戻すものである。
【００７３】
図１１及び図１２は携帯電話２０の第２の実施形態の処理手順を示すフローチャートである。以下では、第１の実施形態と異なる処理を中心に説明する。ユーザがＪＡＶＡアプリケーション２２の起動を指示した後、アプリケーション信頼フラグを検査し（ステップＳ７５）、信頼できる場合は、ＢＴモジュール１６の属性値が設定されている項目のみ、その項目の現在の設定値を読み出すようＨＣＩタスク２１にメッセージを送信する（ステップＳ７６）。ＨＣＩタスク２１はＢＴモジュール１６から値を取得し、ＪＡＭに返信する。ＪＡＭは、項目と読み出した値を関連付け、ＢＴモジュール１６の属性値データとしてメモリ４に記録する（ステップＳ７７）。その後、設定された項目の値を設定するようＨＣＩタスク２１にメッセージを送信する。
【００７４】
例えば、ページタイムアウトの項目に”２ｓ”と記述されている場合は、ＨＣＩタスク２１を通じてＢＴモジュール１６の現在の設定値、例えば、デフォルトのままである場合は”５ｓ”の値を取得し、その項目であるページタイムアウトと対にしてメモリ４に記録し、その後ＨＣＩタスク２１にページタイムアウトの設定を”２ｓ”に変更するように要求する。ＨＣＩタスク２１はＷｒｉｔｅＰａｇｅＴｉｍｅｏｕｔコマンドを使用して、ＢＴモジュール１６の設定を変更するように指示する（ステップＳ７８）。
【００７５】
ＪＡＶＡアプリケーション２２の起動後に、利用者がＪＡＶＡアプリケーション２２の終了を指示すると（図１２のステップＳ９１）、ＪＡＶＡ仮想マシンはＪＡＶＡアプリケーション２２に終了イベントを通知する（ステップＳ９２）。これにより、ＪＡＶＡアプリケーション２２は終了処理を実行し、その後、ＪＡＶＡ仮想マシンは、アプリケーションプログラムをメモリ４の格納エリアから開放する（ステップＳ９３）。
【００７６】
その後、ＪＡＭは、ＢＴモジュール１６の属性値データを調べ（ステップＳ９４）、元に戻すべき値が存在するか否かを検査し（ステップＳ９５）、元にもどす項目が存在する場合は、ＨＣＩタスク２１にその値を設定するようにメッセージを送信する。上記の場合、ページタイムアウトを５ｓに変更するようＨＣＩタスク２１にメッセージを送信し、ＨＣＩタスク２１はＢＴモジュール１６に対してＷｒｉｔｅＰｅｇｅｔｉｍｅｏｕｔコマンドによりＢＴモジュール１６の値を変更する（ステップＳ９６，Ｓ９７）。
【００７７】
このように、第２の実施形態では、ＪＡＶＡアプリケーション２２の起動前にＢＴモジュール１６の値を一時的に記憶し、同アプリケーションの終了時に元に戻すことにより、ＢＴモジュール１６を利用する他のアプリケーションを起動する時に設定値に矛盾が生じなくなる。
【００７８】
（第３の実施形態）
第３の実施形態は、携帯電話２０の低消費電力化を図るものである。
【００７９】
図１３は携帯電話２０の第３の実施形態の処理手順を示すフローチャートである。以下では、第１の実施形態と異なる処理を中心に説明する。ＪＡＶＡアプリケーション２２が信頼できる場合には、属性データ４４のデバイス管理フラグを検査する（ステップＳ１０６）。
【００８０】
使用するアプリケーションがデバイス管理を行う場合は、ＢＴモジュール１６への電源供給の状態を検査する（ステップＳ１０７）。もし、現在ＢＴモジュール１６に電源が供給されている場合は、属性データ４４内のＢＴモジュール１６の属性データ４４を読み出し、ＨＣＩタスク２１を通じてＢＴモジュール１６にその値を設定する（ステップＳ１０８）。
【００８１】
電源が供給されていない場合は、ＢＴモジュール１６への電源供給を可能とするＯＳのＡＰＩをコールし、ＢＴモジュール１６を使用可能な状態に変更する（ステップＳ１０９）。次に、管理データのデバイス状態変更フラグ（電源を供給したか否かを示すフラグ）を設定し（ステップＳ１１０）、その後ＢＴモジュール１６の属性データ４４を読み出し、ＨＣＩタスク２１を通じてＢＴモジュール１６にその値を設定する（ステップＳ１０８）。
【００８２】
一方、デバイス管理を行わない場合は、ＢＴモジュール１６への電源供給の状態を検査する（ステップＳ１１１）。もし、現在ＢＴモジュール１６への電源が供給されている場合は、属性データ４４内のＢＴモジュール１６の属性データ４４を読み出し、ＨＣＩタスク２１を通じてＢＴモジュール１６にその値を設定する（ステップＳ１０８）。
【００８３】
電源が供給されていない場合は、利用者にＢＴモジュール１６への電源供給を行うか否かを利用者に確認するためにダイアログを提示する（ステップＳ１１２）。利用者が電源供給を行う旨を指示した場合には、ＢＴモジュール１６への電源供給を可能とするＯＳのＡＰＩをコールし、属性データ４４内のＢＴモジュール１６の属性データ４４を読み出し（ステップＳ１１３）、ＨＣＩタスク２１を通じてＢＴモジュール１６にその値を設定する（ステップＳ１０８）。もし、利用者が電源供給を行わないと指示した場合は、そのままＪＡＶＡ仮想マシンの起動を行う（ステップＳ１１４）。この場合、利用者がＢｌｕｅｔｏｏｔｈ通信機能を使用することを望んでも電源供給されていないため、アプリケーション内で要求したコマンドはエラーとなる。
【００８４】
一方、ＪＡＶＡアプリケーション２２の起動後に、利用者がＪＡＶＡアプリケーション２２の終了を指示すると、ＪＡＶＡ仮想マシンはＪＡＶＡアプリケーション２２に終了イベントを通知する。ＪＡＶＡアプリケーション２２はデータの保存などの自身の終了に必要な終了処理を実行し、その後、ＪＡＶＡ仮想マシンは、アプリケーションプログラムをメモリエリアから開放する。その後ＪＡＭは、ＢＴモジュール１６への設定値で元に戻すべき値が存在するか否かを検査し、元に戻す項目が存在する場合は、ＨＣＩタスク２１にその値を設定するようにメッセージを送信する。次に、管理データのデバイス状態変更フラグを調べ、電源状態を変更した場合は、ＢＴモジュール１６への電源供給を停止するＯＳのＡＰＩをコールする。
【００８５】
このように、第３の実施形態では、利用者が明示的にＢＴモジュール１６への電源供給を指示しなくても、ＪＡＭがアプリケーションの属性に応じて自動的に電源を投入し、また、終了時に自動的に電源を切断することが可能となる。すなわち、Ｂｌｕｅｔｏｏｔｈを使用する期間でのみしか電源供給を行わないため、携帯電話２０の省電力駆動が可能となる。
【００８６】
（第４の実施形態）
第４の実施形態は、アプリケーションを起動してからサービスを受けるまでに要する時間の短縮化を図るものである。
【００８７】
図１４は携帯電話２０の第４の実施形態の処理手順を示すフローチャートである。以下では、第１の実施形態と異なる処理を中心に説明する。アプリケーションが信頼できる場合には、ＢＴモジュール１６の属性データ４４の自動探索属性フラグを検査する（ステップＳ１２７）。属性が設定されている場合は、ＨＣＩタスク２１を通じてＢＴモジュール１６にインクワイアリ開始を指示する（ステップＳ１２８）。この時、ＢＴモジュール１６の属性のＣｌａｓｓ  ｏｆ  ＤｅｖｉｃｅとＩｎｑｕｉｒｙ  Ａｃｃｅｓｓ  Ｃｏｄｅを使用してインクワイアリ開始指示を行う。
【００８８】
その後、ＪＡＶＡ仮想マシンの起動を行い（ステップＳ１２９）、ＪＡＶＡアプリケーション２２を起動する（ステップＳ１３０）。ＪＡＶＡアプリケーション２２の起動終了後に、ＨＣＩタスク２１はＢＴモジュール１６の状態を検査し、通信可能端末がみつかったかどうか検査し、発見した場合には、そのイベントを一旦キューに入れ、初期化イベントを先にＪＡＶＡアプリケーション２２に通知する。その後、発見イベントをＪＡＶＡアプリケーション２２に通知する（ステップＳ１３１）。
【００８９】
このように、第４の実施形態では、アプリケーションの起動指示とともに通信可能端末の発見処理を同時に行うことにより、アプリケーションの起動からサービスを受ける状態になるまでに要する処理時間を短縮することができる。
【００９０】
（第５の実施形態）
上述した第１〜第４の実施形態において、ＢＴモジュール１６の設定を１つ以上変更した場合に、ＪＡＭは、あらかじめ指定された報知装置を用いて利用者に変更の旨を伝える。報知装置としては、音声ファイルなどの再生、バイブレータの振動、ＬＥＤなどの点滅が考えられる。特にＬＥＤは元の設定に戻るまでは、特定の色を点灯させることにより利用者はＢＴモジュール１６の状態を確認することができる。
【００９１】
（第６の実施形態）
図１５は携帯電話２０の第６の実施形態の処理手順を示すフローチャートである。以下では、第１の実施形態と異なる処理を中心に説明する。
【００９２】
ＪＡＶＡアプリケーション２２が接続要求を行うと、Ｂｌｕｅｔｏｏｔｈ／ＯＢＥＸタスク２３は、ＨＣＩタスクに対して接続要求を行い、ＨＣＩタスク２１はＢＴモジュール１６に対して接続要求を行う。もし、この時ＢＣＣ２６の設定が、認証なしに設定されており（ステップＳ１４１）、ＢＴモジュール１６の属性データ４４の認証モードが認証有りである場合は（ステップＳ１４２）、管理データの認証変更フラグを設定し（ステップＳ１４６）、ＨＣＩタスク２１を通じてＢＴモジュール１６に対して認証モードへ変更するよう指示を行い、モード変更に成功した場合は、ＢＴモジュール１６に接続要求を行う（ステップＳ１４７）。
【００９３】
ＢＴモジュール１６が相手装置と接続処理を行うと、ＨＣＩタスク２１はリンクキー要求イベントをＢＴモジュール１６から受信する。ＨＣＩタスク２１はＪＡＭにリンクキーを要求し（ステップＳ１５０）、ＪＡＭが、ＢＴモジュール１６の属性データ４４を検査しリンクキーデータを有している場合には、その値をリンクキーとして（ステップＳ１５１）、ＨＣＩタスク２１を通じてＢＴモジュール１６に返答する。
【００９４】
もし、リンクキーを有していない場合には、リンクキー拒否を、ＨＣＩタスク２１を通じてＢＴモジュール１６に返答する（ステップＳ１５２）。拒否した場合は、ＨＣＩタスク２１は同様にＰＩＮコード入力イベントを受信する（ステップＳ１５３）。ＰＩＮコード要求を受けたＪＡＭは、ＢＴモジュール１６の属性データ４４のＰＩＮコードを検査し（ステップＳ１５４）、ＰＩＮコードを有している場合には、ＰＩＮコードをＨＣＩタスク２１を通じてＢＴモジュール１６に返答する（ステップＳ１５５）。
【００９５】
ＰＩＮコードを有していない場合には、ＰＩＮコード入力ダイアログを利用者に提示し入力を促す（ステップＳ１５６）。もし、ＰＩＮコードの入力があれば、ＰＩＮコードを返答し接続処理を継続する（ステップＳ１５７）。
【００９６】
また、ＪＡＶＡアプリケーション２２の終了時には、管理データの認証変更フラグを検査し、もし認証モードを変更している場合には、認証なしモードに変更するようＨＣＩタスク２１を通じてＢＴモジュール１６に要求する
このように、第６の実施形態では、利用者はアプリケーション固有の認証キーを入力する必要なしに、ＢＴモジュール１６が具備する認証機能を利用して、相手装置の認証を行うことが可能となる。
【００９７】
（その他の実施形態）
本実施形態で使用されるＢＴモジュール１６の属性に関する効果について以下に説明する。
【００９８】
以下のパラメータは、Ｂｌｕｅｔｏｏｔｈ／ＯＢＥＸタスク２３では直接制御できないため、本実施形態に示した方法により変更することで、そのアプリケーションに適した設定を行うことができる。
【００９９】
送信電力制御は、、通常Ｂｌｕｅｔｏｏｔｈデバイスの通信距離は１０ｍであるが、ＲＦモデムの送信電力を、ベンダー拡張コマンドなどを使用して減衰させることにより、その通信可能距離を小さくでき、アプリケーションによりふさわしい通信エリアを提供したりセキュリティを向上できる。
【０１００】
Ｂｌｕｅｔｏｏｔｈのデータ通信用のパケットとして複数のパケットタイプが準備されている。エラー訂正機能付きＤＭパケットは、簡単なエラー訂正能力を有するため、他の通信装置が存在するような環境では、パケットの転送レートは低下する。しかしながら、パケットの再送が発生しないため、ノイズのある環境でも実転送レートの低下を防げる。一方、ＤＨパケットはエラー訂正能力を有しないが、その分転送レートを大きくすることができる。アプリケーションが使用される環境があらかじめ予想され、かつ、その環境が一定であるならば、その環境に応じたパケットタイプを選択した方が有利である。
【０１０１】
認証モード、ＰＩＮコード、リンクキーは、第６の実施形態で説明した通りである。ページタイムアウトは、接続要求のタイムアウトを決めるパラメータであり、この値を大きくすれば、接続に必要な時間は長くなるが、相手と接続できる確率は大ききなる。一方、高速接続が可能な場合には、この値を小さくしておけば、反応をよくすることができる。
【０１０２】
スーパビジョンタイムアウトは、コネクションの切断を判断するためのパラメータであり、この値を大きくすると切断しにくくなるが、逆に切断検知に時間がかかり、反応が悪くなる。
【０１０３】
インクワイアリスキャンインターバルやページスキャンインターバルは、携帯装置がスレーブになる場合に使用する。この値を小さくすると接続までに要する時間を短縮できるが、その反面、Ｂｌｕｅｔｏｏｔｈデバイスが消費する電力は増加する。
【０１０４】
チャネル番号は、ＯＢＥＸの接続に使用する識別番号であり、通常ＳＤＰを使用して取得する。しかし、他にアプリケーションが存在しない場合は、この値を固定にすることにより、ＳＤＰにかかる処理時間をなくすことができる。
【０１０５】
他アプリケーション排他は、他のアプリケーションの実行を拒否することを示す。Ｂｌｕｅｔｏｏｔｈを使用するのはＪＡＶＡアプリケーション２２だけでなく、ＯＳのネーティブアプリケーションである場合も考えられる。つまり、Ｂｌｕｅｔｏｏｔｈに対応したＪＡＶＡアプリケーション２２を実行中に、Ｂｌｕｅｔｏｏｔｈを使用するネーティブのアプリケーションがＢｌｕｅｔｏｏｔｈスタックのタスクへコマンドを送ろうとした時に、この属性を検査し、排他の場合はネーティブの要求を拒否する。これにより、あるＢｌｕｅｔｏｏｔｈＪＡＶＡアプリケーション２２は、リソースを独占して使用することができる。
【０１０６】
有効通信距離は、ＡＣＬリンクを確立したときに、ＨＣＩタスク２１にＲＳＳＩの測定を要求し、得られた値が、属性に記述された条件を満たさないときは、強制的にリンクの切断を行う。例えば、レジでは数１０ｃｍから１ｍの距離で十分な場合、間違って数ｍ離れた装置と接続した場合、ＲＳＳＩを計測すると、本来想定されるＲＳＳＩの値より小さくなる。これにより、所望のエリアに存在する装置と通信しているかどうか判定でき、セキュリティを強化できる。この場合、ＲＳＳＩはＶｅｒ１．２の使用に沿ったものを使用する。
【０１０７】
アノニミティモードは、Ｖｅｒ１．２の使用であり、この機能を使用すると定期的に自分のＢＴアドレスを変更することができ、それによりプライバシーを確保することが可能となる。
【０１０８】
なお、本発明は、上記の実施形態に限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で種々に変形することが可能である。さらに、上記実施形態には種々の段階の発明が含まれており、開示される複数の構成要件における適宜な組み合わせにより、種々の発明が抽出され得る。例えば、実施形態に示される全構成要件から幾つかの構成要件が削除されても、発明が解決しようとする課題の欄で述べた課題（の少なくとも１つ）が解決でき、発明の効果の欄で述べられている効果（のなくとも１つ）が得られる場合には、この構成要件が削除された構成が発明として抽出され得る。
【０１０９】
上述した実施形態で説明した無線端末の機能は、ハードウェアで構成してもよいし、ソフトウェアで構成してもよい。ソフトウェアで構成する場合には、無線端末の少なくとも一部の機能を実現するプログラムをフロッピーディスクやＣＤ−ＲＯＭ等の記録媒体に収納し、コンピュータに読み込ませて実行させてもよい。記録媒体は、磁気ディスクや光ディスク等の携帯可能なものに限定されず、ハードディスク装置やメモリなどの固定型の記録媒体でもよい。
【０１１０】
また、無線端末の少なくとも一部の機能を実現するプログラムを、インターネット等の通信回線（無線通信も含む）を介して頒布してもよい。さらに、同プログラムを暗号化したり、変調をかけたり、圧縮した状態で、インターネット等の有線回線や無線回線を介して、あるいは記録媒体に収納して頒布してもよい。
【０１１１】
【発明の効果】
以上詳細に説明したように、本発明によれば、アプリケーションプログラムの起動要求があった場合に、そのアプリケーションプログラムが信頼できるか否かを自動的に検証し、信頼できる場合のみ近接通信手段の通信設定を自動的に行うため、ユーザ自身で近接通信手段の通信設定を行う必要がなくなり、ユーザの手間が省けるとともに、アプリケーションプログラムが信頼できる場合には最適な通信設定を行うことができる。また、信頼できないアプリケーションプログラムに従って通信を行うおそれがなくなり、セキュリティ性が向上する。
【図面の簡単な説明】
【図１】本発明に係る無線端末の一実施形態である携帯電話の内部構成の一例を示すブロック図。
【図２】ＪＡＶＡアプリケーションがＢｌｕｅｔｏｏｔｈ機能を使用するために必要なモジュールのブロック図。
【図３】携帯電話、基地局及びＷｅｂサーバの接続関係を示す図。
【図４】携帯電話が行うアプリケーションの認証手順を示すフローチャート。
【図５】ＪＡＤ（ＪＡＶＡ  Ａｐｐｌｉｃａｔｉｏｎ  Ｄｅｓｃｒｉｐｔｏｒ）ファイルの構造を示す図。
【図６】ＪＡＤファイル内の属性データの詳細内容を示す図。
【図７】ＢＴモジュールの属性データの詳細内容を示す図。
【図８】管理データの詳細内容を示す図。
【図９】ＪＳＲ８２の仕様にてサービスを受領するアプリケーションが、データ交換を開始するまでのシーケンスを示す図。
【図１０】本実施形態を利用して利用者がサービスを受領するまでの手順を示すフローチャート。
【図１１】アプリケーション起動時の第２の実施形態の処理手順を示すフローチャート。
【図１２】アプリケーション終了時の第２の実施形態の処理手順を示すフローチャート。
【図１３】携帯電話の第３の実施形態の処理手順を示すフローチャート。
【図１４】携帯電話の第４の実施形態の処理手順を示すフローチャート。
【図１５】携帯電話の第６の実施形態の処理手順を示すフローチャート。
【符号の説明】
１  内部バス
２  ＣＰＵ
３  ＲＯＭ
４  メモリ
５  ＥＥＰＲＯＭ
６  マイク
７  Ａ／Ｄ
８  スピーカ
９  Ｄ／Ａ
１０  偏心モータ
１１  基地局
１２  通信部
１３  表示部
１４  キー入力部
１５  選択指示部
１６  ＢＴモジュール
１７  インタフェース
【図１】
2004297711.tif 000003
【図２】
2004297711.tif 000004
【図３】
2004297711.tif 000005
【図４】
2004297711.tif 000006
【図５】
2004297711.tif 000007
【図６】
2004297711.tif 000008
【図７】
2004297711.tif 000009
【図８】
2004297711.tif 000010
【図９】
2004297711.tif 000011
【図１０】
2004297711.tif 000012
【図１１】
2004297711.tif 000013
【図１２】
2004297711.tif 000014
【図１３】
2004297711.tif 000015
【図１４】
2004297711.tif 000016
【図１５】
2004297711.tif 000017