MainActivity代码
package com.example.banbeichas.mediaprojectionmanagerdemo;
import android.content.Context;
import android.content.Intent;
import android.graphics.Point;
import android.hardware.display.VirtualDisplay;
import android.media.MediaRecorder;
import android.media.projection.MediaProjection;
import android.media.projection.MediaProjectionManager;
import android.os.Build;
import android.os.Environment;
import android.support.annotation.RequiresApi;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.DisplayMetrics;
import android.util.Log;
import android.view.View;
import android.view.WindowManager;
import android.widget.Button;
import java.io.File;
public class MainActivity extends AppCompatActivity implements View.OnClickListener {
Button btn_start;
private static final String TAG = "MainActivity";
private static final int STORAGE_REQUEST_CODE = 101;
private static final int RECORD_REQUEST_CODE = 201;
private MediaProjection mMediaProjection;
private MediaRecorder mMediaRecorder;
private VirtualDisplay mVirtualDisplay;
private MediaRecordService mediaRecord;
private MediaProjectionManager mProjectionManager;
private WindowManager mWindowManager;
private int mWindowWidth;
private int mWindowHeight;
private int mScreenDensity;
@RequiresApi(api = Build.VERSION_CODES.LOLLIPOP)
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
btn_start = findViewById(R.id.btn_start);
btn_start.setOnClickListener(this);
mProjectionManager = (MediaProjectionManager) getSystemService(MEDIA_PROJECTION_SERVICE);
mWindowManager = (WindowManager) getSystemService(Context.WINDOW_SERVICE);
Point point=new Point();
mWindowManager.getDefaultDisplay().getSize(point);
mWindowWidth =point.x;
mWindowHeight = point.y;
DisplayMetrics displayMetrics = new DisplayMetrics();
mWindowManager.getDefaultDisplay().getMetrics(displayMetrics);
mScreenDensity = displayMetrics.densityDpi;
screenRecording();
}
@RequiresApi(api = Build.VERSION_CODES.LOLLIPOP)
private void screenRecording() {
Intent captureIntent = mProjectionManager.createScreenCaptureIntent();
startActivityForResult(captureIntent, RECOR