在Android中,可以使用以下几种方法来实现截屏:
- 使用MediaProjection API(需要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
对象并开始截屏:文章来源:https://www.toymoban.com/news/detail-724430.html@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); // 保存或分享截图 // ... }
- 使用View的
draw
方法进行截屏:private void takeScreenshot() { View view = getWindow().getDecorView().getRootView(); view.setDrawingCacheEnabled(true); Bitmap bitmap = Bitmap.createBitmap(view.getDrawingCache()); view.setDrawingCacheEnabled(false); // 保存或分享截图 // ... }
请注意,在进行截屏操作时需要申请相关的权限,并在合适的时机释放相关资源,避免内存泄漏。文章来源地址https://www.toymoban.com/news/detail-724430.html
到了这里,关于Android 截屏代码几种方法的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!