Android 如何在我的应用程序上使用ScreenCap.cpp?
Android平台有一个用于拍摄Android屏幕截图的实用程序类。我将“”复制到JNI文件夹中,然后通过NDK生成,但失败。NDK编译器未找到所需的库: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
#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