17

このコードは簡単です

Bitmap bitmap;
View v1 = MyView.getRootView();
v1.setDrawingCacheEnabled(true);
bitmap = Bitmap.createBitmap(v1.getDrawingCache());
v1.setDrawingCacheEnabled(false);

それはうまく機能しますが、これはアクティビティがある場合に当てはまります。

サービスからスクリーンショットを撮るにはどうすればよいですか?

私の目標は、1 時間に 1 枚のスクリーンショットを撮ること、たとえば 12 秒、1 秒、2 秒など、1 時間ごとに画面を閉じることです。

4

2 に答える 2

7

アクティビティのスクリーンショットをキャプチャするには、アクティビティが必要であり、Viewどれがサービスに存在しないかを確認する必要があるため、1 時間ごとにアクティビティを呼び出す TimerTask を作成し、現在の表示ビューで応答するアクティビティを作成する必要があります。そこからキャプチャできますScreenShot。(これはあなたの問題の唯一の解決策だと思います。)

または、現在のデバイス画面(任意のアプリケーション)のスクリーンショットを撮りたい場合は、root権限が必要であり、現在の画面の生データを提供するものを読み取っframebufferてから、ビットマップまたは実行できる画像ファイルに変換する必要がありますあなたのサービス。

于 2012-05-07T12:48:44.897 に答える
3

Android スクリーンショット ライブラリ (ASL) は、アプリケーションに署名したり、Android システムへの特権 (ルート) アクセスを必要とせずに、携帯電話の画面のスナップショットを取得する手段を提供します ASL については、 ここをクリックしてください

于 2013-01-02T09:44:21.003 に答える