(57)【要約】【解決手段】スクリーンショットの生成が開示されており、以下を含む：アプリケーションに対応するアプリケーションシナリオパラメータを含むスクリーンショットコマンドをアプリケーションから受信すること；アプリケーションシナリオパラメータに対応するスクリーンショットクラスに少なくとも部分的に基づいて、スクリーンショットオブジェクトを生成すること；スクリーンショットオブジェクトを用いて、アプリケーションによって表示されたコンテンツからスクリーンショットを生成すること；および、表示に向けてスクリーンショットをアプリケーションに送信すること。【選択図】図２
2017513106.tif 000002
【特許請求の範囲】
【請求項１】
システムであって、
１または複数のプロセッサであって、
アプリケーションに対応するアプリケーションシナリオパラメータを含むスクリーンショットコマンドを前記アプリケーションから受信し、
前記アプリケーションシナリオパラメータに対応するスクリーンショットクラスに少なくとも部分的に基づいて、スクリーンショットオブジェクトを生成し、
前記スクリーンショットオブジェクトを用いて、前記アプリケーションによって表示されたコンテンツからスクリーンショットを生成し、
表示に向けて前記スクリーンショットを前記アプリケーションに送信するよう構成された、１または複数のプロセッサと、
前記１または複数のプロセッサに接続され、前記１または複数のプロセッサに命令を提供するよう構成された１または複数のメモリと、
を備える、システム。
【請求項２】
請求項１に記載のシステムであって、前記スクリーンショットコマンドは、所定のスクリーンショット操作の検出に応答して生成される、システム。
【請求項３】
請求項１に記載のシステムであって、前記アプリケーションは、携帯デバイスで実行中である、システム。
【請求項４】
請求項１に記載のシステムであって、前記アプリケーションシナリオパラメータは、ネイティブアプリケーションシナリオパラメータ、ビデオ再生アプリケーションシナリオパラメータ、または、ゲームアプリケーションシナリオパラメータの内の１または複数を含む、システム。
【請求項５】
請求項１に記載のシステムであって、前記アプリケーションシナリオパラメータがネイティブアプリケーションシナリオパラメータを含む場合、前記スクリーンショットクラスは、ネイティブアプリケーションスクリーンショットクラスを含む、システム。
【請求項６】
請求項１に記載のシステムであって、前記アプリケーションシナリオパラメータがビデオ再生アプリケーションシナリオパラメータを含む場合、前記スクリーンショットクラスは、ビデオ再生アプリケーションスクリーンショットクラスを含む、システム。
【請求項７】
請求項１に記載のシステムであって、前記アプリケーションシナリオパラメータがゲームアプリケーションシナリオパラメータを含む場合、前記スクリーンショットクラスは、ゲームアプリケーションスクリーンショットクラスを含む、システム。
【請求項８】
請求項１に記載のシステムであって、前記アプリケーションシナリオパラメータに対応する前記スクリーンショットクラスは、基底スクリーンショットクラスから導出される、システム。
【請求項９】
請求項１に記載のシステムであって、前記スクリーンショットオブジェクトは、前記スクリーンショットを生成するために、オペレーティングシステムを呼び出すよう構成される、システム。
【請求項１０】
請求項１に記載のシステムであって、前記１または複数のプロセッサは、さらに、所定の共有操作を検出するよう構成されている、システム。
【請求項１１】
請求項１０に記載のシステムであって、前記１または複数のプロセッサは、さらに、少なくとも１人のユーザと前記スクリーンショットを共有するよう構成されている、システム。
【請求項１２】
方法であって、
アプリケーションに対応するアプリケーションシナリオパラメータを含むスクリーンショットコマンドを前記アプリケーションから受信する工程と、
１または複数のプロセッサを用いて、前記アプリケーションシナリオパラメータに対応するスクリーンショットクラスに少なくとも部分的に基づいて、スクリーンショットオブジェクトを生成する工程と、
前記スクリーンショットオブジェクトを用いて、前記アプリケーションによって表示されたコンテンツからスクリーンショットを生成する工程と、
表示に向けて前記スクリーンショットを前記アプリケーションに送信する工程と、
を備える、方法。
【請求項１３】
請求項１２に記載の方法であって、前記スクリーンショットコマンドは、所定のスクリーンショット操作の検出に応答して生成される、方法。
【請求項１４】
請求項１２に記載の方法であって、前記アプリケーションは、携帯デバイスで実行中である、方法。
【請求項１５】
請求項１２に記載の方法であって、前記アプリケーションシナリオパラメータは、ネイティブアプリケーションシナリオパラメータ、ビデオ再生アプリケーションシナリオパラメータ、または、ゲームアプリケーションシナリオパラメータの内の１または複数を含む、方法。
【請求項１６】
請求項１２に記載の方法であって、前記アプリケーションシナリオパラメータがネイティブアプリケーションシナリオパラメータを含む場合、前記スクリーンショットクラスは、ネイティブアプリケーションスクリーンショットクラスを含む、方法。
【請求項１７】
請求項１２に記載の方法であって、前記アプリケーションシナリオパラメータがビデオ再生アプリケーションシナリオパラメータを含む場合、前記スクリーンショットクラスは、ビデオ再生アプリケーションスクリーンショットクラスを含む、方法。
【請求項１８】
請求項１２に記載の方法であって、前記アプリケーションシナリオパラメータがゲームアプリケーションシナリオパラメータを含む場合、前記スクリーンショットクラスは、ゲームアプリケーションスクリーンショットクラスを含む、方法。
【請求項１９】
請求項１２に記載の方法であって、前記アプリケーションシナリオパラメータに対応する前記スクリーンショットクラスは、基底スクリーンショットクラスから導出される、方法。
【請求項２０】
コンピュータプログラム製品であって、持続性のコンピュータ読み取り可能な記憶媒体内に具現化され、
アプリケーションに対応するアプリケーションシナリオパラメータを含むスクリーンショットコマンドを前記アプリケーションから受信するためのコンピュータ命令と、
前記アプリケーションシナリオパラメータに対応するスクリーンショットクラスに少なくとも部分的に基づいて、スクリーンショットオブジェクトを生成するためのコンピュータ命令と、
前記スクリーンショットオブジェクトを用いて、前記アプリケーションによって表示されたコンテンツからスクリーンショットを生成するためのコンピュータ命令と、
表示に向けて前記スクリーンショットを前記アプリケーションに送信するためのコンピュータ命令と、
を備える、コンピュータプログラム製品。
【発明の詳細な説明】
【技術分野】
【０００１】
他の出願の相互参照
本願は、２０１４年４月１１日出願の中国特許出願第２０１４１０１４６００４．０号「Ａ  ＭＥＴＨＯＤ  ＡＮＤ  Ａ  ＤＥＶＩＣＥ  ＦＯＲ  ＩＭＰＬＥＭＥＮＴＩＮＧ  ＳＣＲＥＥＮＳＨＯＴＳ」の優先権を主張しており、この出願は、すべての目的のために参照により本明細書に組み込まれる。
【０００２】
本願は、コンピュータ技術の分野に関し、特に、スクリーンショットを実行するための技術に関する。
【背景技術】
【０００３】
遠隔通信技術の発展に伴って、携帯電話およびその他の携帯端末の機能がかつてないほどに強力になっている。携帯端末を用いて電話をかけるだけでなく、様々な種類のアプリケーションソフトウェアを実行することもできる。携帯端末ユーザにとって、携帯端末で実行中の特定のアプリケーションによって表示されたコンテンツのスクリーンショットを生成したいと思うことは珍しいことではない。例えば、ユーザが、ビデオフレーム、ゲーム画像、または、その他の画像のスクリーンショットを保存したいと思うことがある。
【０００４】
携帯端末上で動作する特定のタイプのオペレーティングシステムでは、異なるタイプのアプリケーションからスクリーンショットを生成するために、異なる技術を利用する必要がある。例えば、ｉＯＳオペレーティングシステムでは、ｉＯＳシステムのネイティブアプリケーション、ｉＯＳシステムのビデオ再生アプリケーション、ならびに、ｉＯＳシステムの２Ｄまたは３Ｄゲームアプリケーションに、異なるスクリーンショット生成技術を利用する必要がありうる。結果として、アプリケーション開発者は、異なる各アプリケーションタイプに対して異なるスクリーンショット生成技術を実装する必要がある。ユーザは、様々な異なるアプリケーションタイプに対応する異なるスクリーンショット生成技術を学ぶ必要があることで不便を感じうる。
【図面の簡単な説明】
【０００５】
以下の詳細な説明と添付の図面において、本発明の様々な実施形態を開示する。
【０００６】
【図１】スクリーンショットを生成するための処理の一実施形態を示すフローチャート。
【０００７】
【図２】スクリーンショットを生成するための処理の一実施形態を示すフローチャート。
【０００８】
【図３】スクリーンショットを生成するためのシステムの一実施形態を示す図。
【０００９】
【図４】スクリーンショットを生成するためのシステムの一実施形態を示す図。
【００１０】
【図５】スクリーンショットを生成するためにプログラムされたコンピュータシステムの一実施形態を示す機能図。
【発明を実施するための形態】
【００１１】
本発明は、処理、装置、システム、物質の組成、コンピュータ読み取り可能な格納媒体上に具現化されたコンピュータプログラム製品、および／または、プロセッサ（プロセッサに接続されたメモリに格納および／またはそのメモリによって提供される命令を実行するよう構成されたプロセッサ）を含め、様々な形態で実装されうる。本明細書では、これらの実装または本発明が取りうる任意の他の形態を、技術と呼ぶ。一般に、開示された処理の工程の順序は、本発明の範囲内で変更されてもよい。特に言及しない限り、タスクを実行するよう構成されるものとして記載されたプロセッサまたはメモリなどの構成要素は、ある時間にタスクを実行するよう一時的に構成された一般的な構成要素として、または、タスクを実行するよう製造された特定の構成要素として実装されてよい。本明細書では、「プロセッサ」という用語は、１または複数のデバイス、回路、および／または、コンピュータプログラム命令などのデータを処理するよう構成された処理コアを指すものとする。
【００１２】
以下では、本発明の原理を示す図面を参照しつつ、本発明の１または複数の実施形態の詳細な説明を行う。本発明は、かかる実施形態に関連して説明されているが、どの実施形態にも限定されない。本発明の範囲は、特許請求の範囲によってのみ限定されるものであり、本発明は、多くの代替物、変形物、および、等価物を含む。以下の説明では、本発明の完全な理解を提供するために、多くの具体的な詳細事項が記載されている。これらの詳細事項は、例示を目的としたものであり、本発明は、これらの具体的な詳細事項の一部または全てがなくとも特許請求の範囲に従って実施可能である。簡単のために、本発明に関連する技術分野で周知の技術事項については、本発明が必要以上にわかりにくくならないように、詳細には説明していない。
【００１３】
スクリーンショットを生成する実施形態について本明細書に記載する。スクリーンショットコマンドが、アプリケ−ションから受信される。アプリケーションは、現在実行中であり、携帯デバイスにコンテンツを表示している。スクリーンショットコマンドは、アプリケーションのアプリケーションシナリオを特定するアプリケーションシナリオパラメータを含む。アプリケーションシナリオの例は、ネイティブアプリケーションシナリオ、ビデオ再生アプリケーションシナリオ、および、ゲームアプリケーションシナリオを含む。スクリーンショットコマンドのアプリケーションシナリオパラメータに対応するスクリーンショットクラスが取得され、取得されたスクリーンショットクラスから、スクリーンショットオブジェクトが生成される。スクリーンショットオブジェクトを用いて、アプリケーションによって携帯デバイスのスクリーンに表示されたコンテンツから、スクリーンショットが生成される。スクリーンショットは、アプリケーションへ送り返される。いくつかの実施形態において、スクリーンショットは、スクリーンに表示される、および／または、少なくとも１人の他のユーザと共有される。
【００１４】
図１は、スクリーンショットを生成するための処理の一実施形態を示すフローチャートである。
【００１５】
いくつかの実施形態において、処理１００は、携帯デバイスで実行される。携帯デバイスの例としては、携帯電話、スマートフォン、タブレットデバイス、ラップトップコンピュータ、または、任意のその他のコンピュータデバイスが挙げられる。いくつかの実施形態において、処理１００は、携帯デバイスのオペレーティングシステムによって実施される。いくつかの実施形態において、オペレーティングシステムは、ｉＯＳオペレーティングシステムを含む。いくつかの実施形態において、処理１００は、オペレーティングシステムではない携帯デバイスで実行中のスクリーンショット生成メカニズムによって実行される。
【００１６】
１０２で、アプリケーションに対応するアプリケーションシナリオパラメータを含むスクリーンショットコマンドがアプリケーションから受信される。
【００１７】
様々な実施形態において、アプリケーションから受信される「スクリーンショットコマンド」は、そのアプリケーションによって表示されたコンテンツのスクリーンショットを実行するためのコールまたは呼び出しを含む。アプリケーションは、携帯デバイスで現在実行中であり、さらに、携帯デバイスのスクリーンにコンテンツを表示している。いくつかの実施形態において、スクリーンショットコマンドは、アプリケーションプログラミングインターフェース（ＡＰＩ）コールを含む。様々な実施形態では、（例えば、携帯デバイスで実行されているプラットフォームおよび／またはオペレーティングシステムと互換性のある言語の）スクリーンショットライブラリと、スクリーンショットライブラリにアクセスするためのインターフェースとを含むスクリーンショットソフトウェア開発キット（ＳＤＫ）が、アプリケーションの開発者に提供されており、その結果、アプリケーションの開発者は、アプリケーションを開発するプロセス中にスクリーンショットＳＤＫと統合するようにアプリケーションの機能を構成することができる。
【００１８】
様々な実施形態において、スクリーンショットコマンドは、アプリケーションの実行中に携帯デバイスのユーザによって実行された所定のスクリーンショット操作の検出に応答して、アプリケーションによって生成される。所定のスクリーンショット操作は、現在実行中のアプリケーションによって携帯デバイスのスクリーンに表示されたコンテンツのスクリーンショットの生成をトリガするよう構成される。いくつかの実施形態において、所定のスクリーンショット操作は、アプリケーションの開発時にアプリケーションと統合されたＳＤＫのスクリーンショットライブラリによって構成される。例えば、所定のスクリーンショット操作は、携帯デバイスを振ること、スクリーンショットボタンの作動、および、ユーザによって実行されて取り込まれたジェスチャを含む。例えば、携帯デバイスを振ることは、携帯デバイスに組み込まれたモーションセンサによって検出可能である。例えば、スクリーンショットボタンの作動は、スクリーンショット生成をトリガするよう構成されたハードウェアボタンまたは表示されたソフトボタン（例えば、ボタンユーザインターフェースウィジェット）の作動であってよい。例えば、取り込まれたユーザによるジェスチャは、ジェスチャ取り込みセンサ（例えば、カメラまたは赤外線センサ）によって検出可能なユーザの手の動きを含む。
【００１９】
様々な実施形態において、スクリーンショットコマンドを渡したアプリケーションは、アプリケーションシナリオに関連する。アプリケーションシナリオの例は、ネイティブアプリケーションシナリオ、ビデオ再生アプリケーションシナリオ、および、ゲームアプリケーションシナリオを含む。例えば、「ネイティブアプリケーションシナリオ」は、特定のプラットフォームまたはオペレーティングシステム上で利用するために開発されたアプリケーションを指す。例えば、「ビデオ再生アプリケーションシナリオ」は、ビデオを再生またはストリーミングするよう構成されたアプリケーションを指す。例えば、「ゲームアプリケーションシナリオ」は、インタラクティブゲームを提供するよう構成されたアプリケーションを指す。各アプリケーションシナリオは、アプリケーションシナリオを特定する対応するアプリケーションシナリオパラメータに関連づけられている。例えば、各アプリケーションシナリオパラメータは、異なる数字を含む。いくつかの実施形態では、アプリケーションシナリオパラメータと、アプリケーションシナリオとの間の対応関係が、既知の記憶位置（例えば、既知のファイル位置またはメモリ内の既知のアドレス）に格納される。例えば、ネイティブアプリケーションシナリオに対応するネイティブアプリケーションシナリオパラメータが１００１に設定され；ビデオ再生アプリケーションシナリオに対応するビデオ再生アプリケーションシナリオパラメータが１００２に設定され；ゲームアプリケーションシナリオに対応するゲームアプリケーションシナリオパラメータが１００３に設定されてよい。他の数字または符号化スキームが用いられてもよい。
【００２０】
様々な実施形態において、スクリーンショットコマンドは、スクリーンショットコマンドを生成して送信したアプリケーションのアプリケーションシナリオに対応するアプリケーションシナリオパラメータを含む。例えば、所定のスクリーンショット生成操作が携帯デバイスを振ることであると仮定すると、ユーザは、携帯デバイスを振ることによって、現在実行中のアプリケーションのスクリーンショットの生成をトリガできる。携帯センサの構成要素（例えば、そこに組み込まれたモーションセンサ）が、振る動作を検出する。いくつかの実施形態では、オペレーティングシステムが、振る動作を検出し、現在実行中のアプリケーションに、そのアプリケーションのアプリケーションシナリオに対応するアプリケーションシナリオパラメータを含むスクリーンショットコマンドを生成させる。後に詳述するように、スクリーンショットコマンドおよびその中のアプリケーションシナリオパラメータは、現在実行中のアプリケーションのスクリーンショットを生成するために用いられる。したがって、現在実行中のアプリケーションに関連するスクリーンショットの生成をトリガする処理が、携帯デバイスのユーザにとって高速かつ簡便になる。
【００２１】
１０４で、スクリーンショットオブジェクトが、アプリケーションシナリオパラメータに対応するスクリーンショットクラスに少なくとも部分的に基づいて生成される。
【００２２】
様々な実施形態において、対応するスクリーンショットクラスは、アプリケーション開発者によって、アプリケーションのアプリケーションシナリオに対応するように開発されうる。例えば、ネイティブアプリケーションスクリーンショットクラスはネイティブアプリケーションの開発者によって開発され、ビデオ再生アプリケーションスクリーンショットクラスはビデオ再生アプリケーションの開発者によって開発され、ゲームアプリケーションスクリーンショットクラスはゲームアプリケーションの開発者によって開発されうる。これらのクラスは、オブジェクト指向プログラミング言語（Ｏｂｊｅｃｔｉｖｅ−Ｃなど）を用いて開発できる。いくつかの実施形態において、アプリケーションの開発者は、スクリーンショットＳＤＫに含まれる基底スクリーンショットクラスにオブジェクト指向プログラミング継承を適用することにより、アプリケーションのシナリオに対応するスクリーンショットクラスを生成する。基底スクリーンショットクラスは、異なるアプリケーションシナリオに汎用である。いくつかの実施形態では、基底スクリーンショットクラスからインスタンス化されたスクリーンショットオブジェクトが、デフォルトの設定／フィーチャでアプリケーションのスクリーンショットを生成するよう構成される。継承により、特定のアプリケーションシナリオの開発者が、基底クラスのスクリーンショットフィーチャを利用するだけでなく、自身のアプリケーションシナリオの要求を満たすために、カスタム要素を追加することが可能になる。例えば、アプリケーションシナリオに対応するスクリーンショットクラスのカスタム要素は、スクリーンショットが生成される特定の方法（例えば、サイズ、解像度、色など）と、スクリーンショットが共有される特定の方法（例えば、どのソーシャルメディアプラットフォームと共有するか）とを含んでよい。
【００２３】
様々な実施形態において、携帯デバイスは、各アプリケーションシナリオに対応するスクリーンショットクラスを格納するよう構成されている。様々な実施形態において、携帯デバイスは、さらに、各アプリケーションシナリオに対応するスクリーンショットクラスと、アプリケーションシナリオパラメータとの間の対応関係を格納するよう構成されている。例えば、ネイティブアプリケーションスクリーンショットクラスはネイティブアプリケーションシナリオパラメータ（例えば、１００１）に対応し；ビデオ再生アプリケーションスクリーンショットクラスはビデオ再生アプリケーションシナリオパラメータ（例えば、１００２）に対応し；ゲームアプリケーションスクリーンショットクラスはゲームアプリケーションシナリオパラメータ（例えば、１００３）に対応する。
【００２４】
スクリーンショットコマンドに含まれるアプリケーションシナリオパラメータに基づいて、対応するスクリーンショットクラスを特定し、特定されたスクリーンショットクラスに基づいて、スクリーンショットオブジェクトをインスタンス化できる。例えば、ゲームアプリケーションシナリオパラメータがスクリーンショットコマンドに含まれる場合、ゲームアプリケーションスクリーンショットクラスが特定され、スクリーンショットがそこから生成される。
【００２５】
１０６で、スクリーンショットオブジェクトを用いて、アプリケーションによって表示されたコンテンツから、スクリーンショットが生成される。
【００２６】
スクリーンショットオブジェクトは、スクリーンショットコマンドを発行した現在実行中のアプリケーションによって表示されたコンテンツのスクリーンショットを生成するために、携帯デバイスで実行中のオペレーティングシステムを呼び出すよう構成されている。いくつかの実施形態において、オペレーティングシステムによって生成されるスクリーンショットは、スクリーンショットオブジェクトがインスタンス化される元になったスクリーンショットクラスのカスタム要素／設定／フィーチャに基づいて生成される。生成されたスクリーンショットは、例えば、画像ファイルを含んでよい。
【００２７】
以下は、スクリーンショットを生成するためにスクリーンショットオブジェクトによって用いられるＯｂｊｅｃｔｉｖｅ−Ｃのコードの一例である。
【００２８】
−（ＵＩＩｍａｇｅ＊）ｇｅｔＳｃｒｅｅｎＳｈｏｔ
【００２９】
｛
【００３０】
／／目標サイズを有するグラフィックコンテキストを作成する
【００３１】
／／実行中のオペレーティングシステムのバージョンに応じて、ＵＩＧｒａｐｈｉｃｓＢｅｇｉｎＩｍａｇｅＣｏｎｔｅｘｔＷｉｔｈＯｐｔｉｏｎｓを用いてスケールを考慮するか、もしくは、ＵＩＧｒａｐｈｉｃｓＢｅｇｉｎＩｍａｇｅＣｏｎｔｅｘｔを用いる
【００３２】
ＣＧＳｉｚｅ  ｉｍａｇｅＳｉｚｅ＝［［ＵＩＳｃｒｅｅｎ  ｍａｉｎＳｃｒｅｅｎ］ｂｏｕｎｄｓ］．ｓｉｚｅ；
【００３３】
ｉｆ（ＮＵＬＬ！＝ＵＩＧｒａｐｈｉｃｓＢｅｇｉｎＩｍａｇｅＣｏｎｔｅｘｔＷｉｔｈＯｐｔｉｏｎｓ）
【００３４】
ＵＩＧｒａｐｈｉｃｓＢｅｇｉｎＩｍａｇｅＣｏｎｔｅｘｔＷｉｔｈＯｐｔｉｏｎｓ（ｉｍａｇｅＳｉｚｅ，ＮＯ，０）；
【００３５】
ｅｌｓｅ
【００３６】
ＵＩＧｒａｐｈｉｃｓＢｅｇｉｎＩｍａｇｅＣｏｎｔｅｘｔ（ｉｍａｇｅＳｉｚｅ）；
【００３７】
ＣＧＣｏｎｔｅｘｔＲｅｆ  ｃｏｎｔｅｘｔ＝ＵＩＧｒａｐｈｉｃｓＧｅｔＣｕｒｒｅｎｔＣｏｎｔｅｘｔ（）；
【００３８】
／／後ろから前まですべてのウィンドウに繰り返す
【００３９】
ｆｏｒ（ＵＩＷｉｎｄｏｗ  ＊ｗｉｎｄｏｗ  ｉｎ［［ＵＩＡｐｐｌｉｃａｔｉｏｎ  ｓｈａｒｅｄＡｐｐｌｉｃａｔｉｏｎ］ｗｉｎｄｏｗｓ］）
【００４０】
｛
【００４１】
ｉｆ（！［ｗｉｎｄｏｗ  ｒｅｓｐｏｎｄｓＴｏＳｅｌｅｃｔｏｒ：＠ｓｅｌｅｃｔｏｒ（ｓｃｒｅｅｎ）］｜｜［ｗｉｎｄｏｗ  ｓｃｒｅｅｎ］＝＝［ＵＩＳｃｒｅｅｎ  ｍａｉｎＳｃｒｅｅｎ］）
【００４２】
｛
【００４３】
／／−ｒｅｎｄｅｒＩｎＣｏｎｔｅｘｔ：レイヤの座標空間にレンダリングする
【００４４】
／／最初にレイヤの形状をグラフィックスコンテキストに適用する
【００４５】
ＣＧＣｏｎｔｅｘｔＳａｖｅＧＳｔａｔｅ（ｃｏｎｔｅｘｔ）；
【００４６】
／／ウィンドウのアンカーポイントを中心にコンテキストを配置する
【００４７】
ＣＧＣｏｎｔｅｘｔＴｒａｎｓｌａｔｅＣＴＭ（ｃｏｎｔｅｘｔ，［ｗｉｎｄｏｗ  ｃｅｎｔｅｒ］．ｘ，［ｗｉｎｄｏｗ  ｃｅｎｔｅｒ］．ｙ）；
【００４８】
／／アンカーポイントを中心にウィンドウの変換を適用する
【００４９】
ＣＧＣｏｎｔｅｘｔＣｏｎｃａｔＣＴＭ（ｃｏｎｔｅｘｔ，［ｗｉｎｄｏｗ  ｔｒａｎｓｆｏｒｍ］）；
【００５０】
／／アンカーポイントの左上の境界の部分だけオフセットする
【００５１】
ＣＧＣｏｎｔｅｘｔＴｒａｎｓｌａｔｅＣＴＭ（ｃｏｎｔｅｘｔ，
【００５２】
−［ｗｉｎｄｏｗ  ｂｏｕｎｄｓ］．ｓｉｚｅ．ｗｉｄｔｈ＊［［ｗｉｎｄｏｗ  ｌａｙｅｒ］  ａｎｃｈｏｒＰｏｉｎｔ］．ｘ，
【００５３】
−［ｗｉｎｄｏｗ  ｂｏｕｎｄｓ］．ｓｉｚｅ．ｈｅｉｇｈｔ＊［［ｗｉｎｄｏｗ  ｌａｙｅｒ］  ａｎｃｈｏｒＰｏｉｎｔ］．ｙ）；
【００５４】
／／レイヤ階層を現在のコンテキストにレンダリングする
【００５５】
［［ｗｉｎｄｏｗ  ｌａｙｅｒ］  ｒｅｎｄｅｒＩｎＣｏｎｔｅｘｔ：ｃｏｎｔｅｘｔ］；
【００５６】
／／コンテキストを復元する
【００５７】
ＣＧＣｏｎｔｅｘｔＲｅｓｔｏｒｅＧＳｔａｔｅ（ｃｏｎｔｅｘｔ）；
【００５８】
｝
【００５９】
｝
【００６０】
／／スクリーンショット画像をリトリーブする
【００６１】
ＵＩＩｍａｇｅ＊ｉｍａｇｅ＝ＵＩＧｒａｐｈｉｃｓＧｅｔＩｍａｇｅＦｒｏｍＣｕｒｒｅｎｔＩｍａｇｅＣｏｎｔｅｘｔ（）；
【００６２】
ＵＩＧｒａｐｈｉｃｓＥｎｄＩｍａｇｅＣｏｎｔｅｘｔ（）；
【００６３】
ＵＩＩｎｔｅｒｆａｃｅＯｒｉｅｎｔａｔｉｏｎ  ｏｒｉｅｎｔａｔｉｏｎ＝［ＵＩＡｐｐｌｉｃａｔｉｏｎ  ｓｈａｒｅｄＡｐｐｌｉｃａｔｉｏｎ］．ｓｔａｔｕｓＢａｒＯｒｉｅｎｔａｔｉｏｎ；
【００６４】
ｉｆ（ｏｒｉｅｎｔａｔｉｏｎ＝＝ＵＩＩｎｔｅｒｆａｃｅＯｒｉｅｎｔａｔｉｏｎＬａｎｄｓｃａｐｅＬｅｆｔ）｛
【００６５】
ｉｍａｇｅ＝［ＵＩＩｍａｇｅ  ｉｍａｇｅＷｉｔｈＣＧＩｍａｇｅ：ｉｍａｇｅ．ＣＧＩｍａｇｅ  ｓｃａｌｅ：ｉｍａｇｅ．ｓｃａｌｅ  ｏｒｉｅｎｔａｔｉｏｎ：ＵＩＩｍａｇｅＯｒｉｅｎｔａｔｉｏｎＲｉｇｈｔ］；
【００６６】
｝ｅｌｓｅ  ｉｆ（ｏｒｉｅｎｔａｔｉｏｎ＝＝ＵＩＩｎｔｅｒｆａｃｅＯｒｉｅｎｔａｔｉｏｎＬａｎｄｓｃａｐｅＲｉｇｈｔ）｛
【００６７】
ｉｍａｇｅ  ＝  ［ＵＩＩｍａｇｅ  ｉｍａｇｅＷｉｔｈＣＧＩｍａｇｅ：ｉｍａｇｅ．ＣＧＩｍａｇｅ  ｓｃａｌｅ：ｉｍａｇｅ．ｓｃａｌｅ  ｏｒｉｅｎｔａｔｉｏｎ：ＵＩＩｍａｇｅＯｒｉｅｎｔａｔｉｏｎＬｅｆｔ］；
【００６８】
｝ｅｌｓｅ  ｉｆ（ｏｒｉｅｎｔａｔｉｏｎ＝＝ＵＩＩｎｔｅｒｆａｃｅＯｒｉｅｎｔａｔｉｏｎＰｏｒｔｒａｉｔＵｐｓｉｄｅＤｏｗｎ）｛
【００６９】
ｉｍａｇｅ＝［ＵＩＩｍａｇｅ  ｉｍａｇｅＷｉｔｈＣＧＩｍａｇｅ：ｉｍａｇｅ．ＣＧＩｍａｇｅ  ｓｃａｌｅ：ｉｍａｇｅ．ｓｃａｌｅ  ｏｒｉｅｎｔａｔｉｏｎ：ＵＩＩｍａｇｅＯｒｉｅｎｔａｔｉｏｎＤｏｗｎ］；
【００７０】
｝
【００７１】
ｒｅｔｕｒｎ  ｉｍａｇｅ；
【００７２】
｝
【００７３】
例えば、スクリーンショットオブジェクトがゲームアプリケーションスクリーンショットクラスからインスタンス化された場合、そのスクリーンショットオブジェクトは、オペレーティングシステムを呼び出してゲームアプリケーションスクリーンショットクラスのカスタム要素を用いて、ゲームスクリーンのスクリーンショットを生成できる。スクリーンショットオブジェクトがインスタンス化された元のスクリーンショットクラスのカスタム要素に起因して、生成されたスクリーンショットは、オペレーティングシステムによって提供されるデフォルトのスクリーンショット生成技術または基底スクリーンショットクラスから生成されたスクリーンショットオブジェクトを用いて生成されたスクリーンショットとは異なりうる。
【００７４】
１０８で、スクリーンショットは、表示に向けてアプリケーションに送信される。
【００７５】
スクリーンショット（例えば、画像ファイル）は、スクリーンショットコマンドを発行したアプリケーションに返される。いくつかの実施形態において、アプリケーションは、スクリーンショットを携帯デバイスのスクリーンに表示する。いくつかの実施形態において、アプリケーションは、スクリーンショットに関する１または複数の処理オプションをユーザに提示する。例えば、スクリーンショットに関する処理オプションは、スクリーンショットを格納するオプション、ならびに、プラットフォーム（例えば、ソーシャルメディアプラットフォーム）でまたは少なくとも１人の他のユーザとスクリーンショットを共有するオプションを含む。
【００７６】
以下は、処理１００を利用する第１の例である：携帯デバイスのユーザが、現在実行中のビデオ再生アプリケーションによって再生されたビデオを鑑賞しており、現在のビデオスクリーンのスクリーンショットを撮りたいと思うとする。この例において、所定のスクリーンショット生成操作が、携帯デバイスを振ることであると仮定する。したがって、現在のビデオスクリーンのスクリーンショットを生成する際に、ユーザは、スクリーンショットコマンドを生成および送信させるために、携帯デバイスを振るだけでよい。スクリーンショットコマンドは、ビデオ再生アプリケーションシナリオパラメータ（例えば、１００２）を含む。スクリーンショットコマンドが、処理１００を実行するよう構成されたオペレーティングシステムまたはその他のメカニズムによって受信された後、現在実行中のアプリケーションのアプリケーションシナリオは、スクリーンショットコマンドに含まれるビデオ再生アプリケーションシナリオパラメータ（例えば、１００２）に基づいて、ビデオ再生アプリケーションとして特定される。次いで、ビデオ再生アプリケーションシナリオパラメータに対応するビデオ再生アプリケーションスクリーンショットクラスのスクリーンショットオブジェクトが生成され、生成されたスクリーンショットオブジェクトは、現在実行中のアプリケーションの現在のスクリーンのスクリーンショットを生成するために用いられる。次いで、現在実行中のアプリケーションの現在のスクリーンのスクリーンショットは、ビデオ再生アプリケーションに返される。
【００７７】
以下は、処理１００を利用する第２の例である：エンドユーザが、現在実行中のゲームアプリケーションによって提供されたゲームをプレイしており、現在のゲームスクリーンのスクリーンショットを撮りたいと思うとする。この例において、所定のスクリーンショット生成操作が、携帯デバイスを振ることであると仮定する。したがって、現在のゲームスクリーンのスクリーンショットを生成する際に、ユーザは、スクリーンショットコマンドを生成および送信させるために、携帯デバイスを振るだけでよい。スクリーンショットコマンドは、ゲームアプリケーションシナリオパラメータ（例えば、１００３）を含む。スクリーンショットコマンドが、処理１００を実行するよう構成されたオペレーティングシステムまたはその他のメカニズムによって受信された後、現在実行中のアプリケーションのアプリケーションシナリオは、スクリーンショットコマンドに含まれるゲームアプリケーションシナリオパラメータ（例えば、１００３）に基づいて、ゲームアプリケーションとして特定される。次いで、ゲームアプリケーションシナリオパラメータに対応するゲームアプリケーションスクリーンショットクラスのスクリーンショットオブジェクトが生成され、生成されたスクリーンショットオブジェクトは、現在実行中のアプリケーションの現在のスクリーンのスクリーンショットを生成するために用いられる。次いで、現在実行中のアプリケーションの現在のスクリーンのスクリーンショットは、ゲームアプリケーションに返される。
【００７８】
図２は、スクリーンショットを生成するための処理の一実施形態を示すフローチャートである。いくつかの実施形態において、図１の処理１００の工程１０４、１０６、および、１０８は、少なくとも部分的に処理２００を用いて実施される。
【００７９】
２０２で、スクリーンショットコマンドに含まれるアプリケーションシナリオパラメータに対応するアプリケーションシナリオが決定される。アプリケーションから受信されたスクリーンショットコマンドに含まれるアプリケーションシナリオパラメータが抽出される。いくつかの実施形態において、抽出されたアプリケーションシナリオパラメータは、抽出されたアプリケーションシナリオパラメータに対応するアプリケーションシナリオを決定するために、アプリケーションシナリオパラメータとアプリケーションシナリオとの間の格納された対応関係と比較される。処理２００の例では、３つの可能なアプリケーションシナリオが、ネイティブアプリケーション、ビデオ再生アプリケーション、または、ゲームアプリケーションを含む。
【００８０】
抽出されたアプリケーションシナリオパラメータがネイティブアプリケーションに対応する場合、制御は工程２０４に進む。抽出されたアプリケーションシナリオパラメータがビデオ再生アプリケーションに対応する場合、制御は工程２０８に進む。抽出されたアプリケーションシナリオパラメータがゲームアプリケーションに対応する場合、制御は工程２１２に進む。
【００８１】
２０４で、ネイティブアプリケーションスクリーンショットクラスがリトリーブされる。少なくともネイティブアプリケーションスクリーンショットクラスが、ストレージから取得される。いくつかの実施形態において、ネイティブアプリケーションスクリーンショットクラスは、スクリーンショットＳＤＫに含まれる基底スクリーンショットクラスのオブジェクト指向プログラミング継承を用いて、ネイティブアプリケーションの開発者によって作成される。ネイティブアプリケーションスクリーンショットクラスは、基底スクリーンショットクラスに含まれずネイティブアプリケーションからスクリーンショットを生成するよう適合されたさらなるメソッドおよび／または他のフィーチャを含む。ネイティブアプリケーションスクリーンショットクラスは、ネイティブアプリケーションシナリオに関連するアプリケーションからスクリーンショットを生成するためのカスタム設定／フィーチャを含む。ネイティブアプリケーションスクリーンショットクラスおよび基底スクリーンショットクラスの両方が、携帯デバイスに格納される。ネイティブアプリケーションスクリーンショットクラスが、基底スクリーンショットクラス（例えば、それからの継承）のサブクラスである場合、ネイティブアプリケーションスクリーンショットクラスおよび基底スクリーンショットクラスの両方が、ストレージからリトリーブされる。
【００８２】
２０６で、スクリーンショットオブジェクトが、ネイティブアプリケーションスクリーンショットクラスに少なくとも部分的に基づいて生成される。スクリーンショットオブジェクトは、取得されたネイティブアプリケーションスクリーンショットクラスからインスタンス化される。取得されたネイティブアプリケーションスクリーンショットクラスからインスタンス化されたスクリーンショットオブジェクトは、ネイティブアプリケーションスクリーンショットクラスによって提供された任意のカスタム設定／フィーチャで、携帯デバイスで現在実行中のネイティブアプリケーションによって表示されたコンテンツからスクリーンショットを生成するために、携帯デバイスのオペレーティングシステムを呼び出すよう構成される。
【００８３】
２０８で、ビデオ再生アプリケーションスクリーンショットクラスがリトリーブされる。少なくともビデオ再生アプリケーションスクリーンショットクラスが、ストレージから取得される。いくつかの実施形態において、ビデオ再生アプリケーションスクリーンショットクラスは、スクリーンショットＳＤＫに含まれる基底スクリーンショットクラスのオブジェクト指向プログラミング継承を用いて、ビデオ再生アプリケーションの開発者によって作成される。ビデオ再生アプリケーションスクリーンショットクラスは、基底スクリーンショットクラスに含まれずビデオ再生アプリケーションからスクリーンショットを生成するよう適合されたさらなるメソッドおよび／または他のフィーチャを含む。ビデオ再生アプリケーションスクリーンショットクラスは、ビデオ再生アプリケーションシナリオに関連するアプリケーションからスクリーンショットを生成するためのカスタム設定／フィーチャを含む。ビデオ再生アプリケーションスクリーンショットクラスおよび基底スクリーンショットクラスの両方が、携帯デバイスに格納される。ビデオ再生アプリケーションスクリーンショットクラスが、基底スクリーンショットクラス（例えば、それからの継承）のサブクラスである場合、ビデオ再生アプリケーションスクリーンショットクラスおよび基底スクリーンショットクラスの両方が、ストレージからリトリーブされる。
【００８４】
２１０で、スクリーンショットオブジェクトが、ビデオ再生アプリケーションスクリーンショットクラスに少なくとも部分的に基づいて生成される。スクリーンショットオブジェクトは、取得されたビデオ再生アプリケーションスクリーンショットクラスからインスタンス化される。取得されたビデオ再生アプリケーションスクリーンショットクラスからインスタンス化されたスクリーンショットオブジェクトは、ビデオ再生アプリケーションスクリーンショットクラスによって提供された任意のカスタム設定／フィーチャで、携帯デバイスで現在実行中のビデオ再生アプリケーションによって表示されたコンテンツからスクリーンショットを生成するために、携帯デバイスのオペレーティングシステムを呼び出すよう構成される。
【００８５】
２１２で、ゲームアプリケーションスクリーンショットクラスがリトリーブされる。少なくともゲームアプリケーションスクリーンショットクラスが、ストレージから取得される。いくつかの実施形態において、ゲームアプリケーションスクリーンショットクラスは、スクリーンショットＳＤＫに含まれる基底スクリーンショットクラスのオブジェクト指向プログラミング継承を用いて、ゲームアプリケーションの開発者によって作成される。ゲームアプリケーションスクリーンショットクラスは、基底スクリーンショットクラスに含まれずゲームアプリケーションからスクリーンショットを生成するよう適合されたさらなるメソッドおよび／または他のフィーチャを含む。ゲームアプリケーションスクリーンショットクラスは、ゲームアプリケーションシナリオに関連するアプリケーションからスクリーンショットを生成するためのカスタム設定／フィーチャを含む。ゲームアプリケーションスクリーンショットクラスおよび基底スクリーンショットクラスの両方が、携帯デバイスに格納される。ゲームアプリケーションスクリーンショットクラスが、基底スクリーンショットクラス（例えば、それからの継承）のサブクラスである場合、ゲームアプリケーションスクリーンショットクラスおよび基底スクリーンショットクラスの両方が、ストレージからリトリーブされる。
【００８６】
２１４で、スクリーンショットオブジェクトが、ゲームアプリケーションスクリーンショットクラスに少なくとも部分的に基づいて生成される。スクリーンショットオブジェクトは、取得されたゲームアプリケーションスクリーンショットクラスからインスタンス化される。取得されたゲームアプリケーションスクリーンショットクラスからインスタンス化されたスクリーンショットオブジェクトは、ゲームアプリケーションスクリーンショットクラスによって提供された任意のカスタム設定／フィーチャで、携帯デバイスで現在実行中のゲームアプリケーションによって表示されたコンテンツからスクリーンショットを生成するために、携帯デバイスのオペレーティングシステムを呼び出すよう構成される。
【００８７】
２１６で、スクリーンショットオブジェクトを用いて、アプリケーションによって表示されたコンテンツから、スクリーンショットが生成される。スクリーンショットオブジェクト（ネイティブアプリケーションスクリーンショットクラス、ビデオ再生アプリケーションスクリーンショットクラス、および、ゲームアプリケーションスクリーンショットクラスの内の１つからインスタンス化されたもの）は、スクリーンショットコマンドを発行した現在実行中のアプリケーションによって表示されたコンテンツのスクリーンショットを生成するために、携帯デバイスで実行中のオペレーティングシステムを呼び出すよう構成される。いくつかの実施形態において、オペレーティングシステムによって生成されるスクリーンショットは、スクリーンショットオブジェクトがインスタンス化される元になったスクリーンショットクラスのカスタム要素／設定／フィーチャに基づいて生成される。スクリーンショットは、例えば、画像ファイルを含んでよい。
【００８８】
２１８で、スクリーンショットが提示される。生成されたスクリーンショットは、携帯デバイスのユーザが見るために携帯デバイスのスクリーンに提示される。例えば、ユーザは、スクリーンショットを見た後に、スクリーンショットを格納、共有、または、破棄するオプションを提示される。いくつかの実施形態において、スクリーンショットは、最初に、アプリケーションに返され、次いで、アプリケーションによって携帯デバイスに提示される。
【００８９】
２２０で、任意選択的に、スクリーンショットは、所定の共有操作の検出に少なくとも部分的に基づいて、少なくとも１人のユーザと共有される。携帯デバイスのユーザは、１または複数の他のユーザとスクリーンショットを共有したいと思う場合がある。いくつかの実施形態において、ユーザは、スクリーンショットを共有するために、携帯デバイスを用いて所定の共有操作を実行できる。例えば、所定の共有操作も、スクリーンショットが携帯デバイスのスクリーンに表示されている間に携帯デバイスを振ることであってよい。携帯デバイスに備えられたセンサ（例えば、モーションセンサ）が、所定の共有操作を検出し、それに応じて、スクリーンショットを共有させることができる。例えば、所定の共有操作の検出に応答して、携帯デバイスは、スクリーンショットの共有に関連する１または複数のオプションをユーザに提示するよう構成される。スクリーンショットの共有に関連するオプションの例は、ユーザが、どの他のユーザ（例えば、ユーザとの友達関係を保存された連絡先および／または他のユーザの携帯デバイス）にスクリーンショットを送りたいのか、ならびに／もしくは、ユーザが、どのソーシャルメディアプラットフォームまたはクラウドストレージプラットフォームにスクリーンショットをアップロードしたいのか、を含む。したがって、現在実行中のアプリケーションからスクリーンショットを作成して共有する処理が、携帯デバイスのユーザにとって非常に高速かつ簡単になる。
【００９０】
上述の技術を利用すれば、携帯デバイスのユーザは、アプリケーションがどのアプリケーションシナリオに関連するかに関わらず、携帯デバイスに関する同じ所定のスクリーンショット操作を実行して、現在実行中のアプリケーションによって表示されたコンテンツからスクリーンショットを生成させることができるようになる。さらに、各アプリケーションシナリオに対応するアプリケーションから生成されたスクリーンショットは、そのアプリケーションシナリオに固有のカスタム設定／フィーチャを備えてもよい。したがって、ユーザは、異なるアプリケーションシナリオに関連するアプリケーションのための潜在的に異なる複雑なスクリーンショット生成技術を学ぶために時間および／またはエネルギを費やす必要がない。ユーザは、統一された所定のスクリーンショット操作を学んで利用することで、より簡便かつ楽しいユーザ体験で、様々なアプリケーションシナリオのアプリケーションでスクリーンショットを生成させることができる。
【００９１】
図３は、スクリーンショットを生成するためのシステムの一実施形態を示す図である。この例において、システム３００は、第１取得モジュール３０１、生成モジュール３０２、および、スクリーンショットモジュール３０３を備える。
【００９２】
モジュールおよびユニットは、１または複数のプロセッサ上で実行されるソフトウェアコンポーネントとして、設計されたプログラム可能論理デバイスおよび／または特定用途向け集積回路などのハードウェアとして実装されてよく、要素は、コンピュータデバイス（パーソナルコンピュータ、サーバ、ネットワーク装置など）に本発明の実施形態に記載された方法を実行させるための複数の命令など、不揮発性記憶媒体（光学ディスク、フラッシュ記憶装置、携帯用ハードディスクなど）に格納することができるソフトウェア製品の形態で具現化されてよい。モジュールおよびユニットは、単一のデバイス上に実装されてもよいし、複数のデバイスにわたって分散されてもよい。
【００９３】
第１取得モジュール３０１は、スクリーンショットコマンドをアプリケーションから受信するよう構成されている。アプリケーションは、携帯デバイスで現在実行中であり、携帯デバイスのスクリーンにコンテンツを表示している。スクリーンショットコマンドは、アプリケーションシナリオパラメータを含む。例えば、アプリケーションシナリオパラメータは、ネイティブアプリケーションシナリオパラメータ、ビデオ再生アプリケーションシナリオパラメータ、または、ゲームアプリケーションシナリオパラメータを含む。
【００９４】
生成モジュール３０２は、アプリケーションシナリオパラメータに対応するスクリーンショットクラスに少なくとも部分的に基づいて、スクリーンショットオブジェクトを生成するよう構成されている。例えば、ネイティブアプリケーションシナリオパラメータはネイティブアプリケーションスクリーンショットクラスに対応し、ビデオ再生アプリケーションシナリオパラメータはビデオ再生アプリケーションスクリーンショットクラスに対応し、ゲームアプリケーションシナリオパラメータはゲームアプリケーションスクリーンショットクラスに対応する。
【００９５】
スクリーンショットモジュール３０３は、スクリーンショットオブジェクトを用いて、アプリケーションによって表示されたコンテンツからスクリーンショットを生成するよう構成されている。いくつかの実施形態において、スクリーンショットモジュール３０３は、スクリーンショットをアプリケーションに送信するよう構成されている。
【００９６】
いくつかの実施形態において、第１取得モジュール３０１は、さらに以下を含む：
【００９７】
所定のスクリーンショット操作の検出に応答して、スクリーンショットコマンドを生成するよう構成された取得ユニット。例えば、所定のスクリーンショット操作は、携帯デバイスを振ることを含む。
【００９８】
いくつかの実施形態において、生成モジュール３０２は、さらに以下を含む：
【００９９】
スクリーンショットコマンドに含まれるアプリケーションシナリオパラメータに関連するアプリケーションシナリオを決定するよう構成された評価ユニット。
【０１００】
スクリーンショットコマンドに含まれるアプリケーションシナリオパラメータがネイティブアプリケーションシナリオパラメータである場合にネイティブアプリケーションスクリーンショットクラスを取得するよう構成された第１ルックアップユニット。
【０１０１】
ネイティブアプリケーションスクリーンショットクラスからスクリーンショットオブジェクトを生成するよう構成された第１生成ユニット。
【０１０２】
それに応じて、いくつかの実施形態において、スクリーンショットモジュール３０３は、さらに以下を含む：
【０１０３】
ネイティブアプリケーションスクリーンショットクラスから生成されたスクリーンショットオブジェクトを用いて、現在実行中のネイティブアプリケーションによって表示されたコンテンツからスクリーンショットを生成するよう構成された第１スクリーンショットユニット。いくつかの実施形態において、スクリーンショットオブジェクトは、スクリーンショットを生成するために携帯デバイスのオペレーティングシステムを呼び出すことによって、スクリーンショットを生成するよう構成される。
【０１０４】
いくつかの実施形態において、生成モジュール３０２は、さらに以下を含む：
【０１０５】
スクリーンショットコマンドに含まれるアプリケーションシナリオパラメータがビデオ再生アプリケーションシナリオパラメータである場合にビデオ再生アプリケーションスクリーンショットクラスを取得するよう構成された第２ルックアップユニット。
【０１０６】
ビデオ再生アプリケーションスクリーンショットクラスからスクリーンショットオブジェクトを生成するよう構成された第２生成ユニット。
【０１０７】
いくつかの実施形態において、スクリーンショットモジュール３０３は、さらに以下を含む：
【０１０８】
ビデオ再生アプリケーションスクリーンショットクラスから生成されたスクリーンショットオブジェクトを用いて、現在実行中のビデオ再生アプリケーションによって表示されたコンテンツからスクリーンショットを生成するよう構成された第２スクリーンショットユニット。いくつかの実施形態において、スクリーンショットオブジェクトは、スクリーンショットを生成するために携帯デバイスのオペレーティングシステムを呼び出すことによって、スクリーンショットを生成するよう構成される。
【０１０９】
また、生成モジュール３０２は、さらに以下を含む：
【０１１０】
スクリーンショットコマンドに含まれるアプリケーションシナリオパラメータがゲームアプリケーションシナリオパラメータである場合にゲームアプリケーションスクリーンショットクラスを取得するよう構成された第３ルックアップユニット。
【０１１１】
ゲームアプリケーションスクリーンショットクラスからスクリーンショットオブジェクトを生成するよう構成された第３生成ユニット。
【０１１２】
それに応じて、いくつかの実施形態において、スクリーンショットモジュール３０３は、さらに以下を含む：
【０１１３】
ゲームアプリケーションスクリーンショットクラスから生成されたスクリーンショットオブジェクトを用いて、現在実行中のゲームアプリケーションによって表示されたコンテンツからスクリーンショットを生成するよう構成された第３スクリーンショットユニット。いくつかの実施形態において、スクリーンショットオブジェクトは、スクリーンショットを生成するために携帯デバイスのオペレーティングシステムを呼び出すことによって、スクリーンショットを生成するよう構成される。
【０１１４】
図４は、スクリーンショットを生成するためのシステムの一実施形態を示す図である。この例において、システム４００は、第１取得モジュール４０１、生成モジュール４０２、スクリーンショットモジュール４０３、第２取得モジュール４０４、および、共有モジュール４０５を備える。
【０１１５】
モジュールおよびユニットは、１または複数のプロセッサ上で実行されるソフトウェアコンポーネントとして、設計されたプログラム可能論理デバイスおよび／または特定用途向け集積回路などのハードウェアとして実装されてよく、要素は、コンピュータデバイス（パーソナルコンピュータ、サーバ、ネットワーク装置など）に本発明の実施形態に記載された方法を実行させるための複数の命令など、不揮発性記憶媒体（光学ディスク、フラッシュ記憶装置、携帯用ハードディスクなど）に格納することができるソフトウェア製品の形態で具現化されてよい。モジュールおよびユニットは、単一のデバイス上に実装されてもよいし、複数のデバイスにわたって分散されてもよい。
【０１１６】
第１取得モジュール４０１、生成モジュール４０２、および、スクリーンショットモジュール４０３は、それぞれ、図３のシステム３００の第１取得モジュール３０１、生成モジュール３０２、および、スクリーンショットモジュール３０３と同様に実装されてよい。
【０１１７】
第２取得モジュール４０４は、所定の共有操作を検出するよう構成されている。例えば、所定の共有操作は、携帯デバイスを振ることを含む。
【０１１８】
共有モジュール４０５は、スクリーンショットオブジェクトによって生成されたスクリーンショットを共有するよう構成されている。
【０１１９】
図５は、スクリーンショットを生成するためにプログラムされたコンピュータシステムの一実施形態を示す機能図である。明らかに、スクリーンショットを生成するために、他のコンピュータシステムアーキテクチャおよび構成を用いることも可能である。以下に述べるような様々なサブシステムを備えるコンピュータシステム５００は、少なくとも１つのマイクロプロセッササブシステム（プロセッサまたは中央処理装置（ＣＰＵ）とも呼ばれる）５０２を備える。例えば、プロセッサ５０２は、シングルチッププロセッサまたはマルチプロセッサによって実装できる。いくつかの実施形態において、プロセッサ５０２は、コンピュータシステム５００の動作を制御する汎用デジタルプロセッサである。メモリ５１０から読み出された命令を用いて、プロセッサ５０２は、入力データの受信および操作、ならびに、出力デバイス（例えば、ディスプレイ５１８）上でのデータの出力および表示を制御する。いくつかの実施形態において、プロセッサ５０２は、スクリーンショットを生成することを含む、および／または、スクリーンショットを生成するために用いられる。いくつかの実施形態では、モーションセンサ５２２が、所定のスクリーンショット操作または所定の共有操作を含むユーザ操作を検出するよう構成される。
【０１２０】
プロセッサ５０２は、メモリ５１０と双方向的に接続されており、メモリ５１０は、第１のプライマリストレージ（通例は、ランダムアクセスメモリ（ＲＡＭ））および第２のプライマリストレージ領域（通例は、読み出し専用メモリ（ＲＯＭ））を含みうる。当業者に周知のように、プライマリストレージは、一般的な記憶領域として、および、スクラッチパッドメモリとして利用可能であり、また、入力データおよび処理済みデータを格納するために利用可能である。プライマリストレージは、さらに、プロセッサ５０２上で実行される処理のための他のデータおよび命令に加えて、データオブジェクトおよびテキストオブジェクトの形態で、プログラミング命令およびデータを格納できる。また、当業者に周知のように、プライマリストレージは、通例、機能（例えば、プログラムされた命令）を実行するためにプロセッサ５０２によって用いられる基本的な動作命令、プログラムコード、データ、および、オブジェクトを備える。例えば、メモリ５１０は、例えば、データアクセスが双方向である必要があるか、単方向である必要があるかに応じて、後述する任意の適切なコンピュータ読み取り可能な記憶媒体を含みうる。例えば、プロセッサ５０２は、頻繁に必要になるデータをキャッシュメモリ（図示せず）に直接的かつ非常に迅速に格納し取り出すことができる。
【０１２１】
着脱可能マスストレージデバイス５１２が、コンピュータシステム５００にさらなるデータ記憶容量を提供しており、プロセッサ５０２に対して双方向（読み出し／書き込み）または単方向（読み出しのみ）に接続されている。例えば、ストレージ５１２は、磁気テープ、フラッシュメモリ、ＰＣカード、携帯型マスストレージデバイス、ホログラフィックストレージデバイス、および、その他のストレージデバイスなどのコンピュータ読み取り可能な媒体も含みうる。固定マスストレージ５２０も、例えば、さらなるデータ記憶容量を提供しうる。固定マスストレージ５２０の最も一般的な例は、ハードディスクドライブである。マスストレージ５１２、５２０は、一般に、プロセッサ５０２によって通例はあまり利用されないさらなるプログラミング命令、データなどを格納する。マスストレージ５１２および５２０に保持された情報は、必要であれば、仮想メモリとしてのメモリ５１０（例えば、ＲＡＭ）の一部に標準的な方式で組み込まれうることが理解される。
【０１２２】
プロセッサ５０２がストレージサブシステムにアクセスできるようにすることに加えて、バス５１４が、その他のサブシステムおよびデバイスへのアクセスを可能にするために用いられてもよい。図に示すように、これらは、ディスプレイ５１８、ネットワークインターフェース５１６、キーボード５０４、および、ポインティングデバイス５０８、ならびに、必要に応じて、補助入力／出力デバイスインターフェース、サウンドカード、スピーカ、および、その他のサブシステムを含みうる。例えば、ポインティングデバイス５０８は、マウス、スタイラス、トラックボール、または、タブレットであってよく、グラフィカルユーザインターフェースと相互作用するのに有用である。
【０１２３】
ネットワークインターフェース５１６は、図に示すように、ネットワーク接続を用いて、別のコンピュータ、コンピュータネットワーク、または、遠隔通信ネットワークにプロセッサ５０２を接続することを可能にする。例えば、ネットワークインターフェース５１６を通して、プロセッサ５０２は、方法／処理ステップを実行する過程で、別のネットワークから情報（例えば、データオブジェクトまたはプログラム命令）を受信したり、別のネットワークに情報を出力したりすることができる。情報は、しばしば、プロセッサ上で実行される一連の命令として表され、別のネットワークから受信されたり、別のネットワークへ出力されたりしうる。インターフェースカード（または同様のデバイス）と、プロセッサ５０２によって実装（例えば、実行／実施）される適切なソフトウェアとを用いて、コンピュータシステム５００を外部ネットワークに接続し、標準プロトコルに従ってデータを転送することができる。例えば、本明細書に開示された様々な処理の実施形態は、プロセッサ５０２上で実行されてもよいし、処理の一部を共有するリモートプロセッサと共に、ネットワーク（インターネット、イントラネットワーク、または、ローカルエリアネットワークなど）上で実行されてもよい。さらなるマスストレージデバイス（図示せず）が、ネットワークインターフェース５１６を通してプロセッサ５０２に接続されてもよい。
【０１２４】
補助Ｉ／Ｏデバイスインターフェース（図示せず）が、コンピュータシステム５００と共に用いられてよい。補助Ｉ／Ｏデバイスインターフェースは、プロセッサ５０２がデータを送信すること、ならびに、より典型的には、他のデバイス（マイクロフォン、タッチセンサ方式ディスプレイ、トランスデューサカードリーダ、テープリーダ、音声または手書き認識装置、バイオメトリクスリーダ、カメラ、携帯型マスストレージデバイス、および、他のコンピュータなど）からデータを受信することを可能にする汎用インターフェースおよびカスタマイズされたインターフェースを含みうる。
【０１２５】
上述の記載では、本願のいくつかの実施形態を提示して説明している。ただし、上述のように、本願は、本明細書に開示された形態に限定されないと理解されるべきである。開示の事実は、別の実施形態を除外するものと見なされない。むしろ、開示された形態は、様々な他の組み合わせ、変形、および、環境で利用されてもよい。さらに、本明細書に記載の本発明の概念的範囲を保持しつつ、関連分野の技術または知識もしくは上述のガイドラインを用いて変更することもできる。本願の精神および範囲から逸脱しない限りは、当業者によってなされる変更も変形も、本願に添付の特許請求の範囲内にある。
【０１２６】
上述の実施形態は、理解しやすいようにいくぶん詳しく説明されているが、本発明は、提供された詳細事項に限定されるものではない。本発明を実施する多くの代替方法が存在する。開示された実施形態は、例示であり、限定を意図するものではない。
【図１】
2017513106.tif 000003
【図２】
2017513106.tif 000004
【図３】
2017513106.tif 000005
【図４】
2017513106.tif 000006
【図５】
2017513106.tif 000007
【手続補正書】
【提出日】平成28年11月2日(2016.11.2)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
システムであって、
１または複数のプロセッサであって、
アプリケーションに対応するアプリケーションシナリオパラメータを含むスクリーンショットコマンドを前記アプリケーションから受信し、
前記アプリケーションシナリオパラメータに対応するスクリーンショットクラスに少なくとも部分的に基づいて、スクリーンショットオブジェクトを生成し、
前記スクリーンショットオブジェクトを用いて、前記アプリケーションによって表示されたコンテンツからスクリーンショットを生成し、
表示に向けて前記スクリーンショットを前記アプリケーションに送信するよう構成された、１または複数のプロセッサと、
前記１または複数のプロセッサに接続され、前記１または複数のプロセッサに命令を提供するよう構成された１または複数のメモリと、
を備える、システム。
【請求項２】
請求項１に記載のシステムであって、前記スクリーンショットコマンドは、所定のスクリーンショット操作の検出に応答して生成される、システム。
【請求項３】
請求項１に記載のシステムであって、前記アプリケーションは、携帯デバイスで実行中である、システム。
【請求項４】
請求項１に記載のシステムであって、前記アプリケーションシナリオパラメータは、ネイティブアプリケーションシナリオパラメータ、ビデオ再生アプリケーションシナリオパラメータ、または、ゲームアプリケーションシナリオパラメータの内の１または複数を含む、システム。
【請求項５】
請求項１に記載のシステムであって、前記アプリケーションシナリオパラメータがネイティブアプリケーションシナリオパラメータを含む場合、前記スクリーンショットクラスは、ネイティブアプリケーションスクリーンショットクラスを含む、システム。
【請求項６】
請求項１に記載のシステムであって、前記アプリケーションシナリオパラメータがビデオ再生アプリケーションシナリオパラメータを含む場合、前記スクリーンショットクラスは、ビデオ再生アプリケーションスクリーンショットクラスを含む、システム。
【請求項７】
請求項１に記載のシステムであって、前記アプリケーションシナリオパラメータがゲームアプリケーションシナリオパラメータを含む場合、前記スクリーンショットクラスは、ゲームアプリケーションスクリーンショットクラスを含む、システム。
【請求項８】
請求項１に記載のシステムであって、前記アプリケーションシナリオパラメータに対応する前記スクリーンショットクラスは、基底スクリーンショットクラスから導出される、システム。
【請求項９】
請求項１に記載のシステムであって、前記スクリーンショットオブジェクトは、前記スクリーンショットを生成するために、オペレーティングシステムを呼び出すよう構成される、システム。
【請求項１０】
請求項１に記載のシステムであって、前記１または複数のプロセッサは、さらに、所定の共有操作を検出するよう構成されている、システム。
【請求項１１】
請求項１０に記載のシステムであって、前記１または複数のプロセッサは、さらに、少なくとも１人のユーザと前記スクリーンショットを共有するよう構成されている、システム。
【請求項１２】
方法であって、
アプリケーションに対応するアプリケーションシナリオパラメータを含むスクリーンショットコマンドを前記アプリケーションから受信する工程と、
１または複数のプロセッサを用いて、前記アプリケーションシナリオパラメータに対応するスクリーンショットクラスに少なくとも部分的に基づいて、スクリーンショットオブジェクトを生成する工程と、
前記スクリーンショットオブジェクトを用いて、前記アプリケーションによって表示されたコンテンツからスクリーンショットを生成する工程と、
表示に向けて前記スクリーンショットを前記アプリケーションに送信する工程と、
を備える、方法。
【請求項１３】
請求項１２に記載の方法であって、前記スクリーンショットコマンドは、所定のスクリーンショット操作の検出に応答して生成される、方法。
【請求項１４】
請求項１２に記載の方法であって、前記アプリケーションは、携帯デバイスで実行中である、方法。
【請求項１５】
請求項１２に記載の方法であって、前記アプリケーションシナリオパラメータは、ネイティブアプリケーションシナリオパラメータ、ビデオ再生アプリケーションシナリオパラメータ、または、ゲームアプリケーションシナリオパラメータの内の１または複数を含む、方法。
【請求項１６】
請求項１２に記載の方法であって、前記アプリケーションシナリオパラメータがネイティブアプリケーションシナリオパラメータを含む場合、前記スクリーンショットクラスは、ネイティブアプリケーションスクリーンショットクラスを含む、方法。
【請求項１７】
請求項１２に記載の方法であって、前記アプリケーションシナリオパラメータがビデオ再生アプリケーションシナリオパラメータを含む場合、前記スクリーンショットクラスは、ビデオ再生アプリケーションスクリーンショットクラスを含む、方法。
【請求項１８】
請求項１２に記載の方法であって、前記アプリケーションシナリオパラメータがゲームアプリケーションシナリオパラメータを含む場合、前記スクリーンショットクラスは、ゲームアプリケーションスクリーンショットクラスを含む、方法。
【請求項１９】
請求項１２に記載の方法であって、前記アプリケーションシナリオパラメータに対応する前記スクリーンショットクラスは、基底スクリーンショットクラスから導出される、方法。
【請求項２０】
コンピュータプログラムであって、
アプリケーションに対応するアプリケーションシナリオパラメータを含むスクリーンショットコマンドを前記アプリケーションから受信するための機能と、
前記アプリケーションシナリオパラメータに対応するスクリーンショットクラスに少なくとも部分的に基づいて、スクリーンショットオブジェクトを生成するための機能と、
前記スクリーンショットオブジェクトを用いて、前記アプリケーションによって表示されたコンテンツからスクリーンショットを生成するための機能と、
表示に向けて前記スクリーンショットを前記アプリケーションに送信するための機能と、
をコンピュータに実現させるコンピュータプログラム。
【手続補正２】
【補正対象書類名】明細書
【補正対象項目名】０１２６
【補正方法】変更
【補正の内容】
【０１２６】
上述の実施形態は、理解しやすいようにいくぶん詳しく説明されているが、本発明は、提供された詳細事項に限定されるものではない。本発明を実施する多くの代替方法が存在する。開示された実施形態は、例示であり、限定を意図するものではない。
［適用例１］
システムであって、
１または複数のプロセッサであって、
アプリケーションに対応するアプリケーションシナリオパラメータを含むスクリーンショットコマンドを前記アプリケーションから受信し、
前記アプリケーションシナリオパラメータに対応するスクリーンショットクラスに少なくとも部分的に基づいて、スクリーンショットオブジェクトを生成し、
前記スクリーンショットオブジェクトを用いて、前記アプリケーションによって表示されたコンテンツからスクリーンショットを生成し、
表示に向けて前記スクリーンショットを前記アプリケーションに送信するよう構成された、１または複数のプロセッサと、
前記１または複数のプロセッサに接続され、前記１または複数のプロセッサに命令を提供するよう構成された１または複数のメモリと、
を備える、システム。
［適用例２］
適用例１に記載のシステムであって、前記スクリーンショットコマンドは、所定のスクリーンショット操作の検出に応答して生成される、システム。
［適用例３］
適用例１に記載のシステムであって、前記アプリケーションは、携帯デバイスで実行中である、システム。
［適用例４］
適用例１に記載のシステムであって、前記アプリケーションシナリオパラメータは、ネイティブアプリケーションシナリオパラメータ、ビデオ再生アプリケーションシナリオパラメータ、または、ゲームアプリケーションシナリオパラメータの内の１または複数を含む、システム。
［適用例５］
適用例１に記載のシステムであって、前記アプリケーションシナリオパラメータがネイティブアプリケーションシナリオパラメータを含む場合、前記スクリーンショットクラスは、ネイティブアプリケーションスクリーンショットクラスを含む、システム。
［適用例６］
適用例１に記載のシステムであって、前記アプリケーションシナリオパラメータがビデオ再生アプリケーションシナリオパラメータを含む場合、前記スクリーンショットクラスは、ビデオ再生アプリケーションスクリーンショットクラスを含む、システム。
［適用例７］
適用例１に記載のシステムであって、前記アプリケーションシナリオパラメータがゲームアプリケーションシナリオパラメータを含む場合、前記スクリーンショットクラスは、ゲームアプリケーションスクリーンショットクラスを含む、システム。
［適用例８］
適用例１に記載のシステムであって、前記アプリケーションシナリオパラメータに対応する前記スクリーンショットクラスは、基底スクリーンショットクラスから導出される、システム。
［適用例９］
適用例１に記載のシステムであって、前記スクリーンショットオブジェクトは、前記スクリーンショットを生成するために、オペレーティングシステムを呼び出すよう構成される、システム。
［適用例１０］
適用例１に記載のシステムであって、前記１または複数のプロセッサは、さらに、所定の共有操作を検出するよう構成されている、システム。
［適用例１１］
適用例１０に記載のシステムであって、前記１または複数のプロセッサは、さらに、少なくとも１人のユーザと前記スクリーンショットを共有するよう構成されている、システム。
［適用例１２］
方法であって、
アプリケーションに対応するアプリケーションシナリオパラメータを含むスクリーンショットコマンドを前記アプリケーションから受信する工程と、
１または複数のプロセッサを用いて、前記アプリケーションシナリオパラメータに対応するスクリーンショットクラスに少なくとも部分的に基づいて、スクリーンショットオブジェクトを生成する工程と、
前記スクリーンショットオブジェクトを用いて、前記アプリケーションによって表示されたコンテンツからスクリーンショットを生成する工程と、
表示に向けて前記スクリーンショットを前記アプリケーションに送信する工程と、
を備える、方法。
［適用例１３］
適用例１２に記載の方法であって、前記スクリーンショットコマンドは、所定のスクリーンショット操作の検出に応答して生成される、方法。
［適用例１４］
適用例１２に記載の方法であって、前記アプリケーションは、携帯デバイスで実行中である、方法。
［適用例１５］
適用例１２に記載の方法であって、前記アプリケーションシナリオパラメータは、ネイティブアプリケーションシナリオパラメータ、ビデオ再生アプリケーションシナリオパラメータ、または、ゲームアプリケーションシナリオパラメータの内の１または複数を含む、方法。
［適用例１６］
適用例１２に記載の方法であって、前記アプリケーションシナリオパラメータがネイティブアプリケーションシナリオパラメータを含む場合、前記スクリーンショットクラスは、ネイティブアプリケーションスクリーンショットクラスを含む、方法。
［適用例１７］
適用例１２に記載の方法であって、前記アプリケーションシナリオパラメータがビデオ再生アプリケーションシナリオパラメータを含む場合、前記スクリーンショットクラスは、ビデオ再生アプリケーションスクリーンショットクラスを含む、方法。
［適用例１８］
適用例１２に記載の方法であって、前記アプリケーションシナリオパラメータがゲームアプリケーションシナリオパラメータを含む場合、前記スクリーンショットクラスは、ゲームアプリケーションスクリーンショットクラスを含む、方法。
［適用例１９］
適用例１２に記載の方法であって、前記アプリケーションシナリオパラメータに対応する前記スクリーンショットクラスは、基底スクリーンショットクラスから導出される、方法。
［適用例２０］
コンピュータプログラム製品であって、持続性のコンピュータ読み取り可能な記憶媒体内に具現化され、
アプリケーションに対応するアプリケーションシナリオパラメータを含むスクリーンショットコマンドを前記アプリケーションから受信するためのコンピュータ命令と、
前記アプリケーションシナリオパラメータに対応するスクリーンショットクラスに少なくとも部分的に基づいて、スクリーンショットオブジェクトを生成するためのコンピュータ命令と、
前記スクリーンショットオブジェクトを用いて、前記アプリケーションによって表示されたコンテンツからスクリーンショットを生成するためのコンピュータ命令と、
表示に向けて前記スクリーンショットを前記アプリケーションに送信するためのコンピュータ命令と、
を備える、コンピュータプログラム製品。
【国際調査報告】
2017513106.tif 000008
2017513106.tif 000009
2017513106.tif 000010