GAMES PC DOWNLOAD FREE FULL

GAME

[Adroid NDK] Passing String JINI

 



1
2
3
4
5
6
7
8
9
JNIEXPORT void JNICALLJava_MyJavaClass_printName(JNIEnv *env, jobject obj,
 jstring name)
{
 const char *str= (*env)->GetStringUTFChars(env,name,0);
 printf(%s”, str);
 //need to release this string when done with it in
 //order to avoid memory leak
 (*env)->ReleaseStringUTFChars(env, name, str);
}
To convert a C-style string to a jstring , you can use the (*env)->NewStringUTF() function to create a new jstring from a C-style string. For example, a C function that needs to return a Java string could contain the following code:
1
2
3
4
JNIEXPORT jstring JNICALLJava_MyJavaClass_getName(JNIEnv *env, jobject obj)
{
 return (*env)->NewStringUTF(env, “My String”);
}
JNI String functions:
JNI Function
Description
GetStringChars
ReleaseStringChars
Obtains or releases a pointer to the contents of a string in Unicode format. May return a copy of the string.
GetStringUTFChars
ReleaseStringUTFChars
Obtains or releases a pointer to the contents of a string in UTF-8 format.
GetStringLength
Returns the number of Unicode characters in the string.
GetStringUTFLength
Returns the number of bytes needed to represent a string in the UTF-8 format.
NewString
Creates a java.lang.String instance that contains the same sequence of characters as the given Unicode C string.
NewStringUTF
Creates a java.lang.String instance that contains the same sequence of characters as the given UTF-8 encoded C string.
GetStringCritical
ReleaseStringCritical
Obtains a pointer to the contents of a string in Unicode format. May return a copy of the string. Native code must not block between a pair of Get/ReleaseStringCritical calls.
GetStringRegion
SetStringRegion
Copies the contents of a string to or from a preallocated C buffer in the Unicode format.
GetStringUTFRegion
SetStringUTFRegion
Copies the content of a string to or from a preallocated C buffer in the UTF-8 format.
JNI String Example:
Let’s write a JNI application that passes a prompt message to a native method, which method prints the prompt message, reads the user input and sends it back to the application.
The Java code will be(NativePrompt.java):
1
2
3
4
5
6
7
8
9
10
11
12
13
14
class NativePrompt {
 private native String getInput(String prompt);  //native method
 static   //static initializer code
 {
  System.loadLibrary("NativePrompt");
 }

 public static void main(String[] args)
 {
  NativePrompt NP = new NativePrompt();
  String sName = NP.getInput("Enter your name: ");
        System.out.println("Hello " + sName);
 }
}
Compile NativePrompt.java (javac NativePrompt.java) and generate hedder file(javah -jni NativePrompt).
The generated with javah header file NativePrompt.h will be:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
/* DO NOT EDIT THIS FILE - it is machine generated */
#include "jni.h"
/* Header for class NativePrompt */

#ifndef _Included_NativePrompt
#define _Included_NativePrompt
#ifdef __cplusplus
extern "C" {
#endif
/*
 * Class:     NativePrompt
 * Method:    getInput
 * Signature: (Ljava/lang/String;)Ljava/lang/String;
 */
JNIEXPORT jstring JNICALL Java_NativePrompt_getInput
  (JNIEnv *, jobject, jstring);

#ifdef __cplusplus
}
#endif
#endif
The C++ implementation file NativePrompt.cpp will be:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
#include "NativePrompt.h"
#include "jni.h"
#include "string"
#include "iostream"
#include "vector"

using namespace std;
/*
 * Class:     NativePrompt
 * Method:    getInput
 * Signature: (Ljava/lang/String;)Ljava/lang/String;
 */
JNIEXPORT jstring JNICALL Java_NativePrompt_getInput
 (JNIEnv *env, jobject obj, jstring prompt){

 string sEntry;
 const char *str;
 str = env->GetStringUTFChars(prompt, NULL);
 if (str == NULL) {
  return env->NewStringUTF("");
 }
 else{
 cout << str;
  //Frees native string resources
  env->ReleaseStringUTFChars(prompt, str);

  //reads n-consecutive words from the
  //keyboard and store them in string
  getline(cin, sEntry);

        return env->NewStringUTF(sEntry.c_str());
 }
}
     
[Adroid NDK] Passing String JINI 4.5 5 Thanh Nguyen 1 2 3 4 5 6 7 8 9 JNIEXPORT void JNICALLJava_MyJavaClass_printName ( JNIEnv * env , jobject obj ,  jstring name ) {   const c...


No comments:

Post a Comment

NEW GAME

Powered by Blogger.

Labels

Quotes

1. Những cô gái giống như những tên miền Internet, những tên đẹp mà ta thích đã có chủ nhân rồi!


Popular Posts