Android 截屏代码几种方法
请注意,在进行截屏操作时需要申请相关的权限,并在合适的时机释放相关资源,避免内存泄漏。
·
在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对象并开始截屏:@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); // 保存或分享截图 // ... }请注意,在进行截屏操作时需要申请相关的权限,并在合适的时机释放相关资源,避免内存泄漏。
魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐



所有评论(0)