android个人笔记(二)——NDK开发常用工具

来源:互联网 发布:郭天祥十天单片机下载 编辑:程序博客网 时间:2024/06/08 02:47

打日志

// 需要包含的头文件#include <android/log.h> // .mk文件中需要导入的库// LOCAL_LDLIBS := -llog
#define LOG_TAG "libSVGm"#define LOGI(...) __android_log_print(ANDROID_LOG_INFO,LOG_TAG,__VA_ARGS__)#define LOGE(...) __android_log_print(ANDROID_LOG_ERROR,LOG_TAG,__VA_ARGS__)//打日志示例:LOGI("Enter initPlugIn(), nSize = %d", nSize);

Load动态库及获取接口

//需包含的头文件:#include <dlfcn.h>// 定义句柄void *fileHandle = NULL;// 定义接口函数指针示例NXCGSVGInterface* (*getSvgInterface)() = NULL;// Load动态库示例char *libPath = "/data/data/com.example.nxcgsvgparser/lib/libNXCGSVGParser.so";fileHandle = dlopen(libPath, RTLD_LAZY);if(fileHandle){    LOGI("Load Lib Success, %d", 0);    getSvgInterface = (NXCGSVGInterface* (*)())dlsym(fileSvgHandle, "NXCGSVG_GetInterface");    if(getSvgInterface)    {        LOGI("getSvgInterface success, %d", 0);    }}

JNI解析Bitmap对象

// 需要包含的头文件#include <android/bitmap.h>// .mk文件中需要导入的库LOCAL_LDLIBS += -ljnigraphics/**inBuffer为从java层以jobject类型传过来的Bitmap*/AndroidBitmapInfo infoImg; void* pixelsImg; int ret; //AndroidBitmap_getInfo(env, inBuffer, &infocolor); if((ret = AndroidBitmap_getInfo(env, img, &infoImg)) < 0) {  LOGE("AndroidBitmap_getInfo() failed ! error=%d", ret);  return; } LOGI("color image :: width is %d; height is %d; stride is %d; format is %d;flags is%d",   infoImg.width,infoImg.height,infoImg.stride,infoImg.format,infoImg.flags); if ((ret = AndroidBitmap_lockPixels(env, img, &pixelsImg)) < 0) {//【锁定AndroidBitmap_lockPixels】  //锁定之后,pixelscolor指向图片的首地址  LOGE("AndroidBitmap_lockPixels() failed ! error=%d", ret); } else {  LOGI("pixels have locked, %d", 0); } //TPOUTLINEFIGURE* pOutLine = ((CNXCGSVG*)cgSvg)->GenerateOutline(); //((CNXCGSVG*)cgSvg)->GenerateBuffer((DWORD*)pixelsImg, nWidth, nHeight);/**此处锁定之后可以对Bitmap的内存进行操作*/ LOGI("Have GenerateBuffer(), %d", 0); AndroidBitmap_unlockPixels(env, img);

生成JNI头文件

D:\workspace\testjni1\bin>javah -d header -classpath C:\android\android-sdk-windows\platforms\android-16\android.jar;classes -jni com.example.testjni1.MainActivity
0 0