2016-04-16 6 views
0

Eigentlich versuche ich Screenshot von meiner Aktivität zu erfassen, der Code nimmt den Screenshot der aktuellen Aktivität, aber was ich brauche, ist Code muss den Screenshot des Bildschirms nach einer Minute, wenn der Benutzer auf die Schaltfläche klickt.Wie wird der Bildschirm nach einem bestimmten Zeitschlitz aufgenommen?

hier ist mein Code so:

@Override 
     public void run() { 
     try { 
     serverSocket = new ServerSocket(SocketServerPORT); 
     takeScreenshot(); 
     for(int i=0;i<5;i++) 
     { 
     // Socket socket = serverSocket.accept(); 
      takeScreenshot(); 
      try { 
       Thread.sleep(10000); 
      } catch (InterruptedException e) { 
       // TODO Auto-generated catch block 
       e.printStackTrace(); 
      } 

     // FileTxThread fileTxThread = new FileTxThread(socket); 
     // fileTxThread.start(); 

     } 
     } catch (IOException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
     } 
     } 


    private void takeScreenshot() 
{ 


    try { 
     // image naming and path to include sd card appending name you choose for file 
     String mPath = Environment.getExternalStorageDirectory().toString() + "/sna/" + "screenyash"+i + ".jpg"; 
     i++; 
     // create bitmap screen capture 
     View v1 = getWindow().getDecorView().getRootView(); 
     v1.setDrawingCacheEnabled(true); 
     Bitmap bitmap = Bitmap.createBitmap(v1.getDrawingCache()); 
     v1.setDrawingCacheEnabled(false); 

     File imageFile = new File(mPath); 

     FileOutputStream outputStream = new FileOutputStream(imageFile); 
     int quality = 100; 
     bitmap.compress(Bitmap.CompressFormat.JPEG, quality, outputStream); 
     outputStream.flush(); 
     outputStream.close(); 

     // openScreenshot(imageFile); 
    } catch (Throwable e) { 
     // Several error may come out with file handling or OOM 
     e.printStackTrace(); 
    } 
} 

Antwort

0

First off, möchten Sie einen Handler und einen Runnable erstellen, wie folgt:

final Runnable runnable = new Runnable() { 
     @Override 
     public void run() { 
      //Take screenshot(); 
     } 
    }; 
    final Handler handler = new Handler(); 

Und dann eine clicklistener auf Ihre Schaltfläche erstellen, starten die runnable einen Screenshot zu nehmen:

button.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      handler.postDelayed(runnable, ONE_MINUTE); 
     } 
    }); 

Wo

private final int ONE_MINUTE = 60*1000; //1 minute in milliseconds 

Hoffe, dass hilft!