//package com.forfan.bigbang.component.activity; // //import android.annotation.TargetApi; //import android.app.Activity; //import android.content.Context; //import android.content.Intent; //import android.graphics.Bitmap; //import android.hardware.display.DisplayManager; //import android.hardware.display.VirtualDisplay; //import android.media.Image; //import android.media.ImageReader; //import android.media.projection.MediaProjection; //import android.media.projection.MediaProjectionManager; //import android.net.Uri; //import android.os.Build; //import android.os.Bundle; //import android.os.Environment; //import android.os.Handler; //import android.os.Looper; //import android.support.annotation.RequiresApi; //import android.util.DisplayMetrics; //import android.util.Log; //import android.view.WindowManager; // //import com.forfan.bigbang.component.base.BaseActivity; // //import java.io.File; //import java.io.FileNotFoundException; //import java.io.FileOutputStream; //import java.io.IOException; //import java.nio.ByteBuffer; //import java.text.SimpleDateFormat; //import java.util.Date; // ///** // * Created by wangyan-pd on 2016/11/19. // */ // //public class ScreenCaptureActivity extends BaseActivity { // private static final String TAG = ScreenCaptureActivity.class.getName(); // private MediaProjectionManager mMediaProjectionManager; // private int REQUEST_MEDIA_PROJECTION = 1; // private SimpleDateFormat dateFormat; // private String pathImage; // private WindowManager mWindowManager; // private ImageReader mImageReader; // private MediaProjection mMediaProjection; // private int mResultCode; // private Intent mResultData; // private VirtualDisplay mVirtualDisplay; // private String strDate; // private int windowWidth; // private int windowHeight; // private String nameImage; // private int mScreenDensity; // // @RequiresApi(api = Build.VERSION_CODES.LOLLIPOP) // @Override // protected void onCreate(Bundle savedInstanceState) { // super.onCreate(savedInstanceState); // mMediaProjectionManager = (MediaProjectionManager) getApplication().getSystemService(Context.MEDIA_PROJECTION_SERVICE); // createVirtualEnvironment(); // startActivityForResult(mMediaProjectionManager.createScreenCaptureIntent(), REQUEST_MEDIA_PROJECTION); // } // // @TargetApi(Build.VERSION_CODES.LOLLIPOP) // @Override // public void onActivityResult(int requestCode, int resultCode, Intent data) { // if (requestCode == REQUEST_MEDIA_PROJECTION) { // if (resultCode != Activity.RESULT_OK) { // return; // } else if (data != null && resultCode != 0) { // mResultCode = resultCode; // mResultData = data; // // startVirtual(); // new Handler(Looper.getMainLooper()).postDelayed(new Runnable() { // @Override // public void run() { // startCapture(); // } // },1000); // } // } // } // // @RequiresApi(api = Build.VERSION_CODES.KITKAT) // private void createVirtualEnvironment() { // dateFormat = new SimpleDateFormat("yyyy_MM_dd_hh_mm_ss"); // strDate = dateFormat.format(new Date()); // pathImage = Environment.getExternalStorageDirectory().getPath() + "/Pictures/"; // nameImage = pathImage + strDate + ".png"; // mMediaProjectionManager = (MediaProjectionManager) getApplication().getSystemService(Context.MEDIA_PROJECTION_SERVICE); // mWindowManager = (WindowManager) getApplication().getSystemService(Context.WINDOW_SERVICE); // windowWidth = mWindowManager.getDefaultDisplay().getWidth(); // windowHeight = mWindowManager.getDefaultDisplay().getHeight(); // DisplayMetrics metrics = new DisplayMetrics(); // mWindowManager.getDefaultDisplay().getMetrics(metrics); // mScreenDensity = metrics.densityDpi; // mImageReader = ImageReader.newInstance(windowWidth, windowHeight, 0x1, 2); //ImageFormat.RGB_565 // // Log.i(TAG, "prepared the virtual environment"); // } // // @TargetApi(Build.VERSION_CODES.LOLLIPOP) // public void startVirtual() { // if (mMediaProjection != null) { // Log.i(TAG, "want to display virtual"); // virtualDisplay(); // } else { // Log.i(TAG, "start screen capture intent"); // Log.i(TAG, "want to build mediaprojection and display virtual"); // setUpMediaProjection(); // virtualDisplay(); // } // } // // @TargetApi(Build.VERSION_CODES.LOLLIPOP) // public void setUpMediaProjection() { // mMediaProjection = mMediaProjectionManager.getMediaProjection(mResultCode, mResultData); // Log.i(TAG, "mMediaProjection defined"); // } // // @TargetApi(Build.VERSION_CODES.LOLLIPOP) // private void virtualDisplay() { // mVirtualDisplay = mMediaProjection.createVirtualDisplay("screen-mirror", // windowWidth, windowHeight, mScreenDensity, DisplayManager.VIRTUAL_DISPLAY_FLAG_AUTO_MIRROR, // mImageReader.getSurface(), null, null); // Log.i(TAG, "virtual displayed"); // } // // @TargetApi(Build.VERSION_CODES.LOLLIPOP) // private void startCapture() { // strDate = dateFormat.format(new java.util.Date()); // nameImage = pathImage + strDate + ".png"; // // Image image = mImageReader.acquireLatestImage(); // int width = image.getWidth(); // int height = image.getHeight(); // final Image.Plane[] planes = image.getPlanes(); // final ByteBuffer buffer = planes[0].getBuffer(); // int pixelStride = planes[0].getPixelStride(); // int rowStride = planes[0].getRowStride(); // int rowPadding = rowStride - pixelStride * width; // Bitmap bitmap = Bitmap.createBitmap(width + rowPadding / pixelStride, height, Bitmap.Config.ARGB_8888); // bitmap.copyPixelsFromBuffer(buffer); // bitmap = Bitmap.createBitmap(bitmap, 0, 0, width, height); // image.close(); // Log.i(TAG, "image data captured"); // // if (bitmap != null) { // try { // File fileImage = new File(nameImage); // if (!fileImage.exists()) { // fileImage.createNewFile(); // Log.i(TAG, "image file created"); // } // FileOutputStream out = new FileOutputStream(fileImage); // if (out != null) { // bitmap.compress(Bitmap.CompressFormat.PNG, 100, out); // out.flush(); // out.close(); // Intent media = new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE); // Uri contentUri = Uri.fromFile(fileImage); // media.setData(contentUri); // this.sendBroadcast(media); // Log.i(TAG, "screen image saved"); // } // } catch (FileNotFoundException e) { // e.printStackTrace(); // } catch (IOException e) { // e.printStackTrace(); // } // } // } // // @TargetApi(Build.VERSION_CODES.LOLLIPOP) // private void tearDownMediaProjection() { // if (mMediaProjection != null) { // mMediaProjection.stop(); // mMediaProjection = null; // } // Log.i(TAG, "mMediaProjection undefined"); // } //}