IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ スター精密株式会社の特許一覧

特開2022-131859印刷制御装置、印刷制御方法および印刷用プログラム
<>
  • 特開-印刷制御装置、印刷制御方法および印刷用プログラム 図1
  • 特開-印刷制御装置、印刷制御方法および印刷用プログラム 図2
  • 特開-印刷制御装置、印刷制御方法および印刷用プログラム 図3
  • 特開-印刷制御装置、印刷制御方法および印刷用プログラム 図4
  • 特開-印刷制御装置、印刷制御方法および印刷用プログラム 図5
  • 特開-印刷制御装置、印刷制御方法および印刷用プログラム 図6
  • 特開-印刷制御装置、印刷制御方法および印刷用プログラム 図7
  • 特開-印刷制御装置、印刷制御方法および印刷用プログラム 図8
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2022131859
(43)【公開日】2022-09-07
(54)【発明の名称】印刷制御装置、印刷制御方法および印刷用プログラム
(51)【国際特許分類】
   G06F 3/12 20060101AFI20220831BHJP
   G06F 9/48 20060101ALI20220831BHJP
【FI】
G06F3/12 324
G06F3/12 308
G06F9/48 370
【審査請求】未請求
【請求項の数】6
【出願形態】OL
(21)【出願番号】P 2021031046
(22)【出願日】2021-02-26
(71)【出願人】
【識別番号】000107642
【氏名又は名称】スター精密株式会社
(74)【代理人】
【識別番号】100105784
【弁理士】
【氏名又は名称】橘 和之
(72)【発明者】
【氏名】伊藤 大貴
(72)【発明者】
【氏名】五十嵐 啓介
(72)【発明者】
【氏名】松下 裕一
(57)【要約】      (修正有)
【課題】印刷用アプリがバックグラウンドに存在し、かつ、アクティビティが破棄された状態で印刷用アプリが起動される場合に、二重印刷などの誤印刷の発生を防止する印刷制御装置、方法及び印刷用プログラムを提供する。
【解決手段】印刷制御装置は、印刷用アプリの起動時にアクティビティがonCreateで生成された場合、それより前に印刷用アプリのアクティビティが破棄された状態であるか否かを判定する破棄判定部103と、アクティビティが破棄された状態であると判定された場合に、そのonCreate内で取得される印刷データの処理を実行しないように制御する印刷制御部104とを備える。破棄されたアクティビティと同じアクティビティがonCreateで再生成されたとしても、それに関連してonCreate内で取得される印刷データの処理は実行せず、onNewIntentの引数で取得される印刷データの処理だけを実行する。
【選択図】図2
【特許請求の範囲】
【請求項1】
ホスト端末においてフォアグラウンドで動作中のアプリケーションである使用中アプリからアプリ連携コマンドによって印刷制御用のアプリケーションである印刷用アプリを起動し、上記使用中アプリにより生成された印刷データに基づいて上記印刷用アプリがプリンタでの印刷を実行するようになされたシステムにおいて、上記印刷用アプリによって印刷の実行を制御する印刷制御装置であって、
上記印刷用アプリの起動時にアクティビティが生成された場合、それより前に上記印刷用アプリのアクティビティが破棄された状態であるか否かを判定する破棄判定部と、
上記印刷用アプリのアクティビティが破棄された状態であると上記破棄判定部により判定された場合、破棄されたアクティビティを再利用するために再生成されたアクティビティに関連して取得される印刷データの処理を実行しないように制御する印刷制御部とを備えた
ことを特徴とする印刷制御装置。
【請求項2】
上記印刷用アプリがフォアグラウンドからバックグラウンドに移行する際に、上記アクティビティが破棄された後にそれと同じアクティビティの再生成を行う際に必要となる情報を情報記憶部に保存する情報記録部を更に備え、
上記破棄判定部は、上記印刷用アプリの起動時にアクティビティが生成された場合、上記情報記憶部を参照し、当該情報記憶部に対する情報の保存状態に基づいて、上記印刷用アプリのアクティビティが破棄された状態であるか否かを判定することを特徴とする請求項1に記載の印刷制御装置。
【請求項3】
上記印刷用アプリが終了する際に、所定の情報を情報記憶部に保存する情報記録部を更に備え、
上記破棄判定部は、上記印刷用アプリの起動時にアクティビティが生成された場合、上記情報記憶部を参照し、当該情報記憶部に対する情報の保存状態に基づいて、上記印刷用アプリのアクティビティが破棄された状態であるか否かを判定することを特徴とする請求項1に記載の印刷制御装置。
【請求項4】
上記印刷データに基づく印刷処理が実行されるたびに、その実行時刻を情報記憶部に記憶する印刷時刻記録部を更に備え、
上記破棄判定部は、上記印刷用アプリの起動時にアクティビティが生成された場合、上記印刷データに基づく印刷処理を実行する前に、上記情報記憶部に記憶されている直近の実行時刻からの経過時間が閾値未満か否かに基づいて、上記印刷用アプリのアクティビティが破棄された状態であるか否かを判定することを特徴とする請求項1に記載の印刷制御装置。
【請求項5】
ホスト端末においてフォアグラウンドで動作中のアプリケーションである使用中アプリからアプリ連携コマンドによって印刷制御用のアプリケーションである印刷用アプリを起動し、上記使用中アプリにより生成された印刷データに基づいて上記印刷用アプリがプリンタでの印刷を実行するようになされたシステムにおいて、上記印刷用アプリによって印刷の実行を制御する方法であって、
上記ホスト端末が備えるコンピュータの破棄判定部が、上記印刷用アプリの起動時にアクティビティが生成された場合、それより前に上記印刷用アプリのアクティビティが破棄された状態であるか否かを判定する第1のステップと、
上記コンピュータの印刷制御部が、上記印刷用アプリのアクティビティが破棄された状態であると上記破棄判定部により判定された場合、破棄されたアクティビティを再利用するために再生成されたアクティビティに関連して取得される印刷データの処理を実行しないように制御する第2のステップとを有する
ことを特徴とする印刷制御方法。
【請求項6】
ホスト端末においてフォアグラウンドで動作中のアプリケーションである使用中アプリからアプリ連携コマンドによって印刷制御用のアプリケーションである印刷用アプリを起動し、上記使用中アプリにより生成された印刷データに基づいて上記印刷用アプリがプリンタでの印刷を実行するようになされたシステムにおいて、上記印刷用アプリとして実装される印刷用プログラムであって、
上記印刷用アプリの起動時にアクティビティが生成された場合、それより前に上記印刷用アプリのアクティビティが破棄された状態であるか否かを判定する破棄判定手段、および
上記印刷用アプリのアクティビティが破棄された状態であると上記破棄判定手段により判定された場合、破棄されたアクティビティを再利用するために再生成されたアクティビティに関連して取得される印刷データの処理を実行しないように制御する印刷制御手段
としてコンピュータを機能させるための印刷用プログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、印刷制御装置、印刷制御方法および印刷用プログラムに関し、特に、ホスト端末からプリンタにデータを送信して印刷を行うようになされたシステムにおける印刷の実行を制御する技術に関するものである。
【背景技術】
【0002】
従来、URLスキームまたはインテント連携と称されるアプリ連携コマンドを利用してホスト端末として機能する、スマートフォンやタブレット端末などの携帯端末を含むスマートデバイスにおいて、フォアグラウンドで動作中のアプリケーション(以下、使用中アプリという)から印刷用アプリケーション(以下、印刷用アプリと略す)を起動することにより、ホスト端末からプリンタに印刷データを送信して印刷を行うことができるようになされた技術が提供されている。この他、スマートデバイスとして据え置き型のスマートデバイス等印刷用アプリが動作するものであれば、ホスト端末として使用可能である。
【0003】
この種の技術を利用したシステムにおいて、フォアグラウンドで動作中の使用中アプリは、HTML(HyperText Markup Language)またはPDF(Portable Document Format)などの形式で印刷データを生成すると、アプリ連携コマンドを利用して印刷用アプリを起動する。その際、使用中アプリは、印刷データまたは印刷データへアクセスするためのURLをアプリ連携コマンドに付与する。続いて、アプリ連携コマンドによって起動された印刷用アプリは、その起動時に使用中アプリがアプリ連携コマンドに付与した印刷データを読み取る。そして、読み取った印刷データをプリンタ用コマンドに変換してプリンタに送信することにより、印刷を実行する。
【0004】
ところで、Android(登録商標)OS上で動作するアプリケーション(以下、Androidアプリという)は、アクティビティという単位で画面が管理されている。Androidアプリは複数のアクティビティを持つことが可能であり、どれか1つのアクティビティがメインアクティビティとして指定される。このメインアクティビティが、アプリ起動時に表示されるアクティビティ(画面)となる。
【0005】
Androidアプリが有するアクティビティの管理機能の1つとして、アクティビティを生成する際に、既に同じアクティビティが存在する場合は新規に生成せず、既存のアクティビティを再利用するという機能が存在する。例えば、複数のアプリケーションが起動されている場合においてメモリ不足が生じたときに、画面の最前面に存在しないアプリケーションが一時的にメモリを解放することがある。このメモリ開放の際にはアクティビティが内部的に一度破棄されるが、画面の復帰時には同じアクティビティが再生成される。
【0006】
アプリ連携コマンドによって起動される印刷用アプリは、起動時にバックグラウンドに存在しているか否かに応じて、以下のように実行される。すなわち、印刷用アプリがバックグラウンドに存在していない状態でアプリ連携コマンドにより起動された場合は、印刷用アプリのアクティビティがonCreateというコールバックメソッド(以下、単にメソッドという)により新規に生成される。アプリ連携コマンドに付与された印刷データは、onCreate内でアクティビティが保持するIntentを利用して取得される(以下、単に「onCreate内で取得」ということがある)。一方、印刷用アプリが既にバックグラウンドに存在している状態でアプリ連携コマンドにより起動された場合は、新規にアクティビティの生成は行われず、既存のアクティビティを再利用するためonNewIntentというメソッドが呼ばれる。アプリ連携コマンドに付与された印刷データはonNewIntentの引数で付与されるIntentを利用して取得される(以下、単に「onNewIntentの引数で取得」ということがある)。なお上記Intentとは様々な情報が入る入れ物であり、別のアクティビティを起動する際の情報受け渡しや情報の格納などに利用される。
【0007】
ここで、印刷用アプリが既にバックグラウンドに存在し、かつ、アクティビティが内部的に破棄された状態で、印刷用アプリがアプリ連携コマンドにより起動される場合がある。この場合は、既存のアクティビティを再利用するためonNewIntentが呼ばれ、印刷データがonNewIntentの引数で取得されるとともに、破棄されたアクティビティと同じアクティビティが再生成される。このとき、アクティビティが保持していたIntentも再生成される。そのため、破棄される前の印刷データがアクティビティが保持するIntentとして残っていると、その古い印刷データが、再生成されたアクティビティのonCreate内で取得できる。
【0008】
このため、再生成されたアクティビティのonCreate内でアクティビティが保持するIntentから取得された古い印刷データと、onNewIntentの引数で付与されるIntentから取得された新しい印刷データとに基づいて二重に印刷が行われてしまうことがあるという問題があった。また、使用中アプリから送られるアプリ連携コマンドによる印刷用アプリの起動が行われていないときでも、AndroidOSによって印刷用アプリのバックグラウンドからの復帰が行われることがあると(例えば、画面ロック状態の解除時など)、再生成されたアクティビティのonCreate内でアクティビティが保持するIntentから取得される古い印刷データに基づいて印刷が実行されてしまうことがあるという問題もあった。
【0009】
なお、従来、あるタイミングでサーバから取得した画像情報と、それ以前にそのサーバから取得した画像情報との間に差異があるか否かを判断し、差異があると判断した場合に、その新たに取得した画像情報に基づいて画像を形成するようにしたプリンタが知られている(例えば、特許文献1参照)。また、URL情報に基づいてウェブサイトより取得したウェブリソースから更新の有無を判断し、取得済データを更新し、更新した取得済データから印刷データを生成することにより、無駄な印刷をしてしまう可能性を軽減することを可能にしたプリンタも知られている(例えば、特許文献2参照)。
【0010】
これら特許文献1,2に記載の技術を用いて、再生成されたアクティビティのonCreate内でアクティビティが保持するIntentから取得された古い印刷データと、onNewIntentの引数で付与されるIntentから取得された新しい印刷データとを比較して差異または更新の有無を判定し、差異または更新がある場合に、onNewIntentの引数で付与されるIntentから取得された新しい印刷データだけを用いて印刷を実行するようにすることが考えられる。しかしながら、この場合、古い印刷データと新しい印刷データとを比較するという負荷のかかる処理を実行しなければならないという問題がある。また、onNewIntentの引数で付与されるIntentから取得された新しい印刷データが存在しない場合に、onCreate内でアクティビティが保持するIntentから取得された古い印刷データだけが印刷されてしまうという問題を解消することはできない。
【先行技術文献】
【特許文献】
【0011】
【特許文献1】特許第4006121号公報
【特許文献2】特許第5042142号公報
【発明の概要】
【発明が解決しようとする課題】
【0012】
本発明は、このような問題を解決するために成されたものであり、印刷用アプリがバックグラウンドに存在し、かつ、アクティビティが内部的に破棄された状態で印刷用アプリが起動される場合に、古い印刷データと新しい印刷データとに基づいて二重に印刷が行われたり、古い印刷データに基づいて印刷が行われたりするといった誤印刷を防止できるようにすることを目的とする。
【課題を解決するための手段】
【0013】
上記した課題を解決するために、本発明では、印刷用アプリ30の起動時にアクティビティが生成された場合、それより前に印刷用アプリのアクティビティが破棄された状態であるか否かを判定し、アクティビティが破棄された状態であると判定された場合には、破棄されたアクティビティを再利用するために再生成されたアクティビティに関連して取得される印刷データの処理を実行しないようにしている。
【発明の効果】
【0014】
上記のように構成した本発明によれば、印刷用アプリがバックグラウンドに存在し、かつ、アクティビティが内部的に破棄された状態で、印刷用アプリがアプリ連携コマンドにより起動された場合、破棄されたアクティビティと同じアクティビティが再生成されたとしても、それに関連して取得される印刷データの処理は実行されることがなくなる。これにより、古い印刷データと新しい印刷データとに基づいて二重に印刷が行われたり、古い印刷データに基づいて印刷が行われたりするといった誤印刷を防止することができる。
【図面の簡単な説明】
【0015】
図1】本実施形態の印刷制御装置を適用した印刷システムの全体構成例を示す図である。
図2】本実施形態による印刷制御装置の機能構成例を示すブロック図である。
図3】本実施形態による印刷制御装置を含む携帯端末の動作例を示すフローチャートである。
図4】本実施形態による印刷制御装置を含む携帯端末の動作例を示すフローチャートである。
図5】本実施形態による印刷制御装置を含む携帯端末の動作例を示すフローチャートである。
図6】本実施形態による印刷制御装置を含む携帯端末の動作例を示すフローチャートである。
図7】本実施形態による印刷制御装置の他の機能構成例を示すブロック図である。
図8】本実施形態による印刷制御装置の他の機能構成例を示すブロック図である。
【発明を実施するための形態】
【0016】
以下、本発明の一実施形態を図面に基づいて説明する。図1は、本実施形態の印刷制御装置を適用した印刷システムの全体構成例を示す図である。図1に示すように、本実施形態の印刷システムは、携帯端末100およびプリンタ200を備えて構成されている。携帯端末100は、アプリ連携コマンドを利用してプリンタ200に印刷を実行させる機能を有するホスト端末の一例であり、例えば、スマートフォンまたはタブレット端末である。この他、スマートデバイスとして据え置き型のスマートデバイス等印刷用アプリが動作するものであれば、ホスト端末として使用可能である。携帯端末100およびプリンタ200は、Wi-Fi(登録商標)またはBluetooth(登録商標)またはBluetooth Low Energy、USBによる無線または有線通信機能を有しており、双方向に通信を行うことができるようになっている。
【0017】
携帯端末100には、アプリ連携機能を有するオペレーティングシステム(OS)10と、HTML形式、PDF形式、その他の所定の形式で印刷データを生成する機能を有するアプリケーションである印刷データ生成用アプリ20と、印刷制御用のアプリケーションである印刷用アプリ30とがインストールされている。印刷用アプリ30は、フォアグラウンドで使用されている印刷データ生成用アプリ20(以下、使用中アプリ20という)で生成された印刷データを、プリンタ200が理解できるプリンタ用コマンドに変換してプリンタ200に送信することにより、印刷処理を実行する。
【0018】
OS10は、AndroidOSであり、当該OS10上で動作する使用中アプリ20および印刷用アプリ30は何れも、アクティビティという単位で画面が管理されている。本実施形態では、ユーザが使用中アプリ20をフォアグラウンドで使用しているとき(使用中アプリ20のアクティビティ(画面)が最前面に表示されているとき)に、アプリ連携コマンドによって印刷用アプリ30を起動し、使用中アプリ20で生成された印刷データを印刷用アプリ30に受け渡すことにより、印刷を実行する。
【0019】
すなわち、フォアグラウンドで動作中の使用中アプリ20は、HTMLまたはPDFなどの形式で印刷データを生成すると、アプリ連携コマンドを利用して印刷用アプリ30を起動する。その際、使用中アプリ20は、印刷データまたは印刷データへアクセスするためのURLをアプリ連携コマンドに付与する。続いて、アプリ連携コマンドによって起動された印刷用アプリ30は、その起動時に使用中アプリ20がアプリ連携コマンドに付与した印刷データを読み取る。そして、読み取った印刷データをプリンタ用コマンドに変換してプリンタ200に送信することにより、印刷を実行する。
【0020】
ここで、印刷用アプリ30の起動に関しては、印刷用アプリ30がバックグラウンドに存在していない状態でアプリ連携コマンドによって起動される場合と、バックグラウンドに存在している状態でアプリ連携コマンドによって起動される場合とがある。バックグラウンドに存在している状態で起動される場合は更に、印刷用アプリ30のアクティビティが破棄されていない状態で起動される場合と、内部的に破棄された状態で起動される場合とがある。アクティビティの破棄は、例えば、印刷用アプリ30がバックグラウンドに存在しているときに、システムの制約(構成の変更やメモリ負荷など)が原因で、行わることがある。その際、OS10にはこのアクティビティが存在したことが記憶される。印刷用アプリ30がこのアクティビティを起動しようとすると、前述の記憶された情報を利用してアクティビティの再生成を行う。印刷用アプリ30は、これら3つの何れの状態で起動されたかによって、以下のように異なる動作を実行する。
【0021】
印刷用アプリ30がバックグラウンドに存在していない状態で、アプリ連携コマンドにより印刷用アプリ30が起動された場合、印刷用アプリ30のアクティビティはOS10によりコールされたonCreateのメソッドによって新規に生成される。印刷用アプリ30は、アプリ連携コマンドに付与された印刷データを、当該onCreate内でアクティビティが保持するIntentを利用して取得する。そして、取得した印刷データをプリンタ用コマンドに変換してプリンタ200に送信することにより、印刷を実行する。なお、印刷用アプリ30がバックグラウンドに存在していない状態は、例として新規に印刷用アプリ30をインストールした直後の状態や、携帯端末100を起動後、印刷用アプリ30が全く起動していない状態において初めて印刷用アプリ30を起動した状態や、それに近い状態で印刷用アプリ30がOS10に起動されていない状態等があげられる。
【0022】
印刷用アプリ30がバックグラウンドに存在していて、かつ、印刷用アプリ30のアクティビティが破棄されていない状態のときに、アプリ連携コマンドにより印刷用アプリ30が起動された場合、新規にアクティビティの生成は行われず、既存のアクティビティを再利用するためonNewIntentのメソッドがOS10によりコールされる。印刷用アプリ30は、アプリ連携コマンドに付与された印刷データを、当該onNewIntentの引数で付与されるIntentを利用して取得する。そして、取得した印刷データをプリンタ用コマンドに変換してプリンタ200に送信することにより、印刷を実行する。
【0023】
印刷用アプリ30がバックグラウンドに存在していて、かつ、印刷用アプリ30のアクティビティが破棄された状態のとき、アプリ連携コマンドにより印刷用アプリ30が起動された場合、既存のアクティビティを再利用するためonNewIntentのメソッドがOS10によりコールされる。印刷用アプリ30は、アプリ連携コマンドに付与された印刷データを、当該onNewIntentの引数で付与されるIntentを利用して取得する。そして、取得した印刷データをプリンタ用コマンドに変換してプリンタ200に送信することにより、印刷を実行する。
【0024】
この印刷用アプリ30がバックグラウンドに存在していて、かつ、印刷用アプリ30のアクティビティが破棄された状態は、例として携帯端末100に搭載される実行領域が少ない機種等において他のアプリを多く起動している場合、バックグラウンドに存在しているアプリの実行領域を解放してしまうため、このような現象が起こると考えられる。さらに省エネ機能の搭載された機種等の場合においても、消費電力を抑えるためにバックグラウンドに存在しているアプリの機能や実行領域を制限することが想定されるため、アクティビティが破棄された状態が起こると考えられる。
【0025】
また、アクティビティが破棄された状態での起動であるため、破棄されたアクティビティと同じアクティビティがonCreateによって再生成される。このとき、アクティビティが保持していたIntentも再生成される。そのため、破棄される前の古い印刷データがアクティビティが保持するIntentとして残っていると、印刷用アプリ30は、再生成されたアクティビティのonCreate内でその古い印刷データを取得してプリンタ用コマンドに変換しようとする。ただし、本実施形態では、以下に詳しく説明するように、このように再生成されたアクティビティのonCreate内で取得される印刷データはプリンタ用コマンドに変換せず、印刷が実行されないように制御する。
【0026】
図2は、携帯端末100に実装される本実施形態による印刷制御装置の機能構成例を示すブロック図である。図2に示すように、本実施形態の印刷制御装置は、印刷用アプリ30により実装される機能構成として、印刷データ取得部101、コマンド変換部102、破棄判定部103、印刷制御部104および情報記録部105を備えている。また、本実施形態の印刷制御装置(携帯端末100)は、記憶媒体として情報記憶部106を備えている。
【0027】
上記各機能ブロック101~105は、ハードウェア、DSP(Digital Signal Processor)、ソフトウェアの何れによっても構成することが可能である。例えばソフトウェアによって構成する場合、上記各機能ブロック101~105は、実際にはコンピュータのCPU、RAM、ROMなどを備えて構成され、RAMやROM、ハードディスクまたは半導体メモリ等の記憶媒体に記憶された印刷用アプリ30のプログラムが動作することによって実現される。
【0028】
印刷データ取得部101は、使用中アプリ20から発行されるアプリ連携コマンドに付与されている印刷データを取得する。印刷データ取得部101は、OS10によりonCreateがコールされた場合は、当該onCreate内でアクティビティが保持するIntentを利用して印刷データを取得する。ここで、onCreateによりアクティビティが新規生成される場合も、アクティビティが一度破棄された後に再生成される場合も、印刷データ取得部101はonCreate内で印刷データを取得する。一方、印刷データ取得部101は、OS10によりonNewIntentがコールされた場合は、当該onNewIntentの引数で付与されるIntentを利用して印刷データを取得する。印刷データ取得部101は、取得した印刷データをコマンド変換部102に供給する。
【0029】
コマンド変換部102は、印刷データ取得部101から供給された印刷データをプリンタ用コマンドに変換し、プリンタ200に送信する。
【0030】
破棄判定部103は、使用中アプリ20から発行されるアプリ連携コマンドによる印刷用アプリ30の起動時に、アクティビティが生成された場合(アクティビティが新規生成された場合およびアクティビティが一度破棄された後に再生成された場合の両方を含む)、すなわち、印刷データ取得部101がonCreate内でアクティビティが保持するIntentを利用して印刷データを取得した場合に、それより前に印刷用アプリ30のアクティビティが破棄された状態であるか否かを判定する。この破棄判定部103による判定の結果は、印刷制御部104による印刷の制御に利用される。なお、破棄判定部103による判定方法の具体的な内容については後述する。
【0031】
印刷制御部104は、プリンタ200に対する印刷の実行を制御する。ここで、印刷制御部104は、(1)印刷用アプリ30がバックグラウンドに存在していない状態で起動された場合、(2)印刷用アプリ30がバックグラウンドに存在していて、かつ、印刷用アプリ30のアクティビティが破棄されていない状態で起動された場合、(3)印刷用アプリ30がバックグラウンドに存在していて、かつ、印刷用アプリ30のアクティビティが破棄された状態で起動された場合の3つのケースに応じて、プリンタ200に対する印刷の実行を制御する。(1)のケースと(3)のケースは、印刷データ取得部101がonCreate内でアクティビティが保持するIntentを利用して印刷データを取得するケースである。(1)と(3)のどちらのケースに該当するかが破棄判定部103により判定される。これに対して(2)のケースは、印刷データ取得部101がonNewIntentの引数で付与されるIntentを利用して印刷データを取得するケースである。
【0032】
すなわち、印刷用アプリ30がバックグラウンドに存在していない状態で起動された場合(上記(1)のケース)、印刷制御部104は、そのことを破棄判定部103による判定の結果に基づいて検知する。この場合、印刷制御部104は、印刷データ取得部101によりonCreate内でアクティビティが保持するIntentを利用して取得された印刷データをコマンド変換部102に供給し、印刷データのコマンド変換処理を実行するように制御する。
【0033】
また、印刷用アプリ30がバックグラウンドに存在していて、かつ、印刷用アプリ30のアクティビティが破棄されていない状態で起動された場合(上記(2)のケース)、印刷制御部104は、印刷データ取得部101によりonNewIntentの引数で付与されるIntentを利用して取得された印刷データをコマンド変換部102に供給し、印刷データのコマンド変換処理を実行するように制御する。このケースの場合、onCreate内でアクティビティが保持するIntentを利用した印刷データの取得が行われないので、破棄判定部103による判定の結果を利用する必要はない。
【0034】
また、印刷用アプリ30がバックグラウンドに存在していて、かつ、印刷用アプリ30のアクティビティが破棄された状態で起動された場合(上記(3)のケース)、印刷制御部104は、そのことを破棄判定部103による判定の結果に基づいて検知する。この場合、印刷制御部104は、印刷データ取得部101によりonNewIntentの引数で取得された印刷データをコマンド変換部102に供給し、当該印刷データのコマンド変換処理を実行するように制御する一方で、破棄されたアクティビティを再利用するためにonCreateにより再生成されたアクティビティに関連して当該onCreate内で取得された印刷データはコマンド変換部102に供給せず、当該印刷データのコマンド変換処理を実行しないように制御する。
【0035】
従来は、OS10によりonCreateがコールされた際に、それが(1)のケースのように印刷用アプリ30がバックグラウンドに存在していない状態で起動されたことに起因してコールされたのか、(3)のケースのように印刷用アプリ30がバックグラウンドに存在していながらアクティビティが破棄された状態で起動されたことに起因してコールされたのかを判別する手段を持っていなかった。そのために、古い印刷データと新しい印刷データとに基づいて二重に印刷が行われるといった誤印刷が発生することがあった。これに対して、本実施形態では、(1)のケースでonCreateがコールされたのか、(3)のケースでonCreateがコールされたのかを判別する手段として破棄判定部103を設け、(3)のケースでonCreateがコールされたと判定される場合には、onCreateにより再生成されたアクティビティに関連して取得される印刷データの処理を実行しないように制御している。
【0036】
情報記録部105は、印刷用アプリ30がフォアグラウンドからバックグラウンドに移行する際に、アクティビティが破棄された後にそれと同じアクティビティの再生成を行う際に必要となる情報を情報記憶部106に一時的に保存する。例えば、この情報記憶部106として、onSavedInstanceと呼ばれるインスタンスを用いることが可能である。印刷用アプリ30が全く起動されていない状態(フォアグラウンドにもバックグラウンドにも存在しない状態の場合)では、情報記憶部106にはNull値が記憶されている。その状態から印刷用アプリ30が起動されてフォアグラウンドに存在する状態に移行した後も、情報記憶部106にはNull値が記憶され続けている。その後、印刷用アプリ30がフォアグラウンドからバックグラウンドに移ると、情報記録部105は、アクティビティの再生成に備えて情報記憶部106に情報を一時的に保存する。情報記憶部106に保存する情報の内容は、印刷用アプリ30によって任意に設計し得る。
【0037】
上述の破棄判定部103は、OS10によりonCreateがコールされたとき、すなわち、印刷データ取得部101によりonCreate内で印刷データが取得されときに、情報記憶部106を参照し、当該情報記憶部106に対する情報の保存状態に基づいて、印刷用アプリ30のアクティビティが破棄された状態であるか否かを判定する。すなわち、破棄判定部103は、情報記憶部106に記憶されている情報がNull値か否かを判定し、Null値であれば、アクティビティの再生成ではなく新規生成と考えられるため、印刷用アプリ30のアクティビティが破棄された状態ではないと判定する。一方、情報記憶部106に記憶されている情報がNull値でなければ、破棄判定部103は印刷用アプリ30のアクティビティが破棄された状態であると判定する。この場合に印刷制御部104は、上記(3)のケースであることを検知する。よって、印刷制御部104は、印刷データ取得部101によりonCreate内で取得された印刷データの処理を実行しないように制御する。
【0038】
図3図6は、以上のように構成した印刷制御装置を含む携帯端末100の動作例を示すフローチャートである。図3は、印刷の実行が指示されたときに使用中アプリ20およびOS10により実行される動作例を示す。図4は上記(1)のケースにおける印刷用アプリ30の動作例を示し、図5は上記(2)のケースにおける印刷用アプリ30の動作例を示し、図6は上記(3)のケースにおける印刷用アプリ30の動作例を示す。
【0039】
図3において、ユーザがフォアグラウンドで動作中の使用中アプリ20において印刷ボタンなどを操作して印刷命令を入力すると、使用中アプリ20は、印刷データを含むアプリ連携コマンドをOS10に対して発行する(ステップS1)。このときOS10は、印刷用アプリ30がバックグラウンドに存在しているか否かを判定し(ステップS2)、存在している場合、OS10はさらに、アクティビティが存在していたことが記憶されているかいないかまたはアクティビティが存在しない状態であるか否かを確認する(ステップS3)。
【0040】
ここで、印刷用アプリ30がバックグラウンドに存在していないことがOS10により確認された場合(ステップS2:No)、OS10はonCreateをコールして印刷用アプリ30を起動する(ステップS4)。その後、図4の処理に進む。
【0041】
また、印刷用アプリ30がバックグラウンドに存在し、かつ、印刷用アプリ30のアクティビティが存在していたことが記憶されていないかまたはアクティビティが存在する状態であることがOS10により確認された場合(ステップS3:No)、OS10はonNewIntentをコールして印刷用アプリ30を起動する(ステップS5)。この場合における起動は、バックグラウンドにある印刷用アプリ30をフォアグラウンドに遷移させることを意味する。その後、図5の処理に進む。
【0042】
また、印刷用アプリ30がバックグラウンドに存在し、かつ、印刷用アプリ30の存在していたことが記憶されているまたはアクティビティが存在していない状態であることがOS10により確認された場合(ステップS3:Yes)、OS10はonCreateをコールして印刷用アプリ30を起動する(ステップS6)。また、印刷用アプリ30がバックグラウンドに存在している状態で起動されているため、OS10はonNewIntentもコールする(ステップS7)。その後、図6の処理に進む。
【0043】
図4において、OS10によるonCreateのコール(図3のステップS4)を通じて起動された印刷用アプリ30は、アクティビティを新規に生成する(ステップS11)。そして、印刷データ取得部101は、アプリ連携コマンドに付与されている印刷データを、onCreate内でアクティビティが保持するIntentを利用して取得する(ステップS12)。
【0044】
その後、破棄判定部103は、情報記憶部106を参照し、当該情報記憶部106に記憶されている情報がNull値か否かに基づいて、印刷用アプリ30のアクティビティが破棄された状態であるか否かを判定する(ステップS13)。図4において破棄判定部103は、印刷用アプリ30のアクティビティが破棄された状態ではないと判定する。つまり、印刷用アプリ30のアクティビティを新規に起動する必要があると判定する。よって、印刷制御部104は、印刷データの処理を実行するように印刷データ取得部101を制御する。
【0045】
印刷制御部104からの制御に応じて、印刷データ取得部101は、ステップS12で取得された印刷データをコマンド変換部102に供給する(ステップS14)。コマンド変換部102は、印刷データ取得部101から印刷データを受け取ると、当該印刷データをプリンタ用コマンドに変換し(ステップS15)、プリンタ200に送信する(ステップS16)。プリンタ200は、受け取ったプリンタ用コマンドに従って印刷を実行する(ステップS17)。
【0046】
図5において、OS10によるonNewIntentのコール(図3のステップS5)を通じて起動された印刷用アプリ30において、印刷データ取得部101は、アプリ連携コマンドに付与されている印刷データを、onNewIntentの引数で付与されるIntentを利用して取得する(ステップS21)。この場合、破棄判定部103の処理は実行されず、印刷制御部104は、印刷データの処理を実行するように印刷データ取得部101を制御する。
【0047】
印刷制御部104からの制御に応じて、印刷データ取得部101は、ステップS21で取得された印刷データをコマンド変換部102に供給する(ステップS22)。コマンド変換部102は、印刷データ取得部101から印刷データを受け取ると、当該印刷データをプリンタ用コマンドに変換し(ステップS23)、プリンタ200に送信する(ステップS24)。プリンタ200は、受け取ったプリンタ用コマンドに従って印刷を実行する(ステップS25)。
【0048】
図6において、OS10によるonCreateのコール(図3のステップS6)を通じて起動された印刷用アプリ30は、破棄されたアクティビティと同じアクティビティを再生成するとともに、当該アクティビティが保持していたIntentを再生成する(ステップS31)。そして、印刷データ取得部101は、破棄される前の古い印刷データがIntentとして残っていた場合は、Intentの再生成によって復元された印刷データをonCreate内で取得する(ステップS32)。なお、再生成されたIntentに印刷データが何も残っていない場合、印刷データ取得部101は印刷データを取得しない。
【0049】
その後、破棄判定部103は、情報記憶部106を参照し、当該情報記憶部106に記憶されている情報がNull値か否かに基づいて、印刷用アプリ30のアクティビティが破棄された状態であるか否かを判定する(ステップS33)。図6において破棄判定部103は、印刷用アプリ30のアクティビティが破棄された状態であると判定する。よって、印刷制御部104は、印刷データの処理を実行しないように印刷データ取得部101を制御する。これにより、印刷データ取得部101は、ステップS32で取得された印刷データをコマンド変換部102に供給しない。
【0050】
次いで、印刷データ取得部101は、OS10によりコールされたonNewIntent(図3のステップS7)を受けて、アプリ連携コマンドに付与されている印刷データを、onNewIntentの引数で付与されるIntentを利用して取得する(ステップS34)。これに応じて破棄判定部103の処理は実行されず、印刷制御部104は、印刷データの処理を実行するように印刷データ取得部101を制御する。
【0051】
印刷制御部104からの制御に応じて、印刷データ取得部101は、ステップS34で取得された印刷データをコマンド変換部102に供給する(ステップS35)。コマンド変換部102は、印刷データ取得部101から印刷データを受け取ると、当該印刷データをプリンタ用コマンドに変換し(ステップS36)、プリンタ200に送信する(ステップS37)。プリンタ200は、受け取ったプリンタ用コマンドに従って印刷を実行する(ステップS38)。
【0052】
以上詳しく説明したように、本実施形態では、使用中アプリ20から発行されるアプリ連携コマンドによって印刷用アプリ30が起動されたときにonCreateでアクティビティが生成された場合、それより前に印刷用アプリ30のアクティビティが破棄された状態であるか否かを判定し、アクティビティが破棄された状態であると判定された場合には、そのonCreate内で取得される印刷データの処理を実行しないようにしている。
【0053】
このように構成した本実施形態によれば、印刷用アプリ30がバックグラウンドに存在し、かつ、アクティビティが内部的に破棄された状態で、印刷用アプリ30がアプリ連携コマンドにより起動された場合、破棄されたアクティビティと同じアクティビティがonCreateで再生成されたとしても、それに関連してonCreate内で取得される印刷データの処理は実行されず、onCreateのコールと並行してコールされるonNewIntentの引数で取得された印刷データの処理だけが実行されることとなる。これにより、onCreate内で取得される古い印刷データと、onNewIntentの引数で取得される新しい印刷データとに基づいて二重に印刷が行われるといった誤印刷を防止することができる。
【0054】
また、使用中アプリ20から送られるアプリ連携コマンドによる印刷用アプリ30の起動ではなく、OS10によって印刷用アプリ30のバックグラウンドからフォアグラウンドへの復帰が行われた場合に(例えば、画面ロック状態の解除時など)、再生成されたアクティビティのonCreate内でアクティビティが保持するIntentを利用して古い印刷データが取得されたとしても、当該古い印刷データに基づいて印刷が実行されてしまうといった誤印刷を防止することもできる。
【0055】
なお、上記実施形態では、印刷用アプリ30のアクティビティが破棄された状態であるか否かを判定する方法として、onSavedInstanceと呼ばれるインスタンスで構成される情報記憶部106における情報の保存状態を確認する方法を説明したが、本発明はこれに限定されない。例えば、印刷用アプリ30が終了(シャットダウン)する際(OS10によりonDestroyのメソッドがコールされた際)に情報が保存される所定の情報記憶部を参照し、当該情報記憶部に対する情報の保存状態に基づいて、印刷用アプリ30のアクティビティが破棄された状態であるか否かを判定するようにしてもよい。
【0056】
図7は、この場合における印刷制御装置の機能構成例を示す図である。この図7において、図2に示した符号と同一の符号を付したものは同一の機能を有するものであるので、ここでは重複する説明を省略する。図7に示す印刷制御装置は、図2に示した破棄判定部103、情報記録部105および情報記憶部106に代えて、破棄判定部103A、情報記録部105Aおよび情報記憶部106Aを備えている。
【0057】
情報記録部105Aは、印刷用アプリ30が終了する際に、所定の情報を情報記憶部106Aに一時的に保存する。印刷用アプリ30が起動された場合、情報記録部105Aは、情報記録部105Aに記憶する情報を所定の情報から別の情報に書き換える。
【0058】
破棄判定部103Aは、OS10によりonCreateがコールされた場合(印刷用アプリ30の起動時にonCreateによりアクティビティが生成された場合)、情報記憶部106Aを参照し、当該情報記憶部106Aに記憶されている情報が所定の情報か否かを判定し、所定の情報であれば、アクティビティの再生成ではなく新規生成と考えられるため、印刷用アプリ30のアクティビティが破棄された状態ではないと判定する。一方、情報記憶部106Aに記憶されている情報が所定の情報でなければ、破棄判定部103Aは印刷用アプリ30のアクティビティが破棄された状態であると判定する。なお、印刷用アプリ30が携帯端末100にインストールされた後の最初の起動時は、情報記憶部106Aには何も情報が保存されていない。情報記憶部106Aに何も情報が保存されていない場合も、アクティビティの再生成ではなく新規生成と考えられるため、破棄判定部103Aは印刷用アプリ30のアクティビティが破棄された状態ではないと判定する。
【0059】
また、印刷用アプリ30のアクティビティが破棄された状態であるか否かを判定する別の方法として、印刷データに基づく印刷処理が実行されるたびにその実行時刻を記憶するようにした情報記憶部を参照し、当該情報記憶部に記憶されている直近の実行時刻からの経過時間が閾値未満か否かに基づいて、印刷用アプリ30のアクティビティが破棄された状態であるか否かを判定するようにしてもよい。なお、この方法は、図3のステップS6,S7ようにonCreateのコールの後にonNewIntentのコールが行われる場合ではなく、onNewIntentのコールの後にonCreateのコールが行われる場合に有効な方法である。
【0060】
図8は、この場合における印刷制御装置の機能構成例を示す図である。この図8において、図2に示した符号と同一の符号を付したものは同一の機能を有するものであるので、ここでは重複する説明を省略する。図8に示す印刷制御装置は、図2に示した破棄判定部103、情報記録部105および情報記憶部106に代えて、破棄判定部103B、情報記録部105Bおよび情報記憶部106Bを備えている。
【0061】
情報記録部105Bは、印刷データ取得部101によって取得される印刷データに基づく印刷処理が印刷制御部104の制御に基づき実行されるたびに、その実行時刻を情報記憶部106Bに記憶する。
【0062】
破棄判定部103Bは、OS10によりonCreateがコールされた場合(印刷用アプリ30の起動時にonCreateによりアクティビティが生成された場合)、印刷データ取得部101によりonCreate内で取得された印刷データに基づく印刷処理を実行する前に、情報記憶部106Bに記憶されている直近の実行時刻からの経過時間が閾値未満か否かに基づいて、印刷用アプリ30のアクティビティが破棄された状態であるか否かを判定する。ここで、閾値には、ユーザが使用中アプリ20を使用して印刷を実行する際の処理時間として想定される通常の時間よりも短い時間が設定される。
【0063】
印刷用アプリ30がバックグラウンドに存在し、かつ、以前のアクティビティが破棄された状態で印刷用アプリ30が起動された場合、onNewIntentと、破棄されたアクティビティと同じアクティビティを再生成するためのonCreateとが並行してコールされる。この場合、onCreateよりも先にコールされたonNewIntentの引数で取得された印刷データに基づいて印刷が実行され、その実行時刻が情報記憶部106Bに記憶される。その後、onNewIntentに続いてコールされたonCreate内で取得された印刷データに基づいて、印刷処理を実行しようとする際に、破棄判定部103Bが情報記憶部106Bに記憶されている直近の実行時刻からの経過時間を計測すると、経過時間は閾値未満となる。よって、この場合、破棄判定部103Bは、印刷用アプリ30のアクティビティが破棄された状態であると判定する。
【0064】
その他、上記実施形態は、何れも本発明を実施するにあたっての具体化の一例を示したものに過ぎず、これによって本発明の技術的範囲が限定的に解釈されてはならないものである。すなわち、本発明はその要旨、またはその主要な特徴から逸脱することなく、様々な形で実施することができる。
【符号の説明】
【0065】
10 OS
20 使用中アプリ(印刷データ生成用アプリ)
30 印刷用アプリ
100 携帯端末
101 印刷データ取得部
102 コマンド変換部
103,103A,103B 破棄判定部
104 印刷制御部
105,105A,105B 情報記録部
106,106A,106B 情報記憶部
200 プリンタ
図1
図2
図3
図4
図5
図6
図7
図8