2016-04-16 3 views
0

実際に私は自分のアクティビティからスクリーンショットをキャプチャしようとしています。コードは現在のアクティビティのスクリーンショットを取りますが、ユーザーがボタンをクリックするとコードが画面のスクリーンショットを撮る必要があります。ここいくつかのタイムスロットの後に画面をキャプチャする方法は?

私のコードそうです:

@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(); 
    } 
} 

答えて

0

まず第一に、あなたは次のように、ハンドラとのRunnableを作成したい:

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

してからボタンをclickListenerを作成し、起動します

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

:スクリーンショットを取るために実行可能
private final int ONE_MINUTE = 60*1000; //1 minute in milliseconds 

希望がある!

関連する問題