android ndk bitmap,android中使用ndk的一点问题记录

使用网上的通用教程弄好ndk后,jni folder下的cpp文件中包括的头文件找不到 unresolved inclusion

解决方案是在项目的properties->C/C++ General->Path and Symbols->include中添加自己的java库路径,我的是C:\Program Files\Java\jdk1.8.0_20\include

在编译jni的cpp文件时出现:

jni/NDKtest.cpp:21: error: undefined reference to 'AndroidBitmap_getInfo'

jni/NDKtest.cpp:22: error: undefined reference to '__android_log_print'

jni/NDKtest.cpp:26: error: undefined reference to '__android_log_print'

jni/NDKtest.cpp:29: error: undefined reference to 'AndroidBitmap_lockPixels'

jni/NDKtest.cpp:30: error: undefined reference to '__android_log_print'

jni/NDKtest.cpp:39: error: undefined reference to 'AndroidBitmap_unlockPixels'

collect2.exe: error: ld returned 1 exit status

make.exe: *** [obj/local/armeabi/libNDKtest.so] Error 1

解决方法:在Android.mk文件中加

LOCAL_LDLIBS    := -ljnigraphics -llog

完了记得clean

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
使用 Android NDK Camera 开发时,可以通过调用 Camera.Parameters 的 setExposureCompensation(int) 方法来关闭曝光控制。具体实现代码如下: ``` #include <android/native_window_jni.h> #include <android/native_window.h> #include <android/log.h> #include <android/bitmap.h> #include <jni.h> #include <stdlib.h> #include <stdio.h> #include <string.h> #include <time.h> #include <math.h> #include <pthread.h> #include <unistd.h> #include <fcntl.h> #include <sys/mman.h> #include <sys/ioctl.h> #include <linux/videodev2.h> #define LOG_TAG "NDKCamera" #define LOGD(...) __android_log_print(ANDROID_LOG_DEBUG, LOG_TAG, __VA_ARGS__) extern "C" { JNIEXPORT void JNICALL Java_com_example_ndkcamera_CameraActivity_setExposureCompensation(JNIEnv* env, jobject obj, jint value); }; void Java_com_example_ndkcamera_CameraActivity_setExposureCompensation(JNIEnv* env, jobject obj, jint value) { jclass cameraClass = env->FindClass("android/hardware/Camera"); jmethodID openMethodID = env->GetStaticMethodID(cameraClass, "open", "(I)Landroid/hardware/Camera;"); jobject cameraObject = env->CallStaticObjectMethod(cameraClass, openMethodID, 0); jmethodID getParametersMethodID = env->GetMethodID(cameraClass, "getParameters", "()Landroid/hardware/Camera$Parameters;"); jobject parametersObject = env->CallObjectMethod(cameraObject, getParametersMethodID); jclass parametersClass = env->FindClass("android/hardware/Camera$Parameters"); jmethodID setExposureCompensationMethodID = env->GetMethodID(parametersClass, "setExposureCompensation", "(I)V"); env->CallVoidMethod(parametersObject, setExposureCompensationMethodID, value); jmethodID setParametersMethodID = env->GetMethodID(cameraClass, "setParameters", "(Landroid/hardware/Camera$Parameters;)V"); env->CallVoidMethod(cameraObject, setParametersMethodID, parametersObject); } ``` 以上代码,我们通过调用 setExposureCompensation(int) 方法,将曝光补偿值设置为 0,来关闭曝光控制。具体实现,我们使用了 JNI(Java Native Interface)来将 Java 代码与 C++ 代码连接起来。 在 Java 代码,我们可以像下面这样调用 C++ 函数来关闭曝光控制: ``` setExposureCompensation(0); ``` 注意,这里的参数值为 0,表示关闭曝光控制。如果需要开启曝光控制,可以将参数值设置为一个正整数,表示曝光补偿值。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值