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

打日志

// 需要包含的头文件
#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
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值