снимая экран с URL-адреса веб-приложения в режиме офф-лайн в Android - PullRequest
0 голосов
/ 02 ноября 2011

Мне нужно какое-то руководство отсюда. Теперь мне нужно. Как получить короткий экран из URL с помощью веб-представления, пока приложение не запущено. Возможно ли это? сокращение экрана во время работы приложения. вот мой код:

этот код показывает ошибку:

public class FirePaperActivity extends Activity {

Runnable webRunner = new backgroundSnapper();
Thread webSnapping;
backgroundSnapper back;

/** Called when the activity is first created. */

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    back.webActivState = true;
    takingSnap();
}
void takingSnap() {

    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 {
    WebView webview;
    boolean webActivState;

    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() + "rma.jpg");
                    if (fos != null) {
                        b.compress(Bitmap.CompressFormat.JPEG, 90, fos);
                        fos.close();
                    }
                } catch (Exception e) {
                    // ...
                }

            }

            Thread.sleep(60000);

        } catch (Exception e) {

        }
    }

}

}

это ошибка журнала cat

11-03 10:06:35.800: ERROR/AndroidRuntime(2428): FATAL EXCEPTION: main
11-03 10:06:35.800: ERROR/AndroidRuntime(2428): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.thinkpal.live/com.thinkpal.live.FirePaperActivity}: java.lang.NullPointerException
11-03 10:06:35.800: ERROR/AndroidRuntime(2428):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1651)
11-03 10:06:35.800: ERROR/AndroidRuntime(2428):     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1667)
11-03 10:06:35.800: ERROR/AndroidRuntime(2428):     at android.app.ActivityThread.access$1500(ActivityThread.java:117)
11-03 10:06:35.800: ERROR/AndroidRuntime(2428):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:935)
11-03 10:06:35.800: ERROR/AndroidRuntime(2428):     at android.os.Handler.dispatchMessage(Handler.java:99)
11-03 10:06:35.800: ERROR/AndroidRuntime(2428):     at android.os.Looper.loop(Looper.java:123)
11-03 10:06:35.800: ERROR/AndroidRuntime(2428):     at android.app.ActivityThread.main(ActivityThread.java:3687)
11-03 10:06:35.800: ERROR/AndroidRuntime(2428):     at java.lang.reflect.Method.invokeNative(Native Method)
11-03 10:06:35.800: ERROR/AndroidRuntime(2428):     at java.lang.reflect.Method.invoke(Method.java:507)
11-03 10:06:35.800: ERROR/AndroidRuntime(2428):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:842)
11-03 10:06:35.800: ERROR/AndroidRuntime(2428):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:600)
11-03 10:06:35.800: ERROR/AndroidRuntime(2428):     at dalvik.system.NativeStart.main(Native Method)
11-03 10:06:35.800: ERROR/AndroidRuntime(2428): Caused by: java.lang.NullPointerException
11-03 10:06:35.800: ERROR/AndroidRuntime(2428):     at com.thinkpal.live.FirePaperActivity.onCreate(FirePaperActivity.java:30)
11-03 10:06:35.800: ERROR/AndroidRuntime(2428):     at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
11-03 10:06:35.800: ERROR/AndroidRuntime(2428):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1615)

1 Ответ

0 голосов
/ 02 ноября 2011
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();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...