w = new WebView(this);
w.setWebViewClient(new WebViewClient()
{
public void onPageFinished(WebView view, String url)
{
Picture picture = view.capturePicture();
Bitmap b = Bitmap.createBitmap( picture.getWidth(),
picture.getHeight(), Bitmap.Config.ARGB_8888);
Canvas c = new Canvas( b );
picture.draw( c );
FileOutputStream fos = null;
try {
fos = new FileOutputStream( "/sdcard/yahoo_" +
System.currentTimeMillis() + ".jpg" );
if ( fos != null )
{
b.compress(Bitmap.CompressFormat.JPEG, 90, fos );
fos.close();
}
} catch( Exception e )
{
//...
}
}
});
Попробуйте этот код, он отлично работает. Если у вас есть какие-либо сомнения, обратитесь к этой странице
Справочная страница
используйте этот код для периодического создания моментального снимка каждые несколько минут, и вам нужно инициализировать логическую переменную webActiveState как true, когда запуск операции содержит webview, и повторно инициализировать как false при остановке или уничтожении () действия
//Taking Snap
void takingSnap(){
Runnable webRunner= new backgroundSnapper();
Thread webSnapping;
final Handler snapHandler = new Handler(){
public void handleMessage(android.os.Message msg) {
webSnapping =new Thread(webRunner);
webSnapping.start();
}
};
snapHandler.sendEmptyMessage(0);
}
public class backgroundSnapper implements Runnable {
public backgroundSnapper(){
}
public void run() {
try{
while(webActivState)
{
Picture picture = webview.capturePicture();
Bitmap b = Bitmap.createBitmap( picture.getWidth(),
picture.getHeight(), Bitmap.Config.ARGB_8888);
Canvas c = new Canvas( b );
picture.draw( c );
FileOutputStream fos = null;
try {
fos = new FileOutputStream( "/sdcard/yahoo_" +
System.currentTimeMillis() + ".jpg" );
if ( fos != null )
{
b.compress(Bitmap.CompressFormat.JPEG, 90, fos );
fos.close();
}
} catch( Exception e )
{
//...
}
}
Thread.sleep(60000);
}
catch(Exception e){
}
}
}
Для сброса активного состояния сети
protected void onStop() {
System.gc();
back.webActiveState=false;
super.onStop();
};
@Override
public void onDestroy() {
back.webActiveState=false;
super.onDestroy();