Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/196.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Android中,当摄像头在曲面视图上实时显示时,以编程方式进行屏幕截图_Android_Android Camera_Screenshot_Surfaceview - Fatal编程技术网

在Android中,当摄像头在曲面视图上实时显示时,以编程方式进行屏幕截图

在Android中,当摄像头在曲面视图上实时显示时,以编程方式进行屏幕截图,android,android-camera,screenshot,surfaceview,Android,Android Camera,Screenshot,Surfaceview,我想在android上以编程方式拍摄屏幕截图,当摄像机在surface view上直播时,我也在over surface view上扩展了多个布局,但当我试图以编程方式拍摄屏幕截图时,屏幕截图已经被拍摄,但问题是停留在那里一个是屏幕截图是黑色视图,这意味着我的图片是实时的surface view,而不是屏幕截图中显示的图片。您是否尝试过类似的方法: Process sh = Runtime.getRuntime().exec("su", null,null); OutputStream os

我想在android上以编程方式拍摄屏幕截图,当摄像机在surface view上直播时,我也在over surface view上扩展了多个布局,但当我试图以编程方式拍摄屏幕截图时,屏幕截图已经被拍摄,但问题是停留在那里一个是屏幕截图是黑色视图,这意味着我的图片是实时的surface view,而不是屏幕截图中显示的图片。

您是否尝试过类似的方法:

Process sh = Runtime.getRuntime().exec("su", null,null);
OutputStream  os = sh.getOutputStream();
os.write(("/system/bin/screencap -p " + "/sdcard/img.png").getBytes("ASCII"));
os.flush();
当然,这只有在您的设备是根目录的情况下才有效


阅读此文:

你能正确地框定你的问题吗?是的,实际上我想在摄像机在“曲面视图”上进行实时拍摄时,通过编程进行截图。我使用前摄像头拍摄照片,屏幕截图不是出于摄像头的目的。好吧,您无法通过任何非根机制捕获
SurfaceView
内容。根本问题是,如果您将SurfaceView的曲面交给摄像头进行预览,则来自摄像头的帧在应用过程中永远不会出现。它们直接从摄像头(mediaserver)到系统合成器(surfaceflinger)。如果捕获到SurfaceTexture并使用GLES将其渲染到SurfaceView上,则可以使用
glReadPixels()
获取像素。此操作的可能副本仅适用于根手机。。。我需要在我的项目中有这样的东西,所以我做了一个截图服务。我想我在这里找到了这个:。另外,我认为你不能拍摄一个表面的截图。先生,这不起作用,因为我的设备没有路由。好的,我在帖子底部提到过。你想拍一张SurfaceView的截图?如果是这样的话,请阅读以下内容