В Android вы можете использовать следующие методы для захвата скриншотов:
- Использование API MediaProjection (требуется уровень API 21 и выше):
private void takeScreenshot() { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { MediaProjectionManager mediaProjectionManager = (MediaProjectionManager) getSystemService(Context.MEDIA_PROJECTION_SERVICE); Intent intent = mediaProjectionManager.createScreenCaptureIntent(); startActivityForResult(intent, REQUEST_MEDIA_PROJECTION); } else { // 不支持 } }
В
onActivityResult
методе получитеMediaProjection
объект и начните делать скриншоты:@Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); if (requestCode == REQUEST_MEDIA_PROJECTION && resultCode == RESULT_OK) { MediaProjection mediaProjection = mediaProjectionManager.getMediaProjection(resultCode, data); if (mediaProjection != null) { // 创建VirtualDisplay并开始截屏 VirtualDisplay virtualDisplay = mediaProjection.createVirtualDisplay( "ScreenCapture", screenWidth, screenHeight, screenDensity, DisplayManager.VIRTUAL_DISPLAY_FLAG_AUTO_MIRROR, imageReader.getSurface(), null, null ); // 获取截屏结果 Image image = imageReader.acquireLatestImage(); if (image != null) { // 处理截屏结果 // ... image.close(); } } } }
- Используйте SurfaceView для создания скриншотов:
private void takeScreenshot() { Bitmap bitmap = Bitmap.createBitmap(surfaceView.getWidth(), surfaceView.getHeight(), Bitmap.Config.ARGB_8888); Canvas canvas = new Canvas(bitmap); surfaceView.draw(canvas); // 保存或分享截图 // ... }
- Используйте
draw
метод View, чтобы сделать снимок экрана:private void takeScreenshot() { View view = getWindow().getDecorView().getRootView(); view.setDrawingCacheEnabled(true); Bitmap bitmap = Bitmap.createBitmap(view.getDrawingCache()); view.setDrawingCacheEnabled(false); // 保存或分享截图 // ... }
Обратите внимание, что вам необходимо запрашивать соответствующие разрешения при создании снимков экрана и освобождать соответствующие ресурсы в нужное время, чтобы избежать утечек памяти.