2012-01-08 3 views
6

私がブラウザを使用するとき、私が訪れたサイトのスクリーンショットを保存したい。将来的に一部のページが消えるためです。だから私はサイトを訪問すると定期的にスクリーンショットを作るバックグラウンドサービスを行うことにしました。誰が私にチュートリアルや例へのヒント、リンクを与えることができますか?他のアプリケーションのバックグラウンドサービスからのスクリーンショット(プログラムで)

P.S.私の電話は根付いている。 Android 2.1そして、それは不可能であると言うことはありません:)

UPDATE:

スクリーンショットJPG形式またはHTMLに違いなし。作るのが簡単な方法。

+1

PNG/JPGまたはHTMLのスクリーンショットのスクリーンショット:前者の場合は、UIスレッドからPictureListener#onNewPicture()を使用して、サービスに送信します。 –

答えて

10
Process sh = Runtime.getRuntime().exec("su", null,null); 

         OutputStream os = sh.getOutputStream(); 
         os.write(("/system/bin/screencap -p " + "/sdcard/img.png").getBytes("ASCII")); 
         os.flush(); 

         os.close(); 
         sh.waitFor(); 

    then read img.png as bitmap and convert it jpg as follows 

Bitmap screen = BitmapFactory.decodeFile(Environment.getExternalStorageDirectory()+ File.separator +"img.png"); 

//my code for saving 
     ByteArrayOutputStream bytes = new ByteArrayOutputStream(); 
     screen.compress(Bitmap.CompressFormat.JPEG, 15, bytes); 

//you can create a new file name "test.jpg" in sdcard folder. 

File f = new File(Environment.getExternalStorageDirectory()+ File.separator + "test.jpg"); 
       f.createNewFile(); 
//write the bytes in file 
     FileOutputStream fo = new FileOutputStream(f); 
     fo.write(bytes.toByteArray()); 
// remember close de FileOutput 

     fo.close(); 
+1

は、ルート付き電話機でのみ動作します – Gabor

+0

別のアプリケーションのスクリーンショットにアクセスするには、root権限が必要です。私はその質問がそうだと願っています... –

+0

と根のない電話はどうですか? –

関連する問題