Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/207.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.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 如何在我的应用程序上使用ScreenCap.cpp?_Android_Screen Capture_Surfaceflinger - Fatal编程技术网

Android 如何在我的应用程序上使用ScreenCap.cpp?

Android 如何在我的应用程序上使用ScreenCap.cpp?,android,screen-capture,surfaceflinger,Android,Screen Capture,Surfaceflinger,Android平台有一个用于拍摄Android屏幕截图的实用程序类。我将“”复制到JNI文件夹中,然后通过NDK生成,但失败。NDK编译器未找到所需的库: #include <binder/IMemory.h> #include <gui/SurfaceComposerClient.h> #include <SkImageEncoder.h> #include <SkBitmap.h> #include <SkData.h> #inc

Android平台有一个用于拍摄Android屏幕截图的实用程序类。我将“”复制到JNI文件夹中,然后通过NDK生成,但失败。NDK编译器未找到所需的库:

#include <binder/IMemory.h>
#include <gui/SurfaceComposerClient.h>

#include <SkImageEncoder.h>
#include <SkBitmap.h>
#include <SkData.h>
#include <SkStream.h>
编译终止

请告诉我如何解决这个问题

顺便问一下,是否有任何解决方案以编程方式捕获整个android屏幕?我需要每秒至少捕捉10次


谢谢。

您忘了将SkImageEncoder.h包含在本地的C\u包含中。将这一行添加到您的Android.mk文件中

LOCAL_C_INCLUDES := PATH_TO_SKImageEncoder_HEADER

这个问题很老了,但我会尽力帮忙以防万一

问题是SkImageEncoder.h不是NDK的一部分,而是来自系统的libskia库(NDK中不可用),因此应该与整个系统的构建过程一起构建

如果您希望此应用程序在单个设备(例如您的个人设备)中运行,您应该能够通过修改您的Android.mk文件来创建工作二进制文件:

include $(CLEAR_VARS)
LOCAL_MODULE := system_libskia
LOCAL_SRC_FILES := PATH_TO_LIBSKIA/libskia.so
include $(PREBUILT_SHARED_LIBRARY)

include $(CLEAR_VARS)

LOCAL_C_INCLUDES := PATH_TO_SKIA_INCLUDE_FOLDER

LOCAL_SHARED_LIBRARIES := system_libskia
您可以使用running获得设备的libskia.so:

adb pull /system/lib/libskia.so
另一个可能但难看的解决方法是通过dlopen加载libskia.so,然后从中读取所有需要的符号。只要符号的签名保持不变,这将适用于任何设备


希望这有帮助。

试试这个解决方案?您好,Aswin,该解决方案有助于捕获我自己应用程序的屏幕截图。这里我需要的是当我的应用程序在后台运行时,拍摄整个android屏幕的屏幕截图。不,看到接受的答案-使用CM二进制?我做到了。但还是失败了。有没有关于如何在JNI上构建自定义本机库的教程?发布错误,我将尝试进一步帮助您。我通过谷歌搜索和他们在NDK软件包中提供的样品了解了很多NDK的东西。是的,这是一个很大的头痛当你第一次学习它hahaI分享JNI文件夹在我的dropbox在。我有必要的图书馆,但我不能建立它。请看一看。
adb pull /system/lib/libskia.so