好適な実施形態の詳細な説明
一例では、ユーザが、自動車ヘッドユニットを電話機用の拡張インタフェースとして使用する目的で、電話機を、有線または無線接続を用いて自動車ヘッドユニットに結合する。次の段落で説明するように、ユーザは、リモート・サーバーによる判定に従って、ヘッドユニットのインタフェースを用いて電話機上のアプリケーションを制御することを許可されることができる。同様に、次の段落で説明するように、ユーザは、リモート・サーバーによる判定に従って、ヘッドユニットのインタフェースを通してアプリケーションの出力を視聴または聴取することができる。
電話機上及びヘッドユニット上の新規なクライアント制御ソフトウェアは、リモート・サーバー上の新規なサーバー制御ソフトウェアと、電話機から延びる無線接続を通してインタフェース(相互作用)することができる。クライアント制御ソフトウェアは電話機アプリケーションを識別して、ヘッドユニットを拡張インタフェースとして利用する。
サーバー制御ソフトウェアは、識別された電話機アプリケーションを、リモート・サーバーがアクセス可能な1つ以上のデータベースと比較する。この比較に基づいて、サーバー制御ソフトウェアは、識別されたアプリケーションがヘッドユニットを拡張インタフェースとして利用することを許可するか否か、及び許可する場合は、ヘッドユニット・インタフェースのどのコンポーネントに、アプリケーションが使用することを許可するかを判定する。サーバー制御ソフトウェアは、この判定により、クライアント制御ソフトウェアに、電話機及びヘッドユニットを制御するように信号通知する。従って、拡張インタフェースとしてのヘッドユニットのあらゆる利用を、安全かつインテリジェントな方法で制御することができる。
図1に、ヘッドユニットの、電話機アプリケーション用の拡張インタフェースとしての、安全かつインテリジェントな方法での使用を制御するシステムを例示する。
システム100はソフトウェア30A及び30Bを含み、これらはそれぞれ、携帯電話20(または他のモバイル機器)及びヘッドユニット21(または車両によって給電される他のインタフェース、例えばハンドルに統合されたユーザ・インタフェース、またはシートバック(座席の背)に統合されたユーザ・インタフェース)上に設定されている。ソフトウェア30A及び30Bは、リモート・サーバー22上に設定されたソフトウェア32とインタフェース(相互作用)して、電話機20上で動作するアプリケーション40がヘッドユニット21のI/O(入出力)リソース1〜4にアクセスする時期及び方法を調整し制御する。
図2Aに、図1のソフトウェア32の動作を示すフローチャートを例示する。
ブロック201では、ソフトウェア32が、電話機20上の特定アプリケーション40がヘッドユニット21のインタフェース(入力25のリソース1〜2及び出力24のリソース3〜4を含む)を利用することの要求を受信する。この要求は、車両及び/またはヘッドユニット21のユーザに対応するユーザ識別子、特定アプリケーション40に対応するアプリケーション識別子、及び車両状態情報を含む。ユーザ識別子は、制御ソフトウェア30Aが携帯電話100内で最初に起動された際に提供される識別子、ユーザの電話番号、等とすることができる。
ブロック202では、ソフトウェア32がユーザを認証する。このことは、ユーザ識別子によって識別されるユーザが、ヘッドユニット21を用いて電話機20のインタフェースを拡張するサービスの加入者のデータベース11に一致するか否かを判定することを含むことができる。ユーザが菱形(判定)203で認証されない場合、ブロック204Aで、ソフトウェア32がソフトウェア30A/Bに、アプリケーション40によるヘッドユニット21へのアクセスを阻止(ブロック)するように信号通知する。ブロック202がオプション(随意的)であるようにシステム100を構成することができることは明らかである。
さもなければ、即ちユーザが認証された場合、ブロック204Bで、ソフトウェア32が、アプリケーション識別子をアプリケーションのリスト12(ホワイトリストとも称する)と比較することによってアプリケーション40を認証する。このリスト12をバージョン番号によって比較して、アプリケーション40の1つの特定バージョンをリスト上で識別すると共に、異なるバージョンは除外することができる。菱形205において、特定のアプリケーション40(または特定バージョン)がリスト12上にない場合、ブロック204Aで、ソフトウェア32がソフトウェア30A〜Bに、アプリケーション40によるヘッドユニット21へのアクセスを阻止するように信号通知する。
さもなければ、即ちアプリケーション40が認証された場合、ブロック206で、ソフトウェア32がアプリケーション識別子及び現在の車両状態情報を、アプリケーション動作モードのマッピング15と比較する。図に示すように、マッピング15は、リスト12のアプリケーション40毎のエントリ17を有することができる。各エントリ17は、対応するアプリケーション40に特化したマッピングを含む。例えば、アプリケーションA用のエントリ17は、車両状態「車両が≦Xで移動中」を、リソース1、2、及び4にマッピングする(即ち、アプリケーションAが、この状態下で、スクリーン1、スピーカ2、及びマイクロホン4のみにアクセスすることを許可される)のに対し、アプリケーションC用のエントリ17は、車両状態「車両が≦Xで移動中」を、リソース2及び4のみにマッピングする(即ち、アプリケーションCはスピーカ2及びマイクロホン4にアクセスすることを許可される)。1つの現実世界の例は、ナビゲーション・アプリケーションA及びビデオゲーム・アプリケーションCとすることができ、同乗者が存在する際でも、システム100は、ビデオゲーム・アプリケーションCはあまりにも運転者の気を散らせ過ぎると考えられるので、これをヘッドユニット21のスクリーン1上に表示できなくするのに対し、ナビゲーション・アプリケーションAは、ヘッドユニット21のスクリーン1上に表示することができる。他の現実世界のアプリケーションは、複数のインタフェース、例えばヘッドユニット及び座席の背に取り付けたディスプレイを有する自動車とすることができる。あるアプリケーションは、同じアプリケーションがヘッドユニットへのアクセスを許可されない状態下で、後部座席ディスプレイへのアクセスを許可されることができる。
他の例では、マッピング15を携帯電話20上に記憶することができる。この場合、前段落で説明した比較は、制御ソフトウェア30Aによって実行することができる。こうした場合、制御ソフトウェア30Aが、ヘッドユニット21と通信することによって現在の車両状態をチェックする。
ブロック207では、ソフトウェア32が、上記比較に応じて、ヘッドユニット21のI/Oリソースの一部または全部の集合を識別する。ブロック208では、ソフトウェア32がリモート・ソフトウェアに、特定アプリケーション40が、I/Oリソース1〜4のうち識別された集合のもののみにアクセスするように信号通知する。一例では、こうした信号通知が、携帯電話20から送信されたすべてのアクセス要求が、識別されたI/Oリソースの集合に適合するように、携帯電話20上のソフトウェア30Aを制御することを含むことができる。他の例では、こうした信号通知が、単にヘッドユニット21上のI/Oリソースを無効(ディスエーブル)にすることによるような何らかの方法で、携帯電話20から送信されたアクセス要求を阻止するように、ヘッドユニット21上のソフトウェア30Bを制御することを含むことができる。さらに他の例では、こうした信号通知が、ソフトウェア30A及びソフトウェア30Bを共に制御することを含むことができる。
図2Bに、図1のソフトウェア30Bが使用することのできるコンテンション方式を示すフローチャートを例示する。図2Aに示す方式に加えて、コンテンション方式を利用することができる。
ブロック209では、ソフトウェア30Bが、識別された集合のいずれかのI/Oリソースが現在使用中であるか否かを判定する。菱形210において、いずれも使用中でない場合、ブロック211Aで、ソフトウェア30Bが、特定アプリケーションを、識別された集合のI/Oリソースのみにアクセスさせる。
さもなければ、即ち、この集合の少なくとも1つのリソースが使用中である場合、ブロック211Bで、ソフトウェア30Bが、識別された集合の使用中のリソース毎に、リソースによるアプリケーションのランキング(順位付け)13を識別する。このことを図1に示し、ここではリソース1〜4毎にランキング13が存在する。ブロック212では、ソフトウェア30Bが、アプリケーション識別子をリソースによるランキング13と比較して、アプリケーション40が、識別された使用中のリソースの部分集合のいずれかに対するプライオリティ(優先権)を有するか否かを判定する(このことは信号通知によって実行することができる、というのは、ランキング13はリモート・サーバー13上にあるように示されているからであり、あるいは、ランキングは以前のプロセスで車両インタフェースに送信されていることがあるからである)。この比較は、特定の使用中のリソースを現在使用しているアプリケーションが、この使用中のリソースを要求しているアプリケーションよりも高いプライオリティを有すると考えられるか、低いプライオリティを有すると考えられるかを示す。ブロック213では、ソフトウェア30Bが、この特定のアプリケーション40を、I/Oリソース1〜4の識別された集合のうち、現在使用中でないか、より低いプライオリティのアプリケーションが使用中であるのもののみにアクセスさせる
図3に、図1のソフトウェア30A〜Bの動作を示すフローチャートを例示する。
ブロック301では、ソフトウェア30A〜Bが、携帯電話20上の特定アプリケーション40が、ヘッドユニット21のインタフェースを利用することの要求を送信する。ブロック302では、ソフトウェア30A〜Bが、アプリケーション40がこの時点でヘッドユニット21にアクセスすることを許可されているか否かを示す返送信号を受信し、許可されている場合、利用することのできるリソース1〜4の識別子を受信する。菱形303において、アプリケーション40が許可されていない場合、ブロック304で、ソフトウェア30A〜Bが、アプリケーション40がヘッドユニットにアクセスすることを許可されていないことの通知を出力する。この通知は、携帯電話20またはヘッドユニット21によって、あるいはその両方によって出力することができる。
さもなければ、即ち、菱形303において、アプリケーション40が許可されていない場合、ブロック304Bで、ソフトウェア30A〜30Bが携帯電話20及びヘッドユニット21を制御して、アプリケーション40を、識別されたリソースへ拡張させる。衝突により、(それぞれのマッピング17より)アプリケーション40にとって可能なリソースの部分集合しか利用されない場合、ソフトウェア30A〜Bは通知を生成して、より高いプライオリティのアプリケーションを起動する前に、より低いプライオリティのアプリケーションが一時停止されていることについて運転者に警告する。他の例では、リソースが現在、より低いプライオリティのアプリケーションによって使用されている場合、ソフトウェア30A〜Bは、より低いプライオリティのアプリケーションを自動的に一時停止/終了させて、より高いプライオリティのアプリケーションが、要求するリソースを用いて起動されることを可能にする。
アプリケーション40をヘッドユニット21へ拡張できるものと判定されている場合、サーバー22は、アプリケーション40を制御するための対応する「コントロールパネル」ソフトウェアをヘッドユニットにダウンロードする。要求されているアプリケーションに基づいて、このソフトウェアをダウンロードしてもらうことによって、サービス・プロバイダは、新たなアプリケーションまたは既存のアプリケーションに対するアップデート(更新)が利用可能である際に、これに応じて「コントロールパネル」をカスタマイズ及び更新することができる。ヘッドユニットは、「コントロールパネル」ソフトウェアを表示するためのウェブコード・レンダラを有することができる。
図1を参照すれば、ソフトウェア30A〜Bは、電話機20から延びる無線接続を通してソフトウェア32とインタフェース(相互作用)する。この無線接続は、パケットデータ接続(GPRS(General Packet Radio Service)、EDGE(Enhanced Data GSM Environment)、EVDO(Evolution Data Only)、UTMS(Universal Mobile Telecommunication System)、WiMAX(登録商標)(Worldwide Interoperability for Microwave Access)、WiFi(登録商標)(Wireless Fidelity)等を含むが、これらに限定されない)、ショートメッセージ・サービス(SMS)、または米国特許第6144336号明細書(特許文献7)、米国特許第6690681号明細書(特許文献8)、及び米国特許第6493338号明細書(特許文献9)に記載されている、携帯電話20及びサーバー22上の帯域内信号化(In-Band Signaling)モデムを利用することができる。
なお、図1をさらに参照すれば、携帯電話20は、USB、ブルートゥース(登録商標)、またはWiFi(登録商標)接続を用いることによってヘッドユニット21に結合されることができる。しかし、これらは例に過ぎず、他の場合には、異なる接続及び/またはプロトコルが、電話機20のアプリケーション40がヘッドユニット21のインタフェースを利用するのに適している。
マッピング15は任意の車両状態を有することができ、例示する4つの例はいくつかの例に過ぎないことは明らかである。例えば、他の車両状態は、車両が速度’X’を超えて移動し、かつ同乗者が存在するか否かとすることができる。
ヘッドユニットは、図に示すリソースの全例より少数を含むことができ、あるいは図示しない他のリソースを含むことができることは明らかである。例えば、他の可能なI/Oリソース・コンポーネントは、文字−音声コンポーネントである。
図示する例では、第1アプリケーションが、システム100のインテリジェントな判定に基づき、ヘッドユニット21上に実際に存在するあらゆるリソースの第1部分集合にアクセスすることを許可することができるのに対し、第2の異なるアプリケーションは、リソースの第2部分集合、さらには全リソースにアクセスすることを許可することができる。
アプリケーション40は、例示するように「リソースによって」ランク(順位)付けすることができ、あるいは、すべてのアプリケーション40を含む単一のランキングが存在することができる。システム100は、図に示す「リソースによる」ランキングで実現することができるが、本明細書に記載する概念は、アプリケーションをリソースと独立してランク付けする他のシステムで実現することができることは明らかである。
図4に、安全かつインテリジェントな方法でアプリケーションを選択して車両に配信するシステムを例示する。
前に説明した図1のシステムと図4のシステムとの1つの相違は、アプリケーションのインストール場所にある。図1のシステム100内のアプリケーションA〜Cは、携帯電話20上にインストールされて(ヘッドユニット21または車両によって給電される他のインタフェースを拡張インタフェースとして用いて)動作するのに対し、図4のシステム200内のアプリケーションJ〜Lは、ヘッドユニット221または車両によって給電される他の構成要素上にインストールされている。図4のシステム200では、ソフトウェア230〜232が、ヘッドユニット221上にインストールすることのできるアプリケーションをプロバイダが選択し、選択したアプリケーションの車両への配信をプロバイダが制御することを可能にする。
以下の段落でシステム200の詳細を説明する前に、図1〜3で説明したシステム100の構造及び機能をシステム200(図4〜6)の構造及び機能と組み合わせて単一のシステムにすることができることは明らかである。例えば、単一のシステムが、携帯電話上にインストールされて車両のインタフェースを拡張インタフェースとして使用するいくつかのアプリケーション、及び車両の構成要素上にインストールされたいくつかのアプリケーションを含むことができる。
図5に、図4のソフトウェアの動作を示すフローチャートを例示する。
ブロック501では、車両が始動していることに応答して、制御ソフトウェア230が、車両の始動を示す信号244をサーバー222に送信する。信号244は、USBまたはブルートゥース(登録商標)接続のようなローカル接続上に送信され、モバイル機器220によって無線通信ネットワーク上へ中継される。
ブロック502では、ソフトウェア232が、車両に関連するダウンロード・ディレクトリ239(時として「サンドボックス(砂箱)」と称される)をチェックして、車両へダウンロードすべきアプリケーションが存在するか否かを判定する。ダウンロード・ディレクトリ239内に存在するアプリケーションをインテリジェントに選択するための方式は、後に図6を参照して詳細に説明する。
ソフトウェア232によるチェックが、ダウンロード・ディレクトリ239が少なくとも1つのアプリケーションを含むことを示す場合、処理を継続する。ここで、例示目的で、ダウンロード・ディレクトリ239がアプリケーション240(J〜L)を含むものと仮定する。従って、ブロック503では、ソフトウェア232が信号通知245を生成し送信して、モバイル機器220上のIPゲートウェイ・ソフトウェア231をIPゲートウェイとして動作させて、アプリケーションをヘッドユニット221に転送する。一例では、信号通知245が、ブロック502における判定に応答して、ソフトウェア231を携帯電話220に動的にロードして、車両へのダウンロードのためにソフトウェア231を携帯電話220上で動作させることの通信を含む。携帯電話220が既にソフトウェア231をダウンロードされており、いつでもIPゲートウェイ動作が可能である場合、信号通知245を行わないことができる。他の例では、車両の始動を検出したことに応答して、信号通知245をヘッドユニット221上の制御ソフトウェア230から出すことができる。
ブロック504では、ソフトウェア232が、アプリケーション240を車両上にダウンロードするためのIPパケット250を生成して送信する。IPパケット250は携帯電話220によって受信されて、ソフトウェア231の動作によってヘッドユニット221へ転送される。ブロック505では、ソフトウェア230がIPパケット250を受信して、アプリケーション240(J〜L)を車両上にインストールする(インストールは、ヘッドユニット221の構成要素上、あるいは他の車両構成要素上に行うことができる)。
その後に、車両のユーザは、ヘッドユニット221をインタフェースとして用いて、アプリケーションJ〜Lを動作させることができる。ソフトウェア230及び232は、図1〜3で説明したいずれの原理に従って動作することもできることは明らかである。例えば、ソフトウェア230及び232は、現在の車両状態に応じて動作中のアプリケーションによる、ヘッドユニット221のI/Oリソースの利用を調整することができる。他の例として、アプリケーションが車両及びモバイル機器に共にインストールされているシステムでは、ソフトウェア230及び232が、車両インタフェースを利用するすべてのアプリケーションを、テーブル(表)13(図1)と同様のランキング/プライオリティ・テーブル中に含むことができる。
一例では、ヘッドユニット221が、ソフトウェア230によって制御されるウェブコード・レンダラ299、例えばHTMLレンダラを含む。ウェブコード・レンダラ299は、HTMLコードを表示するように構成されているが、ブラウザとは異なり、ユーザが自由にウェブ・ロケーション(ウェブ上の場所)へナビゲートする(進む)ことはできない。具体的には、ウェブコード・レンダラ299は、プロバイダが許可した、例えばサーバー222が指定したアプリケーションのみを表示する。
上述したフローチャートは、車両上にインストールされたアプリケーションを更新することに応じることは明らかである。車両に特定アプリケーションを事前にロードして、車両上にインストールされたアプリケーションの一部は上記フローチャートに従ってダウンロードすると共に、他のものは製造中に車両上にインストールすることもできる。
従って、上述した原理に基づいて、車両上にアプリケーションをインストールせずに車両を製造することができるが、その代わりに、運転者が車両内に存在する際に、アプリケーションを車両にダウンロードすることができる。車両にダウンロードされるアプリケーションの種類は、運転者によって提供されてネットワーク・サーバー内に規定される嗜好によって支配される。
図6に、図4〜5に示すシステムを、より詳細に例示する。
サーバー222が、車両単位でダウンロードされるのを待つアプリケーションのダウンロード・ディレクトリ239を含むことは、前に説明した。図6に、ダウンロード・ディレクトリ239内のアプリケーションの選択に関与することのできるユーザ・ウェブポータル601、604、及び605を例示し、これらのウェブポータル601、604、及び605の使用例を説明する。
車両のOEM(Original Equipment Manufacturer)のようなプロバイダが、ウェブポータル601を運用する。コンピュータ端末625のようなインタフェースを用いて、プロバイダは、通信650を有するウェブポータル601のアプリケーション選択部608を制御して、アプリケーションのリスト610を、車両上にインストールすることのできる全アプリケーションのリスト609から組み立てる。一般に、リスト609からリスト610を構築することは、プロバイダの技術的観点及び/または事業上の観点からのアプリケーションの検証を含む。
プロバイダは、特定車両上にインストールすべきアプリケーションを、被制御リスト610から選択することの通信651も送信する。これらの選択は、例えば、車両モードをアプリケーションにマッピングすることに基づくことができる。これらの選択652は、ダウンロード・ディレクトリ239に供給される。
すべての利用可能なアプリケーションのリスト609に関しては、このリストは、プロバイダ及び/またはサードパーティが開発したアプリケーションによって組み立てることができることは明らかである。アプリケーションを提供するサードパーティの場合、このサードパーティは、(一例では、プロバイダによって運用されるウェブサーバーをホストとする)ウェブポータル604のアプリケーション提出部618を用いて、リスト609中に含むべきアプリケーション649を提出する。
車両のユーザも、ダウンロード・ディレクトリ239内に含めるべきアプリケーションを、例えば、モバイル機器またはデスクトップ・コンピュータのようなインターネットにアクセス可能なあらゆるコンピュータ装置を用いて選択することができる。コンピュータ端末626が、(一例では、プロバイダによって運用されるウェブサーバーをホストとする)ユーザ・ウェブポータル605のアプリケーション選択部628にアクセスして、アプリケーションの被制御リスト610を見ることができる。そしてユーザは、ユーザが自分の車両上にインストールしたいアプリケーションを、被制御リスト610から選択することの通信661を送信することができる。これらの選択662は、ダウンロード・ディレクトリ239に供給される。
ユーザ・ウェブポータル605は、ユーザが特定アプリケーションをダウンロード・ディレクトリ239から除去できるように構成することもでき、例えば、ユーザは、ダウンロード・ディレクトリ239に追加されたプロバイダ選択のアプリケーション652の1つを除去したいことがある。除去は、既にディレクトリ239へ送信されたアプリケーションの削除によるか、特定アプリケーションが常にダウンロード・ディレクトリ239に追加される前に、こうしたアプリケーションを望まないことを指示することによることができる。
以上によれば、アプリケーションを、車両毎のダウンロード・ディレクトリ内に蓄積することができる。車両の始動時に、こうしたアプリケーションを車両上にダウンロードしてインストールすることができる。次に、ダウンロード・ディレクトリ239は、次の車両の始動までに、新たなアプリケーションを蓄積することができる。
ウェブポータル605のインタフェースと同様のインタフェースを、車両のヘッドユニット上に表示することができる。次にユーザは、こうしたインタフェースから選択を行って、被制御リスト610からアプリケーションを選択することができる。このインタフェースから上記選択を行うと、選択したアプリケーションは、ダウンロード・ディレクトリ内に入れられる代わりに、直ちに車両にダウンロードすることができる。
図7に、安全かつインテリジェントな方法でアプリケーションを選択して車両に配信するシステムを例示する。
前に説明した図1のシステムと図7のシステムとの1つの相違は、アプリケーションのインストール場所である。図1のシステム100内のアプリケーションA〜Cは(ヘッドユニット21、または車両によって給電される他のインタフェースを拡張インタフェースとして用いて)携帯電話20上にインストールされて動作するのに対し、図7のシステム300内のアプリケーションM〜P/Q〜Sは、ヘッドユニット321、または車両によって給電される他の構成要素上にインストールされる。図7のシステム300では、ソフトウェア330〜332は、プロバイダが、ヘッドユニット321上にインストールすることのできるアプリケーションを選択し、選択したアプリケーションの車両へのダウンロードを制御することを可能にする。
システム300の細部を以下の段落で詳細に説明する前に、図1〜6で説明したシステム100及び200の構造及び機能を、システム300(図7〜8)の構造及び機能と組み合わせて単一のシステムにすることができることは明らかである。例えば、単一のシステムは、単一のシステムが、携帯電話上にインストールされて車両のインタフェースを拡張インタフェースとして使用するいくつかのアプリケーション、及び車両の構成要素上にインストールされたいくつかのアプリケーションを含むことができる。
図8に、図7のソフトウェアの動作を示すフローチャートを例示する。
ブロック801では、ヘッドユニット321が、携帯電話320のようなモバイル機器に通信結合される。一例では、通信540が、ヘッドユニット321と携帯電話320とのブルートゥース(登録商標)ペアリングによって確立される。ブルートゥース(登録商標)ペアリングは、車両が始動したこと(ヘッドユニットが起動されてブルートゥース(登録商標)装置を探索する)に応答して行うことができるが、ブルートゥース(登録商標)ペアリングは、携帯電話320の起動、携帯電話320がヘッドユニット321の範囲内に持ち込まれたこと、他のブルートゥース(登録商標)装置がヘッドユニット321から切り離された後の再ペアリングのような、他の状況で生じることができることは明らかである。他の例では、上記通信接続を、ユーザがUSB接続を用いて携帯電話320をヘッドユニット321に接続することによって確立することができる。
ブロック802では、制御ソフトウェア330が携帯電話320の電話番号にアクセスする。携帯電話が、呼出しプランへの加入に連動した特定電話番号で起動され、この電話番号は、制御ソフトウェア330が携帯電話320から読み出す電話番号であることは明らかである。一例では、電話番号を取得するための信号通知542を、ブルートゥース(登録商標)シグナリング(信号通知)を用いて実行する。
ブロック803では、制御ソフトウェア330が信号通知543をサーバー322に送信する。信号通知543は、USB、ブルートゥース(登録商標)、またはWiFi(登録商標)のようなローカル接続上に送信され、携帯電話320によって無線通信ネットワーク上へ中継される。信号通知543の内容は、前に図4に関してより詳細に説明した信号244と同様であるが、それに加えて、取得した電話番号を提供することができる。
ブロック804では、制御ソフトウェア332が、信号通知543に含まれる電話番号をマッピング350と比較する。このマッピングは、特定のヘッドユニット321を介してアクセス可能な複数のダウンロード・ディレクトリA〜Bの各々を、特定の電話番号に関連付ける。例えば、このマッピングでは、第1電話番号をダウンロード・ディレクトリAに関連付け、第2電話番号をダウンロード・ディレクトリBに関連付ける。制御ソフトウェア332は、受信した電話番号とマッピング350との比較に基づいて、ダウンロード・ディレクトリA〜Bのうち1つを選択する。
次に、ソフトウェア332は、ダウンロード・ディレクトリA〜Bのうち選択したものをチェックして、選択したディレクトリ内に現在、アプリケーションが記憶されているか否かを判定する。ダウンロード・ディレクトリA〜B内に存在するアプリケーションをインテリジェントに選択する方式は、後に図9を参照して詳細に説明する。ここで、例示目的で、ダウンロード・ディレクトリ339A及び339Bが現在、それぞれ、ヘッドユニットのフロントエンド設定369A及び369Bに加えて、アプリケーション340A(M〜P)及び340B(Q〜S)を含むものと仮定する。
前段落に注記したように、ダウンロード・ディレクトリA〜Bは、それぞれのアプリケーション340A及び340Bに加えて、ヘッドユニットのフロントエンド設定を含む。設定A〜Bは、HTML(hyper Text Markup Language)コード、またはウェブコード・レンダラ399と互換性のある他のウェブコードとして記憶することができる。ヘッドユニット・フロントエンド設定A〜Bのどちらがヘッドユニット321にダウンロードされているかに応じて、ヘッドユニット321のディスプレイ380が異なるグラフィカル・ユーザ・インタフェースを表示する。ディスプレイ380及びレンダラ399を用いて表示する際に、異なるウェブコード369A及び369Bの各々が、異なるグラフィカル・ユーザ・インタフェースを表示する。例えば、各グラフィカル・ユーザ・インタフェースは、ユーザが選択した特定の壁紙(ウォールペーパー)のような、ユーザがカスタマイズしたそれぞれの設定を有することができる。異なるヘッドユニット・フロントエンド設定A〜Bを生成する方式は、後に図9を参照して詳細に説明する。
ブロック805では、図4で説明した方式と同様に、ソフトウェア322が信号通知を生成し送信して、携帯電話320上のソフトウェア331を、アプリケーションをヘッドユニット321に転送するためのIPゲートウェイとして動作させる。一例では、図4と同様に、こうした信号通知が、ソフトウェア331を携帯電話320に動的にロードして、車両へのダウンロードのためにソフトウェア331を携帯電話320上で動作させることの通信を含む。携帯電話220が既にソフトウェア231をダウンロードされており、いつでもIPゲートウェイ動作が可能である場合、この信号通知を行わないことができる。他の例では、接続540が確立された後に、信号通知345をヘッドユニット321上の制御ソフトウェア330から出すことができる。
ブロック806では、ソフトウェア332が、IPパケット545を生成し送信して、ディレクトリのうち選択したものからのデータ、例えばアプリケーションM〜P及び設定A、またはアプリケーションQ〜S及び設定Bのいずれかを、車両上にダウンロードする。IPパケット545は、携帯電話320によって受信されて、ソフトウェア331の動作によってヘッドユニット321に転送される。この特定の例示では、IPパケット545がアプリケーション及びグラフィカル・ユーザ・インタフェース用の設定を共に含むが、他のシナリオでは、IPパケット545が、アプリケーションまたは設定のいずれかを含むことができることは明らかである。また、選択したダウンロード・ディレクトリ内に現在アプリケーションが存在せず、ダウンロード・ディレクトリ内に記憶された設定に前回のダウンロード以来変更がなされていない場合、IPパケット545を送信しなくてもよいことも明らかである。
ブロック807では、ソフトウェア330が、IPパケット545を受信して、これらのパケット内に含まれるアプリケーションを車両上にインストールする(インストールは、ヘッドユニット321の構成要素上、あるいは他の車両構成要素上にすることができる)。ソフトウェア330は、ウェブコード・レンダラ399を用いて、IPパケット545からの設定を処理して、検出した電話番号に基づく特定のグラフィカル・ユーザ・インタフェースを生成することもできる。
その後は、ディスプレイ380を通したグラフィカル・ユーザ・インタフェース出力が、選択したダウンロード・ディレクトリ内に記憶された設定A〜Bの一方に対応する。車両のユーザは、インストールされたアプリケーションM〜PまたはQ〜Sを、ヘッドユニット321をインタフェースとして用いて動作させることができる。
ソフトウェア330及び332は、図1〜3で説明した原理のいずれかに従って動作することができる。例えば、ソフトウェア330及び332は、現在の車両状態に応じて動作中のアプリケーションによる、ヘッドユニット321のI/Oリソースの利用を調整することができる。他の例として、アプリケーションが車両及びモバイル機器上に共にインストールされているシステムでは、ソフトウェア330及び332が、車両インタフェースを利用するすべてのアプリケーションを、テーブル13(図1)と同様のアプリケーション・ランキング/プライオリティ・テーブル中に含むことができる。
上述した例では、制御ソフトウェア330が、携帯電話320の電話番号にアクセスして、携帯電話320を他の携帯電話から一意的に識別する。他の例では、ヘッドユニット321上の制御ソフトウェアが、通信結合された携帯電話上の異なる値にアクセスして、この携帯電話を他の携帯電話から一意的に識別する。値の他の例は、携帯電話の物理アドレスを含むことができるが、これに限定されない。こうした他の例では、こうした値がマッピングにおいて用いられることは明らかであり、例えば、他の値が物理アドレスである場合、マッピングが、ダウンロード・ディレクトリに関連する物理アドレスを含む。
上述した例では、制御ソフトウェア330が、アクセスした一意的識別子(この例では電話番号)をサーバー322に送信する。他の例では、マッピング350を車両上に記憶することができる。こうした場合、ソフトウェア330が、上記比較に応じて、マッピング中に挙げられた特定のダウンロード・ディレクトリを識別し、特定のダウンロードを指定する識別子をサーバー322に送信する。そしてサーバー322は、識別したダウンロード・ディレクトリからデータを送信するIPパケット545で応答する。
図9に、図7〜8に示すシステムを、より詳細に例示する。
サーバー322が、ダウンロードを待つ複数のダウンロード・ディレクトリ339A〜Bを含むことは、前に説明した。図9は、ダウンロード・ディレクトリ339A〜Bの作成、及びディレクトリ毎のアプリケーションの選択に関与することのできるユーザ・ウェブポータル905を例示し、このウェブポータル905の使用例を説明する。
車両のユーザは、ユーザ・ウェブポータル905のプロファイル作成部930を用いて、車両に対応する複数のプロファイルを作成する。プロファイルは、車両を使用し得る人物毎に作成することができる。フィールド927は、それぞれが各人物に対応する携帯電話の電話番号または他の一意的識別子を要求する。この電話番号と共に、各人物の名前、または人物毎の他の情報を収集することができる。プロファイル作成後または作成中に、サーバー322はプロファイル毎のダウンロード・ディレクトリを作成して、番号/ディレクトリの組合せ毎にマッピング350を更新する。一部の例では、ユーザが、作成されたプロファイルをランク付けして、ヘッドユニットをモバイル機器のうち2つ以上に同時に結合することができる場合(このことが可能であるか否かは、接続プロトコルに依存し得る)、対応するプロファイルのうちより高くランク付けされたものを使用することができるように、作成部930を構成することができる。
プロファイル作成中及び作成後に、ウェブポータル905は、例えば、モバイル機器またはデスクトップ・コンピュータのようなインターネットにアクセス可能なあらゆるコンピュータ装置を用いて、ダウンロード・ディレクトリ339A〜Bに含めるべきアプリケーションを選択するように動作することができる。コンピュータ端末926は、(一例では、プロバイダによって運用されるウェブサーバーをホストとする)ユーザ・ウェブポータル905のアプリケーション選択部928にアクセスして、車両上にインストールすることのできるアプリケーションの被制御リストを見る。そしてユーザは、ユーザが自分の車両上にインストールしたいアプリケーションを、被制御リストから選択することの通信961を、ディレクトリ毎に送信することができる。これらの選択962はそれぞれ、ダウンロード・ディレクトリ339A〜Bに、ディレクトリ毎に供給される。
ユーザ・ウェブポータル905は、ユーザが特定のアプリケーションをダウンロード・ディレクトリ339A〜Bから除去できるように構成することもでき、例えば、ユーザは、プロバイダによってダウンロード・ディレクトリ339Aまたは339Bに追加された、プロバイダ選択のアプリケーションを、ディレクトリベースで除去したいことがある。除去は、既にディレクトリ339Aまたは339Bへ送信されたアプリケーションの削除によるか、特定アプリケーションが常にダウンロード・ディレクトリ339Aまたは339Bに追加される前に、こうしたアプリケーションを望まないことを指示することによることができる。
ユーザ・ウェブポータル905は、ヘッドユニット・フロントエンド設定カスタマイズ部928を含むこともできる。このカスタマイズ部928は、新たな設定369A〜Bがダウンロード・ディレクトリ339A〜Bに追加されることを可能にし、各人物の設定を、それぞれの要求に応じてカスタマイズする。例えば、第1の壁紙背景をダウンロード・ディレクトリ339Aに追加することができ、第2の異なる壁紙背景を、ダウンロード・ディレクトリ339Bに追加することができる。他のカスタマイズは、カスタマイズされたグラフィカル・インタフェース・ボタン、カスタマイズされたグラフィカル・ユーザ・インタフェース・レイアウト、カスタム(特注)画像、等を含むことができる。
以上によれば、アプリケーションを、車両毎のダウンロード・ディレクトリ339A〜B内に、ディレクトリ毎に蓄積することができる。モバイル機器のうち特定のものに結合されているヘッドユニット上に、ダウンロード・ディレクトリ339A〜Bのうち対応するものからのデータをダウンロードし、車両上にインストールして、カスタマイズされたアプリケーション・セット及びカスタマイズされたユーザ・インタフェースを提供することができる。
ウェブポータル905のインタフェースと同様のインタフェースを、車両のヘッドユニット上に表示することができることは明らかである。そしてユーザは、こうしたインタフェースから選択を行って、上記被制御リストからアプリケーションを選択することができる。選択したアプリケーションは、ダウンロード・ディレクトリ内に入れられる代わりに、直ちに車両にダウンロードすることができる。
図10に、ヘッドユニットの構成に応じて、ヘッドユニットのグラフィカル・インタフェースを選択するシステムを例示する。
システム1000は、サーバー1022及びヘッドユニット1021を含み、これらは前に説明したサーバー及びヘッドユニットのいずれかと同様の構成要素を含むことができる。サーバー1022とヘッドユニット1021は、ヘッドユニット1021に結合されたモバイル機器(図示せず)を用いて通信することができる。ヘッドユニット1021は制御ソフトウェア1030を含み、サーバー1022は制御ソフトウェア1032を含む。
ソフトウェア1032は、例えばヘッドユニット1021を探査して(1081)情報を収集することによって、ヘッドユニット1021の構成を識別する。ソフトウェア1031は、ヘッドユニット1021の構成を識別する情報で応答する(1082)。応答1082は、次の少なくとも1つを含むことができる:車両の型式/モデル/年式、所定のコード、またはヘッドユニット1021の構成のアドホック(特定目的)リスト(例えば、カラー/モノクローム・ディスプレイ、ネイティブ(実効)解像度、等)。
次に、ソフトウェア1032が、複数のグラフィカル・ユーザ・インタフェースから、ヘッドユニット情報1082に基づいて選択する。例えば、ヘッドユニット情報1082が所定のコードを含む場合、ソフトウェア1032は、このコードを、記憶されているコード対グラフィカル・ユーザ・インタフェースY〜Zのマッピング1085と比較する。選択されるグラフィカル・ユーザ・インタフェースは、情報1082によって報告されるヘッドユニット1021の特定の構成に対応する。例えば、ヘッドユニット1021がモノクローム・ディスプレイを有する場合、選択されるグラフィカル・ユーザ・インタフェース(GUI:Graphical User Interface)はインタフェースYとすることができるのに対し、ヘッドユニット1021がカラー・ディスプレイを有する場合、選択されるGUIはインタフェースZとすることができる。あるいは、恐らくは、ヘッドユニット1021が第1値のネイティブ解像度を有する場合、選択されるGUIはインタフェースYとすることができるのに対し、ヘッドユニット1021が第2値のネイティブ解像度を有する場合、選択されるGUIはインタフェースZとすることができる。自動車の型式/モデル/年式が第1デザインのインテリア(内装)、例えば豪華なモチーフを示す場合、選択されるGUIはインタフェースYとすることができるのに対し、自動車の型式/モデル/年式が第2デザインのインテリア、例えばスポーツカーのモチーフを示す場合、選択されるGUIはインタフェースZとすることができる。
一旦、グラフィカル・ユーザ・インタフェースを選択すると、ソフトウェア1032は、グラフィカル・ユーザ・インタフェースY〜Zのうち選択したもののIPパケット転送1045を行う。IPパケット転送1045は、前述した携帯電話(図示せず)のIPゲートウェイ・ソフトウェアを利用することができることは明らかである。ソフトウェア1030は、受信したグラフィカル・ユーザ・インタフェースを自動的にインストールする。選択したグラフィカル・ユーザ・インタフェースは、デフォルトのグラフィカル・ユーザ・インタフェース1090、あるいは以前にダウンロードして転送1045の前にヘッドユニット1021上に存在するグラフィカル・ユーザ・インタフェースを置き換えることができる。
前述したフロントエンド設定は、選択してインストールしたGUIに適用することができることは明らかである。例えば、選択したGUIをヘッドユニット1021上にインストールし、さらに、現在ヘッドユニット1021に結合されているモバイル機器の電話番号に応じてカスタマイズしたフロントエンドの選択に基づいて、外見を修正することができる。
図11に、リモート計算の許可を生成してヘッドユニットに送信するシステムを例示する。
システム1100は、サーバー1122及びヘッドユニット1121を含み、これらは、前述したサーバー及びヘッドユニットのいずれかと同様の構成要素を含むことができる。サーバー1122とヘッドユニット1121とは、モバイル機器1131を用いて通信することは明らかである。ヘッドユニット1121は制御ソフトウェア1130を含み、サーバー1122は制御ソフトウェア1132を含む。
ヘッドユニット1121は、モバイル機器1131上で実行されるVirtual Network Computing(VNC(登録商標))サーバー1149に接続するための、VNCクライアント1148のようなリモート・デスクトップ視聴プログラムを含む。背景として、VNCクライアントとサーバーとが通信して、サーバーのデスクトップまたは他の現在表示をクライアントのディスプレイ上に表示する。そして、クライアントに直接接続されたヒューマン・インタフェース装置、例えばキーボード、マウス、等を、表示された画像と共に用いて、VNCサーバーを実行するコンピュータ装置を遠隔操作することができる。
制御ソフトウェア1130は、特定アプリケーションX(1140)を指定する要求1155をモバイル機器1131から受信する。制御ソフトウェア1130は、要求1155に対応するアプリケーション識別子を、識別子自体を要求1155から抽出するか、この要求から、あるいはモバイル機器1131との何らかの通信から収集した情報に基づく検査を用いるかのいずれかによって識別する。制御ソフトウェア1130は、アプリケーション識別子を含む通信1156を送信する。
制御ソフトウェア1132は、アプリケーション識別子を内部テーブルと比較して、アプリケーションXについてのVNC許可1157を生成する。VNC許可1157は、このアプリケーションに伴ってVNCが許可される特定条件を指定する。例えば、アプリケーションXがナビゲーション・アプリケーションである場合、許可1157は、車両が停車中であるか移動中である際にVNCが許可されることを指定することができる。これとは対照的に、アプリケーションXがメディア(媒体)作成アプリケーションである場合、許可1157は、車両が停車中である際のみにVNCが許可されることを指定することができる。
VNC許可1157は、アプリケーションが現在、フルスクリーン(全画面)モードで実行されているかウィンドウ・モードで実行されているかに基づいて、異なる許可を指定することもできる。例えば、ナビゲーション・アプリケーションは、車両が移動中である際に許可することができるが、ナビゲーション・アプリケーションがモバイル機器1131上で、フルスクリーン・モードで実行されている間のみに限る。これにより、車両が移動している間にユーザがナビゲーション・アプリケーションをウィンドウ・モードに切り換えた場合、VNCの機能を直ちに停止する。
VNC許可1157は、電話番号を指定することもできる。例えば、VNCは、モバイル機器1131がメディアプレーヤ・アプリケーションを実行している際に許可することができるが、モバイル機器が特定電話番号を有する際のみである(このことは、パネル制御の形態として用いることができる)。
制御ソフトウェア1130は、受信したVNC許可1157を、VNC許可のデータベース1135内に記憶する。制御ソフトウェア1130は、データベース1135内に記憶されているVNC許可に基づく条件を連続的に監視して、制御信号1160を発生する。制御信号1160は、モバイル機器1131の視覚表示1161を、現在、VNCクライアント1148がヘッドユニット1121のディスプレイ上に表示することができるか否かを制御する。制御信号1160は、ヘッドユニット1121の入力インタフェースを用いて行った入力をVNCサーバー1149に送信するか否かも制御する。
図12に、新たなアプリケーションの要求を生成するモバイル機器、または新たなアプリケーションを選択するユーザ・ウェブポータルに応答して、グラフィカル・ユーザ・インタフェースのアップデートをヘッドユニットに転送するシステムを例示する。
システム1200は、サーバー1222及びヘッドユニット1221を含み、これらは、前述したサーバー及びヘッドユニットのいずれかと同様の構成要素を含むことができる。サーバー1222とヘッドユニット1221とがモバイル機器1231を用いて通信することは明らかである。
サーバー1222は、システム1200内で少なくとも2つの異なる形態で使用される新たなアプリケーションの指標を受信することができる(新たなアプリケーションとは、ヘッドユニット1221にまだダウンロードされたことのないアプリケーション、またはまだヘッドユニット1221を拡張インタフェースとして利用したことのないアプリケーションを称する)。1つの形態では、モバイル機器1231が、新たなアプリケーションX(1240)がヘッドユニット1221を拡張インタフェースとして利用することの指標を送信する。より具体的には、この指標は、制御ソフトウェア1230が、モバイル機器1231からの要求1270を受信したことに応答して生成した許可要求1271である。
サーバー1222が新たなアプリケーションの指標を受信することのできる他の方法は、ユーザ・ウェブポータル1205を通した制御によるものである。ユーザ・ウェブポータル1205は、前述したウェブポータルと同様である。アプリケーション選択ツール1228を用いて、ユーザはあらゆるリモート(遠隔)コンピュータを用いて、ヘッドユニット上へのインストール用の対応するダウンロード・ディレクトリ(図示せず)に含めるべきアプリケーションを選択する。従って、新たなアプリケーションを含む受信した選択1274は、システム1200内で使用される新たなアプリケーションの指標の他の形態である。
こうした指標を検出したことに応答して、制御ソフトウェア1232は、新たなアプリケーションXについてのグラフィカル・ユーザ・インタフェースのアップデートを含むIPパケット転送1245を送信すべきか否かを判定する。前述したアプリケーションの被制御リスト(図6)に新たなアプリケーションXが含まれない場合、こうしたIPパケット転送を送信しないことは明らかである。一例では、グラフィカル・ユーザ・インタフェースのアップデートが、前に選択してインストールしたグラフィカル・ユーザ・インタフェース(図10)を、新たなアプリケーションXにアクセスするためのアイコンを追加するように修正する。他の例では、グラフィカル・ユーザ・インタフェースのアップデートが、新たなアプリケーションXを動作させるための、前に選択してインストールしたグラフィカル・ユーザ・インタフェースのアップデートの他の形態を含む。制御ソフトウェア1230は、要求1270及び/または選択1274の送信に応答して、アップデートを自動的にインストールする。ダウンロードがダウンロード・ディレクトリ内で車両の始動を待機している場合、転送1245をアプリケーション自体のダウンロードと共に含めることができることは明らかである。
図13Aに、ペアレンタル・コントロール方式の事前動作を示すフローチャートを例示する。
ブロック1301では、サーバーが少なくとも1つのプロファイルを、ペアレンタル・コントロール(親権者による規制)を受けるものとして指定する。このプロファイルは、口座保有者が、例えばウェブポータルを用いて選択を行うことによって選択することができる。
ブロック1302では、サーバーが、ペアレンタル・コントロールを受けるプロファイルについてペアレント(親権者、一般に口座保有者)として指定されたユーザによるログインを受信する。ブロック1303では、サーバーが、ペアレンタル・コントロールを受けるプロファイルに関連するアプリケーションのリストを、ウェブポータルを用いて表示する。
ブロック1304では、このリストを表示した後に、サーバーが、表示されたリストからの選択を受信する。サーバーは、これらの選択を、ペアレンタル・コントロールを受けるプロファイル中に記憶することができる。これらの選択は、このリストからのアプリケーション、及び/または、条件付き許可の場合はより詳細な情報を含むことができる(追加的許可は、後により詳細に説明する)。
図13Bに、ペアレンタル・コントロール方式の動作を示すフローチャートを例示する。
ブロック1320では、携帯電話がヘッドユニットに通信結合されたことに応答して、ヘッドユニットが、サーバーと通信するために使用する携帯電話の電話番号を取得する。ブロック1321では、ヘッドユニットがこの電話番号をサーバーに送信して解析させる。取得した電話番号が、ペアレンタル・コントロールを受けるものとして指定されたプロファイルに一致しない場合、ペアレンタル・コントロール・プロセスが完了する(ブロック1322)。
さもなければ、即ち、取得した電話番号が、ペアレンタル・コントロールを受けるプロファイルに対応する場合、ブロック1323で、サーバーがペアレンタル・コントロールを実行する。一例では、こうした実行がブロック1323〜1327を含み、次段落で説明するVNC許可プロセスと同様である。
ブロック1323では、サーバーがペアレンタル・コントロール・メッセージをヘッドユニットに送信する。ブロック1324では、ヘッドユニットが、ペアレンタル・コントロール・メッセージに基づく条件を連続的に監視する。ブロック1325では、ヘッドユニットが、特定アプリケーションがヘッドユニットを拡張インタフェースとして使用することを阻止し、及び/または、ヘッドユニット上にインストールされた特定アプリケーションが実行されることを阻止する。例えば、ヘッドユニットが、特定の携帯電話が電話呼出しを受信していることの指標を受信することはできるが、そこで、ヘッドユニットをこの電話呼出し用の拡張インタフェースとして使用することは阻止する。あるいは、他の例では、ヘッドユニットが、メディアプレーヤ・アプリケーションをこのヘッドユニット上で実行しようとする試みを阻止することができる。上記連続的な監視は、受信したペアレンタル・コントロール・メッセージを記憶しているヘッドユニット上のデータベースによって促進することができる。
ブロック1326では、ヘッドユニットが、特定アプリケーションがこのヘッドユニットを拡張インタフェースとして使用すること、及び/または、特定アプリケーションがこのヘッドユニット上で直接実行されることを、条件付きで阻止する。例えば、ヘッドユニットは、特定の携帯電話が電話呼出しを受信していることの指標を受信することはできるが、そこで、着信した呼出し上の発呼者IDフィールドの値に基づく条件付きで、このヘッドユニットを拡張インタフェースとして使用することを阻止する。より具体的には、ペアレンタル・コントロール・メッセージが、特定電話番号を例外として指定して、ヘッドユニットが電話機用の拡張インタフェースを提供することを防止することができる。ヘッドユニットは、発呼者ID値を携帯電話から受信して、この携帯電話がヘッドユニットのインタフェースを利用することを条件付きで阻止する。ヘッドユニットが、車両の状態に基づく条件付きでアプリケーションを阻止することができ、例えば、ヘッドユニットは、車両が現在移動中である場合のみに、携帯電話がこのヘッドユニットのインタフェースを利用することを阻止する。
ブロック1327では、ペアレンタル・コントロール・メッセージにより特定アプリケーションが許可されている場合に、ヘッドユニットはこのアプリケーションを阻止しない。この場合、ヘッドユニットは、アプリケーションが、サーバーによる許可により、例えばアプリケーションが上記被制御リスト(図6)上にあるか否かに応じて動作することを可能にする。
他の例では、システムが、具体的に上述したプロセスと異なるプロセスを用いるパネル制御方式を実行することができることは明らかである。例えば、他の例では、ブロック1323〜1327のプロセスを用いない。その代わりに、ヘッドユニットが状態及びアプリケーション要求を連続的にサーバーに報告し、これにより、ペアレンタル・コントロール設定に応じた現在の許可を動的に引き出す。そして、サーバーはヘッドユニットを制御して、現在許可されていないアプリケーションを阻止する。
自動車ヘッドユニットをモバイル機器用の拡張インタフェースとして動作させるための拡張可能な方式
自動車ヘッドユニットをモバイル機器用の拡張インタフェースとして動作させるための既知の方式が存在する。しかし、既知の方式では、自動車ヘッドユニットの構成は製造時に固定され、その結果、新たに発売・公開されたモバイル・アプリケーションで動作不能になり得る。部分的な解決策では、新たなモバイル機器アプリケーションが自動車ヘッドユニットにダウンロードされるが、このモバイル機器アプリケーションの(自動車ヘッドユニット上への)ダウンロード、インストール、及び(自動車ヘッドユニット上での)動作を可能にするためには、自動車ヘッドユニットが比較的高価な構成要素で製造されていることを必要とする。
図14に、自動車ヘッドユニットをモバイル機器用の拡張インタフェースとして動作させるシステムを例示する
システム1400は、サーバー1411、自動車ヘッドユニット1412、及びモバイル機器1413(一例では、長距離無線装置、例えばセルラ電話機とすることができる)を含み、これらはそれぞれ、処理装置1408、1409、及び1410を含む。自動車ヘッドユニット1412は、ブルートゥース(登録商標)トランシーバまたはUSBポートのような短距離入力/出力インタフェースを含み、これは、自動車ヘッドユニット1412を、モバイル機器1413のような利用可能なモバイル機器に結合するように構成されている。接続1415は、自動車ヘッドユニット1412とモバイル機器1413との接続を表す。サーバー1411は、自動車ヘッドユニット1412と通信するように構成されたネットワーク・インタフェースを含む。一例では、サーバー1411からの通信1416が、接続1415を通して(一部の場合には、自動車ヘッドユニットがモバイル機器の長距離無線を利用して、リモート・ネットワークと通信することができる)、あるいは他の経路を通して(一部の場合には、自動車ヘッドユニットが、自動車の長距離無線を利用して、リモート・ネットワークと通信することができる)、自動車ヘッドユニット1412に到着することができる。
サーバー1411は、1つ以上のアプリケーション命令1425のグループを記憶するメモリを含む(各グループがモバイル機器アプリケーションに対応する)。あるグループのアプリケーション命令は、モバイル機器アプリケーションが発売・公開されて時間が経つと共に更新することができる。自動車ヘッドユニットは、人間−機械インタフェース(HMI)アプリケーション1421のような組込みソフトウェアを含み、これは、上記とは対照的に、自動車ヘッドユニット1412の製造時に固定することができる。テンプレートHMIアプリケーション1421は、ダウンロードされたアプリケーション命令を実行するように構成された「シン・クライアント(小型軽量クライアント)」である。ここでも、テンプレートHMIアプリケーション1421は「シン・クライアント」と称することができ、インタプリタ、即ちスクリプト言語、例えばJava(登録商標)スクリプトを他のプログラミング言語に翻訳するコンポーネントとは独立して動作する。テンプレートHMIアプリケーション1421は、複数の一般的な表示スクリーン、例えば複数のHMIスクリーン1423を含むことができる。
ヘッドユニット上の多数のアプリケーション・スクリーンを、複数のスクリーン型の1つとして一般化することができる。ある例では、複数のスクリーン型が、情報型スクリーン、例えば情報のリストを示すスクリーン、対話型スクリーン、例えば、ソーシャル・ネットワーク・ポストまたは電子メール・メッセージのような対話型メッセージを示すスクリーン、コンテンツ表示スクリーン、例えば、音楽アプリケーションまたは書籍アプリケーションからのコンテンツのような現在支払中のコンテンツを表示するスクリーンを含む。従って、ある例では、複数のHMIスクリーン1423が、情報スクリーン、コンテンツ表示スクリーン、及び対話型メッセージスクリーンを含む。複数の一般的表示スクリーン、例えば複数のHMIスクリーン1423どうしを組み合わせて、所定アプリケーションのスクリーンを形成することができる。個別のテンプレート・フォーマットは、1つの所定アプリケーションから他の所定アプリケーションへ変化しなくてもよく、内容、画像があれば画像、スクリーンを表示する順序、及び電話機上に存在するアプリケーション機能へのボタン・マッピングが、1つの所定アプリケーションから他の所定アプリケーションへ変化する。
処理装置1408は、アプリケーション命令のグループ1425のうち少なくとも1つを、自動車ヘッドユニット1412のメモリ1450にダウンロードする。このダウンロードは随時行うことができるが、一例では、処理装置1409または処理装置1410から要求を受信したことに応答して行うことができる。
アプリケーション命令のグループのダウンロードは、現在の車両の状態に基づく、モバイル機器1413のアプリケーションが自動車ヘッドユニット1412のリソースを利用することを許可されていることの判定に応答することもできる。アプリケーションが許可されているか否かの判定は、本明細書で図1〜13Bを参照して説明した原理の任意の組合せを含むことができることは明らかである。ある例では、アプリケーションが自動車ヘッドユニット1412のリソースを利用することを許可されていないものと判定されたことに応答して、ダウンロードを行わないことができる。ある例では、アプリケーションが自動車ヘッドユニット1412のリソースを利用することを許可されていないにもかかわらず、サーバー1411が現時点でアプリーションに自動車ヘッドユニット1412のリソースを利用させないことができるものと判定されたことに応答して、ダウンロードを行うことができる。
ダウンロードしたアプリケーション命令は、テンプレートHMIアプリケーション1421によって実行する際に、テンプレートHMIアプリケーション1421に、特定のモバイル機器アプリケーション1414を制御する方法について、特定のモバイル機器アプリケーション1414が解釈すべきコマンド、及び/またはこれらのコマンドのフォーマットを含めて指示する。より一般的に述べれば、アプリケーション命令のダウンロード及び実行は、テンプレートHMIアプリケーション1421(自動車ヘッドユニット上に製造時にインストールされた元のHMIアプリケーションとすることができる)が、新たに発見した特定のモバイル機器アプリケーション1414(「新たな」モバイル機器アプリケーション、即ち、自動車ヘッドユニットの製造後に発売・公開され、さらには開発されたモバイル機器アプリケーションとすることができる)を制御することを可能にする。
ある例では、上記命令が、複数のHMIスクリーンの少なくとも一部を、要求をしたアプリケーション用に表示する特定順序を示す。換言すれば、要求をしたアプリケーション用の特定順序は、他のアプリケーションに対応する特定順序と異なってもよい(モバイル機器の複数のアプリケーション用の各命令は、異なる順序を示し得る)。1つのアプリケーションが、複数のHMIスクリーンの、他のアプリケーションとは異なる部分を使用することができることは明らかである(例えば、1つの所定のアプリケーションがすべてのスクリーンを使用し得るのに対し、他の所定のアプリケーションは、1つのスクリーンしか使用しないことがある)。
応答を、特定のモバイル機器アプリケーション1414からテンプレートHMIアプリケーション1421へ送信することができるものと想定され場合、ダウンロードされるアプリケーション命令は、テンプレートHMIアプリケーション1421によって実行される際に、テンプレートHMIアプリケーション1421に応答のフォーマット/構造を提供するように構成することができ、このフォーマット/構造は、
テンプレートHMIアプリケーション1421が、この応答に含まれる情報を表示する方法を記述した情報を含む。応答を、特定のモバイル機器アプリケーション1414からテンプレートHMIアプリケーション1421へ送信することができるものと想定される場合、ダウンロードされるアプリケーション命令は、テンプレートHMIアプリケーション1421によって実行される際に、テンプレートHMIアプリケーション1421に、コマンドのリスト、及び関係する使用事例について、テンプレートHMIアプリケーション1421とモバイル機器アプリケーション1414との間で交換されるメッセージの順序及び列を作成する応答を提供するように構成することができる。
図15に、図14のサーバー、自動車ヘッドユニット、及びモバイル機器が実行することのできる動作の一例を示すシグナリング(信号通知)図を例示する。
自動車ヘッドユニット1412とモバイル機器1413とが結合された後に、自動車ヘッドユニット1412は、自動車ヘッドユニット・プロファイルをモバイル機器1413に提供する(信号1502)。自動車ヘッドユニット・プロファイルは、自動車ヘッドユニット1412の一意的識別子を含むことができる。自動車ヘッドユニット・プロファイルは、自動車ヘッドユニット1412上に現在記憶されているアプリケーション命令の全グループのリストを含むことができる。ある例では、自動車ヘッドユニット・プロファイルが、自動車ヘッドユニット1412がサポートする少なくとも1つの言語またはプロトコルも識別する。
モバイル機器1413は、モバイル機器プロファイル及びヘッドユニット・プロファイルをサーバー1411に提供する(信号1503)。モバイル機器プロファイルは、一意的識別子、例えばモバイル機器の一意的識別子またはユーザ・アカウント識別子を含むことができ、これは、自動車ヘッドユニット1412の一意的識別子とは異なる。モバイル機器プロファイルは、モバイル機器1413上に現在記憶されている全アプリケーションのリストを含むことができる(しかし、一部の例では、一意的識別子がユーザ・アカウントに対応して、サーバー1411が、アカウント識別子を基に、このユーザ・アカウントに現在関連する全アプリケーションを確認することができる)。ある例では、モバイル機器1413が、自動車ヘッドユニット1412によってサポートされるテンプレートHMIアプリケーション1421を識別し、アプリケーション1414を識別して、テンプレートHMIアプリケーション1421と共に動作する。
サーバー1411は、アプリケーション命令1425、例えば一組のアプリケーション命令を、モバイル機器1413へダウンロードする(信号1507)。ある例では、サーバー1411が、識別したアプリケーションに対応するアプリケーション・ロジック、例えば、特定アプリケーションに対する命令/制御を行うように構成されたロジックをダウンロードすることができる。ある例では、ダウンロードされるアプリケーション命令が、コマンドを対応するアプリケーション・ロジックによって実行した結果を含む。自動車ヘッドユニット1412向けのダウンロードは、リストからのアプリケーション命令に対するアップデート、または自動車ヘッドユニット1412上にまだ記憶されていない新たなアプリケーション命令を含むことができる。同様に、モバイル機器1413向けのダウンロードは、モバイル機器1413の既存のアプリケーション用のアップデート、あるいは新たなアプリケーションのダウンロードとすることができる。
モバイル機器1413は、受信したあらゆるアプリケーション・ロジックをローカルメモリに記憶して、ダウンロードしたアプリケーション命令1425を自動車ヘッドユニットに提供する(信号1508)。モバイル機器1413のメモリに記憶されているアプリケーション・ロジックは、モバイル機器1413が受信したユーザ入力に応答して実行することができる。
自動車ヘッドユニット1412がアプリケーション命令を受信する場合、自動車ヘッドユニット1412は、自動車ヘッドユニット1412を拡張インタフェースとして利用することのできるモバイル機器アプリケーション用のソフトウェア・ボタンで、グラフィカル・ユーザ・インタフェースを構築する。表示されるGUIは、テンプレートHMIアプリケーション1421(図14)のHMIスクリーン1423(図14)のうち1つを利用することができる。自動車ヘッドユニット1412を拡張インタフェースとして利用するモバイル機器アプリケーションを選択するユーザ入力に応答して、自動車ヘッドユニット1412は、ダウンロードしたアプリケーション命令のうち対応するものを実行する(信号1511)。自動車ヘッドユニットは、対応するアプリケーション命令を実行した結果に基づいて、テンプレートHMIアプリケーションを操作する(信号1513)。
1つの使用例では、アプリケーション命令のグループの第1命令を実行することによって、自動車ヘッドユニットが特定メッセージをモバイル機器アプリケーションに送信し、モバイル機器アプリケーションは、コンテンツを自動車ヘッドユニットに返送することによって応答する。この使用例では、グループ内の次の命令によって、自動車ヘッドユニットが、このコンテンツの全体または一部を、この次の命令に含まれるパラメータまたは値と比較する。この比較の結果に応じて、自動車ヘッドユニットは、次の命令に進むか、次の命令の後の他の命令に直接進むか、ユーザが自動車ヘッドユニットのインタフェースを介して選択を入力するのを待つか、終了するか、等を、実行する命令の特異性に応じて行うことができる。
図14及び15を参照して説明した原理に従って動作するある例では、アプリケーションが自動車ヘッドユニットのリソースを利用するためのアプリケーション・ロジックを、モバイル機器と自動車ヘッドユニットとの間で配信する。図14及び15を参照して説明した原理に従って動作する他の例では、アプリケーション・ロジックに関連するすべてのコードを、モバイル機器上に記憶する。
ある例では、命令を記憶しているメモリ装置が提供され、これらの命令は、処理装置による実行に応答して、処理装置に動作を実行させる。ある動作は、モバイル機器と自動車ヘッドユニットとを結合することを含む。ある動作は、モバイル機器のアプリケーションが、自動車ヘッドユニットのリソースを利用することの要求をリモート・ネットワーク装置へ送信することを含み、この要求は、自動車ヘッドユニットの第1プロファイル及びモバイル機器の第2プロファイルを含む。ある動作は、この要求を送信したことに応答して、リモート・ネットワーク装置から命令を受信することを含み、これらの命令は、自動車ヘッドユニットの組込みソフトウェアによって実行されて、要求をしたアプリケーションが自動車ヘッドユニットのリソースを利用することを可能にする。
ある例では、上記組込みソフトウェアが、テンプレートHMIアプリケーション及び複数のHMIスクリーンを含み、上記命令が、複数のHMIスクリーンの少なくとも一部を、要求をしたアプリケーション用に表示する指定順序を示す。ある例では、人間−機械インタフェース(HMI)アプリケーションが、インタプリタ・コンポーネントなしに動作する。
ある例では、上記第1プロファイルが、自動車ヘッドユニットに対応する第1の一意的識別子を識別し、かつ、上記組込みソフトウェアに関連する言語またはプロトコルを識別する。ある例では、上記第2プロファイルが、第1の一意的識別子とは異なる第2の一意的識別子を識別する。
ある例では、上記命令が、要求をしたアプリケーションに関連するアプリケーション・ロジックによって実行されるコマンドまたは制御機能の結果を含む。ある例では、上記動作が、上記要求に応答して、モバイル機器上に記憶され、かつアプリケーション・ロジックに対応するコードを更新することを含む。ある例では、アプリケーション・ロジックに対応するコードが、モバイル機器がユーザ入力を受信したことに応答して、自動車ヘッドユニットと相互運用されるように構成され、この相互運用は、自動車ヘッドユニットによって上記命令を実行した結果に応じる。
ある例では、命令を記憶しているメモリ装置が提供され、これらの命令は、処理装置による実行に応答して、処理装置に動作を実行させる。ある動作は、モバイル機器のアプリケーションが、自動車ヘッドユニットのリソースを利用することの要求を受信することを含み、この要求は、自動車ヘッドユニットの第1プロファイル、及びモバイル機器の第2プロファイルを含む。ある動作は、要求をしたアプリケーションが、自動車ヘッドユニットのリソースを利用することを許可されているか否かを、現在の車両の状態に基づいて判定することを含む。ある動作は、要求をしたアプリケーションが自動車ヘッドユニットのリソースを利用することを許可されているものと判定されたことに応答して、命令を自動車ヘッドユニットにダウンロードすることを含み、この命令は、自動車ヘッドユニットの組込みソフトウェアによって実行されて、要求をしたアプリケーションが自動車ヘッドユニットのリソースを利用することを可能にする。
ある例では、上記組込みソフトウェアが、テンプレートHMIアプリケーション及び複数のHMIスクリーンを含み、上記命令が、複数のHMIスクリーンの少なくとも一部を、要求をしたアプリケーション用に表示する指定順序を示す。ある例では、テンプレートHMIアプリケーションが、インタプリタ・コンポーネントなしに動作する。
ある例では、上記第1プロファイルが、自動車ヘッドユニットに対応する第1の一意的識別子を識別し、かつ上記組込みソフトウェアに関連する言語またはプロトコルを識別する。ある例では、上記第2プロファイルが、第1の一意的識別子とは異なる第2の一意的識別子を識別する。
ある例では、上記命令が、アプリケーション・ロジックによって実行されるコマンドまたは制御機能の結果を含む。ある例では、上記動作が、要求をしたアプリケーションが車両のリソースを利用することを許可されているものと判定されたことに応答して、モバイル機器上に記憶され、かつアプリケーション・ロジックに対応するコードを更新することを含む。ある例では、アプリケーション・ロジックに対応するコードが、モバイル機器がユーザ入力を受信したことに応答して、自動車ヘッドユニットと相互運用されるように構成され、この相互運用は、自動車ヘッドユニットが上記命令を実行した結果に応じる。
ここで図16を参照し、図16に、本発明の他の態様、即ち、自動車ヘッドユニットのHMIを利用するように携帯電話のユーザ・アプリケーションを拡張する他のシステムを例示する。この簡略化した図は、3つの主要な構成要素、即ち携帯電話1640、自動車ヘッドユニット1620、及びリモート・サーバー1670を有する。図16に示すように、携帯電話1640は、例えばモバイル・ネットワーク1654上でパケットデータ通信1652を行う通信能力を含む。種々の音声及びデータサービスを、サーバーとの通信に用いることができる。モバイル・ネットワークは、IPクラウド1666として示すインターネットへのゲートウェイ(図示せず)を有することができる。リモート・サーバー1670は、インターネット1666経由で通信を行うための通信コンポーネント(図示せず)を有する。
とりわけ、図16の構成は、ユーザ・アプリケーション・プログラム、例えば携帯電話1640上にインストールされているように示すユーザ・アプリケーション1644を、サーバー1670からダウンロードすることを可能にする。ユーザ・アプリケーション・プログラムをダウンロードする他の方法は上述している。モバイル・アプリケーション・プログラムをオンラインの「アップストア(登録商標)」から取得することも知られている。これに加えて、図示するシステムを用いて、サーバー1670に置かれた電話アプリケーション情報(「電話アプリ情報」)1680を携帯電話にダウンロードすることができる。電話アプリケーション情報は、以下でさらに説明するように、ユーザ・アプリケーション毎に提供することができる。電話アプリケーション情報1680は、別個のリモート・サーバー(図示せず)から取得し、別個のリモート・サーバー上に維持し、別個のリモート・サーバーから更新することができる。好適な実施形態では、電話アプリケーション情報を、携帯電話上のハンドセット・アプリケーション・プロキシ(HAP:Handset Application Proxy)アプリケーション・プログラム1642にダウンロードする。
自動車ヘッドユニット1620は、携帯電話との通信1635を行うように構成されたヘッドユニット・プロキシ(HUP:Head Unit Proxy)ソフトウェア・コンポーネント1630を含む。ヘッドユニット・プロキシ1630は、ヘッドユニット1620のHMI1622に動作的に結合されている。例えば、HUPは、種々のソフトウェア・コンポーネント及びプロトコルを介してHMIと相互作用することができる。上述したように、ヘッドユニットのHMI(人間−機械インタフェース)は表示スクリーンを含むことができ、これはタッチ・スクリーン、マイクロホン、スピーカ、及び他のI/O要素とすることができる。この例示では、HMIが1つ以上の一般的表示スクリーン1624を含む。ここでは物理的な表示スクリーンを参照せず、むしろ、1つ以上の一般的スクリーンの外見及び動作を規定するソフトウェア要素を参照する。以下でより詳細に説明するように、これらの一般的表示スクリーンを用いて、携帯電話1640上でユーザ実行されるユーザ・アプリケーション・プログラム1644のユーザ・インタフェースを拡張することができる。ヘッドユニットと携帯電話とは、短距離無線リンク、例えばブルートゥース(登録商標)リンク、またはIR(Infrared Ray:赤外線)のような他の非接触手段によって、あるいはケーブルによって通信結合することができる。
ヘッドユニットのHMIディスプレイ及び関連するアプリケーション・ロジックは、ヘッドユニットのプラットフォーム・リソース(基盤的資源)の制限により、容易に更新することができない。その結果、HMIは、ヘッドユニットが製造またはプログラムされた時点で必ずしも存在していなかった、より新しいユーザ・アプリケーション・プログラム用の拡張インタフェースとして機能すべく十分に適応させることが、必ずしもできない。一部の場合には、ヘッドユニットと相互作用する目的で、ヘッドユニットのファームウェアを、新たなユーザ・アプリケーション及びそれらに対応するコマンド及び制御機能を収容すべく更新することは、自動車製造業者または自動車OEMにとって経費がかかるか非実用的なことがある。
種々のヘッドユニット・プラットフォームが、OEM及びアフターマーケット(購入後の市場)において知られている。これらは、種々の組込みプロセッサ及びオペレーティング・システム、例えばウィンドウズ(登録商標)オートモーティブ、アンドロイド(登録商標)、QNX(登録商標)等である。ヘッドユニットは一般に、コンテンツを受動的方法で表示するために使用することのできる表示スクリーンを含む。即ち、ヘッドユニットは、グラフィックまたは画像のようなコンテンツを、受信して表示すること、あるいはオーディオ・ファイルを再生することを、そのコンテンツ、あるいは表示するデータの意味を知るか理解することなしにできる。これに加えて、一般に、ヘッドユニットは、このヘッドユニットが相互作用することのできる電話機上に存在するアプリケーションの状態に関連する状態または使用事例を管理することができない。従って、ヘッドユニットは、ユーザ・アプリケーション特有のビジネス(業務)ロジックを欠いて、端末にリンクすることがある。
一般に、ヘッドユニットはUI(User Interface:ユーザ・インタフェース)要素を含む。図21を参照すれば、図21は、自動車内に見出すことのできるヘッドユニット2102の簡略化した例を示す。この例示におけるヘッドユニットは、物理的表示スクリーン2104を示しこれはタッチ・スクリーンとすることができ、このヘッドユニットは、表示スクリーンを囲むベゼル(画面外枠)またはフレーム(枠)内に配置することのできる1つ以上の機械的ボタンまたはスイッチも含む。ボタン2110及び2112は、入力装置としてユーザの指で押下げすることのできる実際の物理的ハードウェア・スイッチを例示する。本明細書で説明するように、この表示スクリーンを用いて、ヘッドユニットがユーザ・アプリケーションから受信したデータ、メッセージ、画像、または他のコンテンツを表示することができる。このコンテンツは、ヘッドユニットを通して提供されるオーディオまたはビデオデータを含むことができる。
多数のヘッドユニットが、一般的な表示テンプレートまたはレイアウトを実現する。例えば、単純なテンプレートを提供して、ビデオ及びそのタイトルを表示することができる。こうしたテンプレートは、表示スクリーンの2つの領域しか置かず、例えば、ビデオを領域2134に置き、タイトルまたは関連情報は、ビデオの下の文字表示領域またはウィンドウ2140に置く。他のテンプレートは6つの入力ボタンを提供する。機械的ボタン、例えば2110及び2112の場合は、これらはベゼル内の各側に3つずつ設けることができる。テキスト(文字列)または画像をHMIに出力して、対応する画像、バッジ、または他の識別子を、機械的ボタンの各々に隣接して表示することができる。これらの識別子は、例示のため、図面中で2120の印を付けた6つの領域内に表示することができる。このように、異なる識別子をハードボタンに隣接して表示することによって、ハードボタンの機能または意味を変化させることができる。表示スクリーンがタッチ感応型(「タッチ・スクリーン」)である場合、十分に識別される同じ領域2120を入力ボタン自体として用いることができる。タッチ・スクリーンと共に使用される一般的表示テンプレートは、検出可能なタッチ領域のあらゆる所定サイズ及び配置を提供するように構成することができる。従って、一例では、HMIは、押下げすべき領域を示すメッセージまたはイベントを単純に出力する。HMIは、その意味を理解する必要はない。
一般に、ヘッドユニット2102は、図16のシステムを利用することによって、手近な携帯電話内で実行中のユーザ・アプリケーション・プログラムへの入力用に用いることができる。さらに、ヘッドユニットは、音声コマンドを受けるマイクロホンのような他の入力サービスまたはハードウェア(図示せず)を有することができる。これに加えて、ヘッドユニットは1つ以上の自動車ネットワーク、例えばCAN(Controller Area Network:コントローラ・エリア・ネットワーク)ネットワークにアクセスして、ユーザ・アプリケーションへの入力として機能することのできる車両から情報を取得することができる。例えば、速度のような車両状態をHAPに伝えて、安全方策を施行することに関連した検討をすることができる。
ヘッドユニットの一般的HMI、より具体的には一般的なスクリーン・ディスプレイを用いて、アプリケーション・プログラムのユーザ・インタフェースを拡張するためには、このユーザ・アプリケーション・プログラムに特有の情報を用いて、ユーザ・アプリケーション1644とHMI1622との通信を適切に変換してマッピングしなければならない。図16で1680として識別されるこの種の情報は、リモート・サーバー1670上に維持して、要求によりダウンロードすることができる。一旦、この情報をダウンロードして携帯電話内に記憶すると、HAPアプリケーションにアクセス可能な方法で、携帯電話はこの機能を提供することができる。より具体的には、好適な実施形態では、ダウンロードした電話アプリケーション情報1680をHAPが用いて、コマンド及び制御フロー、及び使用事例毎の状態を、携帯電話上にインストールされた主アプリケーション、及びヘッドユニットを通したデータの表示及び他の出力に関連して管理することができる。HAPは、コンテンツを、種々の一般的なスクリーン表示テンプレートまたは表示レイアウトに適したフォーマットで出力して、ヘッドユニットは、この情報を、使用事例、状況及び状態のような、ユーザ・アプリケーションに特有の知識またはロジックなしに表示することができる。むしろ、1つの好適な実施形態では、HAPが、ユーザ・アプリケーションの状況及び状態を携帯電話上に維持する。
図17は、図16に1642で示すような、ハンドセット・アプリケーション・プロキシ(HAP)アプリケーションに含むことのできるソフトウェア・コンポーネントの例を示す機能ブロック図である。図17では、一実施形態におけるHAP1700が、HAPメッセージ・ハンドリング(処理)コンポーネント1704に結合されたAPI(Application Program Interface:アプリケーション・プログラム・インタフェース)1702を具えている。次のコンポーネントは、JavaScript(登録商標)またはあらゆる適切なスクリプト言語を用いて実現することができる。例示のためにJavaScript(登録商標)を参照する。メッセージ・ハンドリング・コンポーネントは、JavaScript(登録商標)インタプリタ1706を含むことができる。JavaScript(登録商標)インタプリタは、1つ以上のユーザ・アプリケーション・プログラム用の個別のJavaScript(登録商標)コンポーネント、例えば「ノーマディック アプリn」として示すアプリケーション1〜n用のコンポーネント1710に通信結合されている。関係するアプリケーション・プログラム毎に別個のJavaScript(登録商標)コンポーネントを設けることが好ましい。図では、例示のために、3つのこうしたJavaScript(登録商標)を示すが、この数は重要ではない。
各JavaScript(登録商標)は、対応するテンプレート・メッセージ・トランスレータ(変換器)1712を含むか、これにアクセスすべく結合されている。以下でさらに説明するように、このことを用いて、携帯電話とヘッドユニットとの間で通信されるメッセージを変換する。前述したように、所定のユーザ・アプリケーション用のJavaScript(登録商標)コンポーネントは、要求により、サーバー1670上の電話アプリケーション・ストア1680からダウンロードすることができる。サーバーへの要求は、ユーザのアプリケーション・プログラムの識別子を含むことができる。本発明のこうした態様の好適な実施形態では、電話アプリケーション情報の要求が、ヘッドユニットまたはHMIを具体的に識別する必要はない。この要求は、一般的種類のヘッドユニットまたはディスプレイを識別することができ、あるいは、ヘッドユニットを全く識別しなくてもよい。
HAPアプリケーション1700はさらに、ヘッドユニットとの通信用のプロトコル・スタック1720を含むことができる。その代わりに、あるいはこれに加えて、HAP1700は、HTTP(Hyper Text Transfer Protocol)/TCP/IP(Transmission Control Protocol/Internet Protocol)/SLIP(Serial Line Internet Protocol)のようなより精巧なプロトコルをサポートすることのできないヘッドユニットとの通信用に、より単純なメッセージ・ファーミング(請負)プロトコル・コンポーネント1722を含むことができる。プロトコル識別コンポーネント1730は、適用可能であり、従って直接通信が可能なプロトコルを特定する働きをする。最後に、プロトコル識別コンポーネントは、適切な通信コンポーネント1740に結合される。
各個別のJavaScript(登録商標)、例えば1720は、ユーザ・アプリケーション・ロジック及びメッセージ・フォーマットの理解を実現し、さもなければ、この理解は、関連するヘッドユニットのHMIアプリケーション部が、対応するユーザ・アプリケーションとの相互作用向けに設計されていれば、このHMIアプリケーション部に含まれる。しかし、この場合、HMIはそのように構成されておらず、従って、一般的HMIとして扱われる。ヘッドユニット上の標準的な「テンプレート・スクリーン」は、決定を行うこと、及びアプリケーション状態を主張することができない。こうした「テンプレート・スクリーン」は、カテゴリ化されたコンテンツ、例えばリスト、基本メッセージ、結果、及び「現在再生中の」シーンを表示するためにしか用いることができない。例えば、図21を参照すれば、上述したように、表示領域2134を用いて、選択したコンテンツを表示することができる。テンプレート・メッセージ・トランスレータを用いて、ノーマディック・アプリケーションが指定した要求及び応答メッセージを、テンプレートベースのヘッドユニットHMIスクリーンにとって必要なフォーマットに変換することができる。さらに、JavaScript(登録商標)1710は、ボタン・マッピング情報を、視覚的なボタン識別データと共に含むことができ、図21を参照して前述したように、ボタン識別データは、スクリーンに送信して、関連するJavaScript(登録商標)によって表される個別の電話アプリケーションに基づいて、対応するボタンを視覚的に識別することができる。
ここで図18を参照し、図18は、統合型HAPアプリケーションを利用した、ユーザ・アプリケーション・プログラムと自動車ヘッドユニットとの間のデータフローの例を示す略図である。ユーザ・アプリケーション(「ノーマディック・アプリケーションn」)1800が、携帯電話上にインストールされた対応するJavaScript(登録商標)プログラム1810にメッセージを伝達するように構成されたHAP API1802と相互作用する。JavaScript(登録商標)1810は、適切なユーザ・アプリケーションHMIロジック及び状態管理コード1812を含む。ユーザ・アプリケーションからのメッセージ1814は、ユーザ・アプリケーション1800の通常動作におけるフォーマットのようにフォーマット化される。
ユーザ・アプリケーション1800用のJavaScript(登録商標)1810はさらに、テンプレート・メッセージ・トランスレータ(「TMT」(Template Message Translator))コンポーネント1820を含む。動作中には、TMTがメッセージをロジック1812から受信し、このメッセージをテンプレート・フォーマット化したメッセージ、即ちヘッドユニットと互換性のあるメッセージに変換する。そして、テンプレート・フォーマット化したメッセージ1824をヘッドユニット(HU)1830に伝達する。逆に、他の方向では、テンプレート・フォーマット化したメッセージ1834を、HUからJavaScript(登録商標)1810に伝達することができ、JavaScript(登録商標)1810では、このメッセージをTMT1820によって受信して、アプリケーション・ロジック及び状態管理1812にとって有用な形式に変換する。次に、このロジックが、(ユーザ・アプリケーション・フォーマットの)メッセージ1840を、HAP APIを通してアプリケーション1800に送信することを決定することができる。HUから受信した各要求メッセージは、ヘッドユニットに結果を戻す前に、JavaScript(登録商標)コードとユーザ・アプリケーションとの間に1つ以上のトランザクション(相互作用)を生じさせる。
図19は、同期メッセージの場合の、ソフトウェア・コンポーネント間の相互作用の一例を示すメッセージング(メッセージ伝達)またはシグナリング(信号通知)図で構成され、ヘッドユニットのHMIによって開始されるものを意味する。まず、イベント1902をヘッドユニットHMIから受信する。単純な例として、このイベントは「再生」に対応するボタン押下げとすることができ、ここで、音楽プレーヤ・アプリケーションが携帯電話上で実行されている。このイベントは、図16に例示するように、HUP(Head Unit Proxy:ヘッドユニット・プロキシ)を通して伝達される。図に示すように、JS(JavaScript(登録商標))インタプリタ1910がHAP内に含まれ、JSインタプリタ1910は、JSマネージャ1912、アブストラクトJSコンポーネント1920、アプリケーションJS1930、及びステータス(状態)マネージャ・コンポーネント1932を含む。アプリケーションJSは、「ノーマディック・アプリ」1940として示すユーザ・アプリケーションに特有であり、アプリケーション・プロキシ・インタフェース1942を含む。この種のJSインタプリタは通常、携帯電話SDK(Software Development Kit:ソフトウェア開発キット)において利用可能である。
アブストラクトJSは、メッセージをアプリケーションJS用に変換し、アプリケーションJS1930は、そのアプリケーション・ビジネス・ロジックをHMIイベントに対して実行する。ユーザ・アプリケーションの呼出しが適切である場合、メッセージまたは呼出しをHAPメッセージ・ハンドラに送信する(1950)。HAPメッセージ・ハンドラは、このメッセージをユーザ・アプリケーションに送信する(「アプリケーション・コールバックを起動」1952)。ユーザ・アプリケーションは、応答をメッセージ・ハンドラに送信する(「メッセージを送信」1954)。メッセージ・ハンドラは、このメッセージを変換することができ、アブストラクトJSは、変換メッセージロジックを使用して、適切なメッセージをアプリケーションJSに送信することができる。アプリケーションJSは、そのビジネス・ロジックを実行して、状態及びコンテンツ1932を記憶または更新して、上記応答を、HMIに送信するためのテンプレート・フォーマットに変換する(1960参照)。
図20は、同期メッセージの場合の、ソフトウェア・コンポーネント間の相互作用の一例を示すメッセージングまたはシグナリング図で構成され、携帯電話上で実行されるユーザ・アプリケーションによって開始されるものを意味する。まず、アプリケーションがメッセージを送信し、このメッセージはHAPによって受信される(2010参照)。HAPメッセージ・ハンドラ2012は、このメッセージをアプリケーションJSに送信し、アプリケーションJSは、そのロジックを呼び出し、状態及びコンテンツを記憶またはフェッチし(取り寄せ)、必要であればHMIアップデート2030を生成する。
ある例では、システムが提供される。このシステムは自動車ヘッドユニット及びサーバー・コンピュータを含み、このヘッドユニットは、少なくとも1種類の一般的なアプリケーション表示スクリーンを実現し、このサーバー・コンピュータは、モバイル・ネットワークを通した携帯電話への通信用に構成され、このサーバー・コンピュータはさらに、携帯電話上で実行可能な特定のユーザ・アプリケーション・プログラムに関連する電話アプリケーション情報を配信するように構成され、このサーバーは、電話アプリケーション情報をモバイル・ネットワーク経由で携帯電話に配信するように構成され、この電話アプリケーション情報は、特定のユーザ・アプリケーション・プログラムのユーザ・インタフェースを拡張して、自動車ヘッドユニットの一般的なアプリケーション表示スクリーンを利用することを可能にする。
ある例では、上記システムが、携帯電話内で実行可能なハンドセット・アプリケーション・プロキシ(HAP)ソフトウェア・アプリケーション、及びヘッドユニット上で実行可能なヘッドユニット・プロキシ(HUP)ソフトウェア・アプリケーションを含み、これらのHAP及びHUPは、互いの間でメッセージまたはイベントを伝達し、電話アプリケーション情報のアスペクト(特徴)を利用して、携帯電話上の特定のユーザ・アプリケーション・プログラムがヘッドユニットの一般的なアプリケーション表示スクリーンと相互作用することを可能にするように構成されている。ある例では、ヘッドユニットが、携帯電話上の特定のユーザ・アプリケーション・プログラムと相互作用するように特別に開発されたHMI表示アプリケーション・ロジックをインストールまたは実行しない。ある例では、ハンドセット・アプリケーション・プロキシ(HAP)が、コンテンツ、テキスト、及び画像のうち1つ以上を、一般的なアプリケーション表示スクリーンの所定のテンプレート・レイアウトに従って一般的なアプリケーション表示スクリーン上にレンダリングするために、ヘッドユニット・プロキシ(HUP)に送信するように構成されている。ある例では、ハンドセット・アプリケーション・プロキシ(HAP)ソフトウェア・アプリケーション及びヘッドユニット・プロキシ(HUP)ソフトウェア・アプリケーションの各々が、スクリプト言語で実現される。ある例では、電話アプリケーション情報が、特定のユーザ・アプリケーション・プログラムの実行に関連する安全方策を実現するためのデータを含む。ある例では、HAPが、メッセージ保持コンポーネント、及びこのメッセージ保持コンポーネントに結合されてヘッドユニットと通信する少なくとも1つのプロトコル・スタックを含み、上記メッセージ・ハンドリング・コンポーネントが、特定のユーザ・アプリケーション・プログラムに関連する少なくとも1つのスクリプト言語コンポーネントを含み、このスクリプト言語コンポーネントは、対応するテンプレート・メッセージ・トランスレータ・コンポーネントを含み、このメッセージ・トランスレータ・コンポーネントは、対応するユーザ・アプリケーション・プログラムが生成した要求及び応答メッセージを、自動車ヘッドユニットの、テンプレートベースの一般的なアプリケーション表示スクリーンと互換性のあるフォーマットに変換するように構成されている。ある例では、上記スクリプト言語コンポーネントが、ヘッドユニット内の特定のユーザ・アプリケーション・ロジックをなくすための、対応するユーザ・アプリケーション・ロジックを含む。ある例では、上記スクリプト言語コンポーネントが、対応するユーザ・アプリケーション・ロジックのアプリケーション状態を維持して、ヘッドユニット内に状態を維持することをなくす。
ある例では、携帯電話において用いられる、コンピュータで実現される方法を実行する。このコンピュータで実現される方法は、携帯電話上にインストールされたユーザ・アプリケーション・プログラムを識別するステップと;識別されたユーザ・アプリケーションに特有の情報をリモート・サーバーから要求するステップと;この情報要求に応答したリモート・サーバーからダウンロードした電話アプリケーション情報を受信するステップとを含み、この電話アプリケーション情報は、識別したユーザ・アプリケーション・プログラムのユーザ・インタフェースを拡張して、ヘッドユニットの一般的なアプリケーション表示スクリーンを利用することを可能にする。
ある例では、上記コンピュータで実現される方法が、ハンドセット・アプリケーション・プロキシ(HAP)ソフトウェア・アプリケーションを携帯電話上にインストールするステップと;自動車ヘッドユニット上で実行可能なヘッドユニット・プロキシ(HUP)ソフトウェア・アプリケーションをインストールするステップとを含み、これらのHAP及びHUPは、互いの間でメッセージまたはイベントを伝達し、電話アプリケーション情報のアスペクトを利用して、携帯電話上の識別したユーザ・アプリケーション・プログラムがヘッドユニットの一般的なアプリケーション表示スクリーンと相互作用することを可能にするように構成されている。
ある例では、上記コンピュータで実現可能な方法が、ハンドセット・アプリケーション・プロキシ(HAP)ソフトウェアにおいて、対応するユーザ・アプリケーション・プログラムが生成した要求及びメッセージを、自動車ヘッドユニットの、テンプレートベースの一般的なアプリケーション表示スクリーンと互換性のあるフォーマットに変換するステップを含む。
ある例では、上記コンピュータで実現される方法が、ハンドセット・アプリケーション・プロキシ(HAP)ソフトウェアにおいて、自動車ヘッドユニットから受信したメッセージまたはイベントを、対応するユーザ・アプリケーション・プログラムと互換性のあるフォーマットに変換するステップを含む。
ある例では、上記コンピュータで実現される方法が、ハンドセット・アプリケーション・プロキシ(HAP)ソフトウェアにおいて、対応するユーザ・アプリケーション・プログラムが生成した要求メッセージを、自動車ヘッドユニットの、テンプレートベースの一般的なアプリケーション表示スクリーンと互換性のあるフォーマットに変換して、コンテンツ、テキスト、及び画像のうち1つ以上を、自動車ヘッドユニットの一般的なアプリケーション表示スクリーン上にレンダリングするステップを含む。
ある例では、上記コンピュータで実現される方法が、ヘッドユニットからメッセージを受信するステップと;受信したメッセージに応答して、ユーザ・アプリケーション・プログラムと相互作用するステップと;ユーザ・アプリケーション・プログラムが提供する結果をヘッドユニットに戻すステップとを含む。ある例では、上記コンピュータで実現される方法が、上記結果を、自動車ヘッドユニットの、テンプレートベースの一般的なアプリケーション表示スクリーンと互換性のあるフォーマットに変換するステップを含む。ある例では、上記コンピュータで実現される方法が、ヘッドユニットからのボタン押下げイベント・メッセージを、現在のユーザ・アプリケーション・プログラム状態、及び以前に表示用にヘッドユニットに送信されたボタン識別子に基づいて変換するステップを含む。
ある例では、スマートホンのユーザ・アプリケーションのユーザ・インタフェースを、自動車ヘッドユニットのHMIに変換する方法が提供される。この方法は、ユーザ・アプリケーション・プログラムをスマートホン内にインストールするステップと;このスマートホンを車両のヘッドユニット(HU)に通信結合するステップと;ハンドセット・アプリケーション・プロキシ(HAP)ソフトウェア・コンポーネントをスマートホン内で実行するステップとを含み、HAPが、ユーザ・アプリケーションと相互作用するためのAPI、及び自動車ヘッドユニットと通信するためのインタフェースを含み、この方法はさらに、HAPにおいて、ボタン押下げ通知をHU−HMI(ヘッドユニットのHMI)から受信するステップと;HAPにおいて、このボタン押下げ通知を、実行中のユーザ・アプリケーションに特有のUI(User Interface:ユーザ・インタフェース)制御にマッピングするステップと;HAPにおいて、このUI制御を、実行中のユーザ・アプリケーションに伝えるステップとを含む。
ある例では、上記マッピングが、以前にHAPからヘッドユニットに表示用に送信された、自動車ヘッドユニットの一般的なタッチ・スクリーン・ディスプレイ上で選択されるボタンを視覚的に識別するための、視覚的なボタン識別子に基づく。
ある例では、上記方法が、HAPにおいて、ユーザ・アプリケーション・プログラム状態を維持して、ユーザ・アプリケーション・プログラム状態を維持することをなくす。
本発明の基になる原理から逸脱することなしに、上述した実施形態の細部に多数の変更を加えることができることは、当業者にとって明らかである。従って、本発明の範囲は、以下の特許請求の範囲のみによって定められるべきである。
上述した装置の大部分は、ハードウェア及び関連するソフトウェアを具えている。例えば、一般的なナビゲーション装置は、1つ以上のプロセッサ、及び上述した動作を行うためにこれらのプロセッサ上で実行可能なソフトウェアを含むことが多い。本明細書では、「ソフトウェア」とは、その一般的に理解されている意味で用い、プログラムまたはルーチン(サブルーチン、オブジェクト、プラグイン、等)、並びに機械(マシン)またはプロセッサによって使用可能なデータを称する。周知のように、コンピュータ・プログラムは一般に、機械可読またはコンピュータ可読の記憶媒体に記憶された命令を含む。本発明の一部の実施形態は、機械可読またはコンピュータ可読の記憶媒体、例えばデジタルメモリに記憶された実行可能なプログラムまたは命令を含むことができる。いずれの特定実施形態においても、従来の意味での「コンピュータ」が要求されることは含意しない。例えば、種々の、組込みまたは他の形のプロセッサを、本明細書に記載したコンピュータのような装置内で使用することができる。
ソフトウェアを記憶するメモリも周知である。一部の実施形態では、所定のプロセッサに関連するメモリを、プロセッサと同じ物理的デバイス内に格納することができ(「オンボード・メモリ」)、例えば、RAM(Random Access Memory:ランダムアクセスメモリ)またはフラッシュメモリが、集積回路マイクロプロセッサ等の内部に配置される。他の例では、メモリが、独立した装置、例えば外付けディスクドライブ(ディスク駆動装置)、ストレージ(記憶装置)アレイ、またはポータブル・フラッシュ・キー・フォブで構成される。こうした場合、メモリとデジタル・プロセッサとが動作的に結合されるか、例えばI/Oポート、ネットワーク接続、等によって互いに通信すると、メモリがデジタル・プロセッサに「関連する」ようになり、プロセッサはメモリ上に記憶されたファイルを読み出すことができる。関連するメモリは、設計によって(ROM:Read Only Memory:読出し専用メモリ)、あるいは許可設定によって「読出し専用」にすることもしないこともできる。他の例は、WORM(Write Once Optical Disc:追記型光ディスク)、EPROM(Erasable ROM:消去可能ROM)、EEPROM(Electrically Erasable ROM:電気的消去可能ROM)、FLASH(フラッシュ)、等を含むが、これらに限定されない。これらの技術は固体半導体デバイスで実現されることが多い。他のメモリは、従来の回転ディスクドライブのように可動部分を具えることができる。こうしたメモリのすべてが「機械可読」または「コンピュータ可読」であり、本明細書に記載した機能を実現するための実行可能な命令を記憶するために用いることができる。
「ソフトウェア製品」とは、一連の実行可能な命令が機械可読の形式で格納されたメモリ装置を称し、これにより、ソフトウェア製品にアクセスする適切な機械またはプロセッサがこれらの命令を実行して、これらの命令が実現するプロセスを実行することができる。ソフトウェア製品は時として、ソフトウェアを配布するために使用される。それらに限定されないが、以上にまとめたものを含むあらゆる種類の機械可読のメモリを用いて、ソフトウェア製品を作製することができる。その一方で、ソフトウェアは、電子的伝送(「ダウンロード」)を介して配信することができることも知られ、この場合、一般に、対応するソフトウェア製品が、伝送の送信側、または受信側、あるいは両方に存在する。
本発明の原理を、その好適な実施形態において説明し図示してきたが、本発明は、こうした原理を逸脱することなしに、構成及び細部を変更することができることは明らかである。以下の特許請求の範囲内に入るすべての変更及び変形を権利請求する。