Sre*_*hat 9 c string java-native-interface android android-ndk
程序应从SD卡中取出图像并调整其亮度.并且图像是通过NDK C代码从SD卡中获取的.应注意,描绘图像路径的字符串通过JNI传递给NDK.
Java代码:
private void adjustBrightness() {
imagePath = (Environment.getExternalStorageDirectory().getPath()+"earthglobe.jpeg").toCharArray();
brightness(imagePath, brightness);
}
public native void brightness(char[] imagePath, float brightness);
Run Code Online (Sandbox Code Playgroud)
NDK代码:
JNIEXPORT void JNICALL Java_com_example_ImageActivity_brightness(JNIEnv * env,char[] bitmappath, jfloat brightnessValue)
{
string bmpath = bitmappath+'\0';
jobject obj = fopen( bitmappath , "rb" );
}
Run Code Online (Sandbox Code Playgroud)
Ser*_* K. 21
你不能这样传递char [].
在Java中使用:
public static native void brightness(String imagePath, float brightness);
Run Code Online (Sandbox Code Playgroud)
在本机使用:
std::string ConvertJString(JNIEnv* env, jstring str)
{
if ( !str ) LString();
const jsize len = env->GetStringUTFLength(str);
const char* strChars = env->GetStringUTFChars(str, (jboolean *)0);
std::string Result(strChars, len);
env->ReleaseStringUTFChars(str, strChars);
return Result;
}
JNIEXPORT void JNICALL Java_com_example_ImageActivity_brightness(JNIEnv * env, jobject obj, jstring bitmappath, jfloat brightnessValue)
{
std::string bmpath = ConvertJString( env, bitmappath );
FILE* f = fopen( bmpath.c_str(), "rb" );
// do something useful here
fclose( f );
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
9416 次 |
| 最近记录: |