2012-07-19 12 views
8

में सी-कोड को स्ट्रिंग पास करना कार्यक्रम को एसडी कार्ड से एक छवि लेनी चाहिए और इसकी चमक समायोजित करना चाहिए। और छवि एसडी कार्ड से एनडीके सी-कोड के माध्यम से ली जाती है। यह ध्यान दिया जाना चाहिए कि छवि के पथ को चित्रित करने वाली स्ट्रिंग जेएनआई के माध्यम से एनडीके को पास की जाती है।एंड्रॉइड एनडीके

जावा कोड:

private void adjustBrightness() { 
    imagePath  = (Environment.getExternalStorageDirectory().getPath()+"earthglobe.jpeg").toCharArray(); 
    brightness(imagePath, brightness); 
} 

public native void brightness(char[] imagePath, float brightness); 

NDK कोड:

JNIEXPORT void JNICALL Java_com_example_ImageActivity_brightness(JNIEnv * env,char[] bitmappath, jfloat brightnessValue) 
{ 
    string bmpath = bitmappath+'\0'; 
    jobject obj = fopen(bitmappath , "rb"); 
} 
+0

यह ऊटपटांग है: '' jobject obj = fopen (bitmappath, "rb"); '' –

उत्तर

19

आप चार [] इस तरह से पारित नहीं कर सकते हैं।

जावा में उपयोग करें:

public static native void brightness(String imagePath, float brightness); 

देशी उपयोग में:

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); 
} 
+0

धन्यवाद, मैं चाहता हूँ जॉबटेप के रूप में बिटमैप और फ़ाइल नहीं, क्योंकि जॉबजेक्ट से पिक्सेल को पुनर्प्राप्त करने के लिए पहले से ही एक फ़ंक्शन है ... क्या कोई तरीका है कि मैं ऐसा कर सकता हूं? –

+0

आसपास पिक्सल पास करने के लिए java.nio.ByteBuffer का उपयोग करें। –

+0

मुझे लगता है कि आपको मुझे गलत मिला .... या तो मैं बीएमपी को जॉब्जेक्ट (एनडीके में) के रूप में पुनर्प्राप्त करना चाहता हूं या मुझे एनडीके में फ़ाइल से पिक्सेल प्राप्त करने की विधि प्राप्त करने की आवश्यकता है। –

संबंधित मुद्दे