2011-12-26 23 views
6

私はAndroid上でアプリケーションを開発しています。このアプリケーションは別のAndroidデバイスに画面を共有します。このアプリケーションはサービスとしてバックグラウンドで実行されます。現在の画面のスクリーンショットを撮る

私は画面(現在の画面)をキャプチャし、JPEGとして保存し、UDP経由で他のAndroidデバイスに継続的に送信したいと考えています。

しかし、私の問題は、フレームバッファをキャプチャして現在の画面をキャプチャする方法です。

助けてください。

答えて

3

あなたは、ビューの

setDrawingCacheEnabled(true); 

を可能にすることにより、レイアウトのスクリーンショットを撮ることができます。

チェックこのlink

+0

ありがとうございました。しかし、これは私のアプリケーションview.Iのスクリーンショットを与えるだけで私のアプリケーションがバックグラウンドで実行されるときに画面に表示されているものをキャプチャしたい – user1095154

+0

あなたはバックグラウンドサービスのスクリーンショットがほしい...私は知らない...誰かがあなたを助けてくれるだろう –

7

Androidのフレームバッファを(および他のLinuxシステムでは)の/ dev /グラフィック/ FB0デバイスを開くことによってアクセスされます。これにはrootアクセスが必要で、rootアクセスでもすべてのデバイスで正しく動作しません。ほとんどのデバイスは一対のフレームバッファを使用し、それらの間でトグルします。大きな問題は、根付いた電話でも、DalvikマシンのユーザーIDにフレームバッファ(fb0)デバイスにアクセスする特権がないことです。つまり、Javaコードからfb0デバイスを直接開いたり読み取ったりすることはできません。 rootとしてネイティブのlinuxアプリケーションを実行する必要があり、fb0にアクセスできるようになります(ユーザが許可した後)。私はこの仕事をすることに成功しました。それはGoogleによって非常に挑戦的でもあります。私はまだこれを商用アプリケーションに変える可能性がありますが、制限と非互換性によってその確率は非常に低くなります。

+0

こんにちはBitBank、お返事ありがとうございます。 – user1095154

+1

私はフレームバッファにアクセスするためにリンクhttp://www.pocketmagic.net/?p=1473を使用しました。しかし、私が連続したスクリーンショットのためのサービスを使って同じコードを使用すると、私はメモリの問題を抱えています。しかし、アクティビティを使って1つの画面をキャプチャすると、メモリエラーは発生しません。あなたが助けることができます – user1095154

+0

フレームバッファメモリをマッピングおよびアンマップしていますか、それとも何度もポインタを保持していますか?私はそれを使用している間、fb0を開いたままにして、画面を連続的にキャプチャすることができました。 – BitBank

関連する問題