@Override @TargetApi(21) protected void onActivityResult(int requestCode, int resultCode, Intent data) { if (requestCode == REQUEST_CODE && resultCode == Activity.RESULT_OK) { String uri = data.toUri(0); MediaProjectionManager projectionManager = (MediaProjectionManager) getSystemService(Activity.MEDIA_PROJECTION_SERVICE); MediaProjection mediaProjection = projectionManager.getMediaProjection(resultCode, data); ScreenCaptureService.setMediaProjection(mediaProjection); startService(new Intent(ScreenCaptureService.ACTION_START, null, this, ScreenCaptureService.class)); fab.setSelected(true); } if (requestCode == REQUEST_CODE_MAKE_SMING && resultCode == RESULT_OK) { loadSmings(); checkEmpty(); } }
@RequiresApi(api = Build.VERSION_CODES.KITKAT) private void createVirtualEnvironment() { dateFormat = new SimpleDateFormat("yyyy_MM_dd_hh_mm_ss"); strDate = dateFormat.format(new java.util.Date()); pathImage = Environment.getExternalStorageDirectory().getPath() + "/Pictures/"; nameImage = pathImage + strDate + ".png"; mMediaProjectionManager1 = (MediaProjectionManager) activity.getApplication().getSystemService(Context.MEDIA_PROJECTION_SERVICE); mWindowManager1 = (WindowManager) activity.getApplication().getSystemService(Context.WINDOW_SERVICE); windowWidth = ViewUtil.getScreenWidth(activity); windowHeight = ViewUtil.getSceenHeight(activity); metrics = new DisplayMetrics(); mWindowManager1.getDefaultDisplay().getMetrics(metrics); mScreenDensity = metrics.densityDpi; mImageReader = ImageReader.newInstance(windowWidth, windowHeight, 0x1, 2); //ImageFormat.RGB_565 LogUtil.d(TAG, "prepared the virtual environment"); }
@Override public void onReceive(Context context, Intent intent) { if (intent.getAction().equalsIgnoreCase(ScreenCapture.ASSISTANT_ACTIVITY_CREATED_INTENT)) { ScreenCapture screenCapture = mSender; if (ScreenCapture.mScreenCaptureActivity != null) { ScreenCapture.ScreenCaptureAssistantActivity screenActivity = ScreenCapture.mScreenCaptureActivity; ScreenCapture.mScreenCaptureActivity.mScreenCapture = screenCapture; if (screenActivity.mScreenCapture.mMediaProjectManager == null) { screenActivity.mScreenCapture.mMediaProjectManager = (MediaProjectionManager) screenActivity.getSystemService(Context.MEDIA_PROJECTION_SERVICE); } screenActivity.startActivityForResult( screenActivity.mScreenCapture.mMediaProjectManager.createScreenCaptureIntent(), ScreenCapture.MEDIA_PROJECTION_REQUEST_CODE); } } }
@Override public synchronized void initialize(final SurfaceTextureHelper surfaceTextureHelper, final Context applicationContext, final VideoCapturer.CapturerObserver capturerObserver) { checkNotDisposed(); if (capturerObserver == null) { throw new RuntimeException("capturerObserver not set."); } this.capturerObserver = capturerObserver; if (surfaceTextureHelper == null) { throw new RuntimeException("surfaceTextureHelper not set."); } this.surfaceTextureHelper = surfaceTextureHelper; mediaProjectionManager = (MediaProjectionManager) applicationContext.getSystemService( Context.MEDIA_PROJECTION_SERVICE); }
@TargetApi(Build.VERSION_CODES.LOLLIPOP) @Override public void onActivityCreated(Bundle savedInstanceState) { super.onActivityCreated(savedInstanceState); Activity activity = getActivity(); DisplayMetrics metrics = new DisplayMetrics(); activity.getWindowManager().getDefaultDisplay().getMetrics(metrics); mDensity = metrics.densityDpi; mMediaProjectionManager = (MediaProjectionManager) activity.getSystemService(Context.MEDIA_PROJECTION_SERVICE); //run permissions startActivityForResult( mMediaProjectionManager.createScreenCaptureIntent(), REQUEST_MEDIA_PROJECTION); }
/****************************************** Activity Lifecycle methods ************************/ @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); // setContentView(R.layout.activity_screen_short); // call for the projection manager mProjectionManager = (MediaProjectionManager) getSystemService(Context.MEDIA_PROJECTION_SERVICE); startProjection(); // start capture handling thread new Thread() { @Override public void run() { Looper.prepare(); mHandler = new Handler(); Looper.loop(); } }.start(); }
@Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_blank); DisplayMetrics metrics = new DisplayMetrics(); getWindowManager().getDefaultDisplay().getMetrics(metrics); mScreenDensity = metrics.densityDpi; mMediaRecorder = new MediaRecorder(); initRecorder(); prepareRecorder(); mProjectionManager = (MediaProjectionManager) getSystemService (Context.MEDIA_PROJECTION_SERVICE); mToggleButton = (ToggleButton) findViewById(R.id.toggle); mToggleButton.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { onToggleScreenShare(v); } }); mMediaProjectionCallback = new MediaProjectionCallback(); }
public void requestMediaProjection() { boolean permanent = Utils.isMediaProjectionPermanent(this); boolean affectedVersion = Build.VERSION.RELEASE.equals("5.1") || Build.VERSION.RELEASE.equals("5.1.0"); if (affectedVersion && permanent && !getSharedPreferences(PREFERENCES_NAME, 0).getBoolean(SYSTEM_UI_CRASH_MESSAGE, false)) { getSharedPreferences(PREFERENCES_NAME, 0).edit().putBoolean(SYSTEM_UI_CRASH_MESSAGE, true).apply(); new SystemUICrashDialogFragment().show(getFragmentManager(), SystemUICrashDialogFragment.FRAGMENT_TAG); } else { if (affectedVersion && !permanent) { Toast.makeText(this, getString(R.string.system_ui_crash_warning_toast, getString(R.string.media_projection_remember_text)), Toast.LENGTH_SHORT).show(); } MediaProjectionManager mediaProjectionManager = (MediaProjectionManager) getSystemService(Context.MEDIA_PROJECTION_SERVICE); startActivityForResult(mediaProjectionManager.createScreenCaptureIntent(), PERMISSION_CODE); } }
@Override public boolean showDialog() { try { Activity currentActivity = getActivity(); final FragmentManager fm = ((FragmentActivity) currentActivity).getSupportFragmentManager(); if (!isAttachedToWindow() || (fm.findFragmentByTag(CONTROLLER_TAG) != null) || (fm.findFragmentByTag(CHOOSER_TAG) != null) ) { return false; } MediaRouter.RouteInfo route = getMediaRouter().getSelectedRoute(); if (route.isDefault() || !route.matchesSelector(mSelector)) { // route chooser Intent intent = ((MediaProjectionManager) currentActivity.getSystemService(Context.MEDIA_PROJECTION_SERVICE)).createScreenCaptureIntent(); currentActivity.startActivityForResult(intent, CastScreenActivity.SCREEN_CAPTURE_REQUEST); return true; } else { // route controller return super.showDialog(); } } catch (NoSuchFieldException | IllegalAccessException | NoSuchMethodException | InvocationTargetException e) { Log.e(TAG, "MediaRouteButton implementation changed - " + CastScreenActivity.PLEASE_REPORT_BUG); } return false; }
public ProjectionManager(Context context, DisplayMetrics metrics, int permissionsResultCode, Intent permissionsData, final MediaRouter router) { mDensity = metrics.densityDpi; mProjection = ((MediaProjectionManager) context.getSystemService(Context.MEDIA_PROJECTION_SERVICE)) .getMediaProjection(permissionsResultCode, permissionsData); if (mProjection == null) { throw new IllegalStateException("Null media projection manager - " + CastScreenActivity.PLEASE_REPORT_BUG); } // When the MediaProjection is stopped, deselect the active route to ensure casting stops mProjection.registerCallback(new MediaProjection.Callback() { @Override public void onStop() { router.selectRoute(router.getDefaultRoute()); } }, null); }
@TargetApi(Build.VERSION_CODES.M) @Override /** * Called when another activity has sent a result to this activity. For example when this activity starts the * activity which calls for the projectionmanager, which tells this class if the screen capture has been enabled. */ protected void onActivityResult(int requestCode, int resultCode, Intent data) { if (requestCode == OVERLAY_PERMISSION_REQ_CODE) { updateLaunchButtonText(false); } else if (requestCode == SCREEN_CAPTURE_REQ_CODE) { if (resultCode == RESULT_OK) { MediaProjectionManager projectionManager = (MediaProjectionManager) getSystemService( Context.MEDIA_PROJECTION_SERVICE); MediaProjection mProjection = projectionManager.getMediaProjection(resultCode, data); screen = ScreenGrabber.init(mProjection, rawDisplayMetrics); startPokeFly(); } else { updateLaunchButtonText(false); } } }
@Override public int onStartCommand(Intent intent, int flags, int startId){ Log.d(TAG, "onStartCommand"); mHandler = new MainServiceHandler(this); mIntent = (Intent) intent.getExtras().get(EXTRA_RESULT_INTENT); mResultCode = intent.getExtras().getInt(EXTRA_RESULT_CODE); mMediaProjectionManager = (MediaProjectionManager) getSystemService(MEDIA_PROJECTION_SERVICE); if (mCaptureWindow == null){ mCaptureWindow = new CaptureWindow(this); } else { mCaptureWindow.reInit(); } return START_NOT_STICKY; }
@CalledByNative public boolean allocate(int width, int height) { mWidth = width; mHeight = height; mMediaProjectionManager = (MediaProjectionManager) ContextUtils.getApplicationContext().getSystemService( Context.MEDIA_PROJECTION_SERVICE); if (mMediaProjectionManager == null) { Log.e(TAG, "mMediaProjectionManager is null"); return false; } WindowManager windowManager = (WindowManager) ContextUtils.getApplicationContext().getSystemService( Context.WINDOW_SERVICE); mDisplay = windowManager.getDefaultDisplay(); DisplayMetrics metrics = new DisplayMetrics(); mDisplay.getMetrics(metrics); mScreenDensity = metrics.densityDpi; return true; }
@Override public void onActivityCreated(Bundle savedInstanceState) { super.onActivityCreated(savedInstanceState); if (DEBUG) Log.d(TAG, "ScreenCaptureFragment.onActivityCreated enabled=" + enabled + ", mVirtualDisplay=" + mVirtualDisplay); Activity activity = getActivity(); DisplayMetrics mDisplayMetrics = new DisplayMetrics(); activity.getWindowManager().getDefaultDisplay().getMetrics(mDisplayMetrics); mScreenDensity = mDisplayMetrics.densityDpi; mScreenWidth = mDisplayMetrics.widthPixels; mScreenHeight = mDisplayMetrics.heightPixels; if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { mMediaProjectionManager = (MediaProjectionManager) activity.getSystemService(Context.MEDIA_PROJECTION_SERVICE); } else { ; // TODO } mMediaRecorder = new MediaRecorder(); if (enabled && mVirtualDisplay == null) { go(); } }
@Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.media_projection); DisplayMetrics metrics = new DisplayMetrics(); getWindowManager().getDefaultDisplay().getMetrics(metrics); mScreenDensity = metrics.densityDpi; mSurfaceView = (SurfaceView) findViewById(R.id.surface); mSurface = mSurfaceView.getHolder().getSurface(); mProjectionManager = (MediaProjectionManager) getSystemService(Context.MEDIA_PROJECTION_SERVICE); ArrayAdapter<Resolution> arrayAdapter = new ArrayAdapter<Resolution>( this, android.R.layout.simple_list_item_1, RESOLUTIONS); Spinner s = (Spinner) findViewById(R.id.spinner); s.setAdapter(arrayAdapter); s.setOnItemSelectedListener(new ResolutionSelector()); s.setSelection(0); }
@Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); String ip = mReceiverIpEditText.getText().toString(); final SharedPreferences sharedPreferences = getSharedPreferences(PREF_NAME, 0); final SharedPreferences.Editor edit = sharedPreferences.edit(); edit.putString(RECEIVER_IP_KEY,ip); edit.commit(); if(resultCode == RESULT_OK && requestCode==GET_MEDIA_PROJECTION_CODE){ try { @SuppressWarnings("ResourceType") MediaProjectionManager mediaProjectionManager = (MediaProjectionManager) getSystemService(Context.MEDIA_PROJECTION_SERVICE); final MediaProjection mediaProjection = mediaProjectionManager.getMediaProjection(resultCode, data); mEncoderAsyncTask = new EncoderAsyncTask(this, mediaProjection, mMediaCodecFactory); mEncoderAsyncTask.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR); mSenderAsyncTask = new SenderAsyncTask(ip); mSenderAsyncTask.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR); } catch (IOException e) { mStartButton.setEnabled(false); mStartButton.setText(getString(R.string.mediacodec_error)); e.printStackTrace(); } } }
RecordingSession(Context context, Listener listener, int resultCode, Intent data, Analytics analytics, Provider<Boolean> showCountDown, Provider<Integer> videoSizePercentage) { this.context = context; this.listener = listener; this.resultCode = resultCode; this.data = data; this.analytics = analytics; this.showCountDown = showCountDown; this.videoSizePercentage = videoSizePercentage; File picturesDir = Environment.getExternalStoragePublicDirectory(DIRECTORY_MOVIES); outputRoot = new File(picturesDir, "Telecine"); notificationManager = (NotificationManager) context.getSystemService(NOTIFICATION_SERVICE); windowManager = (WindowManager) context.getSystemService(WINDOW_SERVICE); projectionManager = (MediaProjectionManager) context.getSystemService(MEDIA_PROJECTION_SERVICE); }
public ScreenCapturer(Context context, Intent data, int screenWidth, int screenHeight, int screenDensity, Handler handler) { mScreenWidth = screenWidth; mScreenHeight = screenHeight; mScreenDensity = screenDensity; mHandler = handler; MediaProjectionManager manager = (MediaProjectionManager) context.getSystemService(Context.MEDIA_PROJECTION_SERVICE); initVirtualDisplay(manager, data, screenWidth, screenHeight, screenDensity); mHandler = handler; startAcquireImageLoop(); }
private void initVirtualDisplay(MediaProjectionManager manager, Intent data, int screenWidth, int screenHeight, int screenDensity) { mImageReader = ImageReader.newInstance(screenWidth, screenHeight, PixelFormat.RGBA_8888, 1); mMediaProjection = manager.getMediaProjection(Activity.RESULT_OK, data); mVirtualDisplay = mMediaProjection.createVirtualDisplay("screen-mirror", screenWidth, screenHeight, screenDensity, DisplayManager.VIRTUAL_DISPLAY_FLAG_AUTO_MIRROR, mImageReader.getSurface(), null, null); }
public static void fireScreenCaptureIntent(Activity activity ) { MediaProjectionManager manager = (MediaProjectionManager) activity.getSystemService(MEDIA_PROJECTION_SERVICE); Intent intent = manager.createScreenCaptureIntent(); activity.startActivityForResult(intent, CREATE_SCREEN_CAPTURE); }
@RequiresApi(api = Build.VERSION_CODES.LOLLIPOP) private void init() { metrics = this.getResources().getDisplayMetrics(); width = 720; height = 1280; //printInfo(); manager = (MediaProjectionManager) getSystemService(MEDIA_PROJECTION_SERVICE); }
private void initScreenManager() { L.d("初始化录屏。。。"); if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { mMediaProjectionManager = (MediaProjectionManager) getSystemService(Context.MEDIA_PROJECTION_SERVICE); mMediaProjection = mMediaProjectionManager.getMediaProjection(Activity.RESULT_OK, mCapturePermissionIntent); } startDisplayManager(); new Thread(new EncoderWorker()).start(); }
@Override protected void onCreate(Bundle savedInstanceState) { // setTheme(android.R.style.Theme_Dialog);//这个在这里设置 之后导致 的问题是 背景很黑 super.onCreate(savedInstanceState); //如下代码 只是想 启动一个透明的Activity 而上一个activity又不被pause requestWindowFeature(Window.FEATURE_NO_TITLE); getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT)); getWindow().setDimAmount(0f); // requestScreenShot(); // PermissionsChecker pc = new PermissionsChecker(this); // if (pc.lacksPermissions("android.permission.CAPTURE_VIDEO_OUTPUT", // "android.permission.CAPTURE_SECURE_VIDEO_OUTPUT")) { // } else { MediaProjectionManager mediaProjectionManager = (MediaProjectionManager) getSystemService(Context.MEDIA_PROJECTION_SERVICE); if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { startActivityForResult( mediaProjectionManager.createScreenCaptureIntent(), REQUEST_MEDIA_PROJECTION); } // } }
private void initVirtualDisplay(MediaProjectionManager manager, Intent data, int screenWidth, int screenHeight, int screenDensity) { mImageReader = ImageReader.newInstance(screenWidth, screenHeight, PixelFormat.RGBA_8888, 2); mMediaProjection = manager.getMediaProjection(Activity.RESULT_OK, data); mVirtualDisplay = mMediaProjection.createVirtualDisplay("screen-mirror", screenWidth, screenHeight, screenDensity, DisplayManager.VIRTUAL_DISPLAY_FLAG_AUTO_MIRROR, mImageReader.getSurface(), null, null); }
private void createVirtualEnvironment() { windowWidth = ScreenHelper.getScreenWidth(this); windowHeight = ScreenHelper.getScreenHeight(this); mScreenDensity = ScreenHelper.getScreenDensity(this); mMediaProjectionManager1 = (MediaProjectionManager) getApplication().getSystemService(Context.MEDIA_PROJECTION_SERVICE); mNManager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE); }
public DisplayBase(Context context) { this.context = context; mediaProjectionManager = ((MediaProjectionManager) context.getSystemService(MEDIA_PROJECTION_SERVICE)); this.surfaceView = null; videoEncoder = new VideoEncoder(this); microphoneManager = new MicrophoneManager(this); audioEncoder = new AudioEncoder(this); streaming = false; }
@TargetApi(21) private void startScreenCapture() { MediaProjectionManager mediaProjectionManager = (MediaProjectionManager) getApplication().getSystemService( Context.MEDIA_PROJECTION_SERVICE); startActivityForResult( mediaProjectionManager.createScreenCaptureIntent(), CAPTURE_PERMISSION_REQUEST_CODE); }
private void requestScreenCapturePermission() { Log.d(TAG, "Requesting permission to capture screen"); MediaProjectionManager mediaProjectionManager = (MediaProjectionManager) getSystemService(Context.MEDIA_PROJECTION_SERVICE); // This initiates a prompt dialog for the user to confirm screen projection. startActivityForResult(mediaProjectionManager.createScreenCaptureIntent(), REQUEST_MEDIA_PROJECTION); }
public void requestScreenShot() { if (Build.VERSION.SDK_INT >= 21) { startActivityForResult( ((MediaProjectionManager) getSystemService("media_projection")).createScreenCaptureIntent(), REQUEST_MEDIA_PROJECTION ); } else { toast("版本过低,无法截屏"); } }
public void setProjectionData(Intent data) { MediaProjectionManager mediaProjectionManager = (MediaProjectionManager) context.getSystemService(Context.MEDIA_PROJECTION_SERVICE); mediaProjection = mediaProjectionManager.getMediaProjection(Activity.RESULT_OK, data); if (mediaProjection != null) { //disable callback as it doesn't work anyways //mediaProjection.registerCallback(mediaProjectionCallback, handler); if (getState() == RecordingProcessState.STARTING) { start(file, null); } else { setState(RecordingProcessState.READY, null); } } }
public void createScreenCaptureIntent() { LogUtil.LOGI("startActivityForResult"); MediaProjectionManager projectionManager = (MediaProjectionManager) getSystemService(Context.MEDIA_PROJECTION_SERVICE); Intent intent = projectionManager.createScreenCaptureIntent(); intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); startActivityForResult(intent, PERMISSION_CODE_MEDIA_PROJECTION); }
public void takeScreenshot() { MediaProjectionManager mediaProjectionManager = (MediaProjectionManager) getSystemService(Context.MEDIA_PROJECTION_SERVICE); startActivityForResult( mediaProjectionManager.createScreenCaptureIntent(), REQUEST_MEDIA_PROJECTION); }
@Override public void onCreate(Bundle savedInstanceState) { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) { requestWindowFeature(Window.FEATURE_ACTION_BAR_OVERLAY); } else { requestWindowFeature(Window.FEATURE_NO_TITLE); } super.onCreate(savedInstanceState); mContext = this; // System.out.println(R.layout.activity_screen_streaming); setContentView(R.layout.activity_screen_streaming); mRootView = findViewById(R.id.content); //mRootView.addOnLayoutChangeListener(this); DisplayMetrics metrics = new DisplayMetrics(); getWindowManager().getDefaultDisplay().getMetrics(metrics); mScreenDensity = metrics.densityDpi; mMediaRecorder = new MediaRecorder(); mProjectionManager = (MediaProjectionManager) getSystemService (Context.MEDIA_PROJECTION_SERVICE); mToggleButton = (ToggleButton) findViewById(R.id.toggle); mToggleButton.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { onToggleScreenShare(v); } }); }
public void prepareVideo(){ metrics = new DisplayMetrics(); view.getWindowManager().getDefaultDisplay().getMetrics(metrics); mScreenDensity = metrics.densityDpi; mMediaRecorder = new MediaRecorder(); mProjectionManager = (MediaProjectionManager) view.getSystemService (Context.MEDIA_PROJECTION_SERVICE); }
@TargetApi(Build.VERSION_CODES.LOLLIPOP) @Override public void onSessionCreate(Context context, SessionListener listener, Bundle bundle) { this.mContext = context; this.mListener = listener; mWindowManager = (WindowManager) mContext.getSystemService(WINDOW_SERVICE); mMediaProjectionManager = (MediaProjectionManager) mContext.getSystemService(MEDIA_PROJECTION_SERVICE); this.mResultCode = bundle.getInt(EXTRA_SCREEN_CAPTURE_INTENT_RESULT_CODE); this.mResultData = bundle.getParcelable(EXTRA_SCREEN_CAPTURE_INTENT_RESULT_DATA); this.mVideoQuality = bundle.getInt(EXTRA_LIVE_VIDEO_QUALITY); this.mTitle = bundle.getString(EXTRA_LIVE_EVENT_TITLE); this.mSynopsis = bundle.getString(EXTRA_LIVE_EVENT_SYNOPSIS); }