編輯:關於Android編程
#include <stdlib.h> #include <string.h> #include <jni.h> //jstring to char* static char* jstringToChar(JNIEnv* env, jstring jstr) { char* rtn = NULL; jclass clsstring = (*env)->FindClass(env, "java/lang/String"); jstring strencode = (*env)->NewStringUTF(env, "utf-8"); jmethodID mid = (*env)->GetMethodID(env, clsstring, "getBytes", "(Ljava/lang/String;)[B"); jbyteArray barr= (jbyteArray)(*env)->CallObjectMethod(env, jstr, mid, strencode); jsize alen = (*env)->GetArrayLength(env, barr); jbyte* ba = (*env)->GetByteArrayElements(env, barr, JNI_FALSE); if (alen > 0) { rtn = (char*)malloc(alen + 1); memcpy(rtn, ba, alen); rtn[alen] = 0; } (*env)->ReleaseByteArrayElements(env, barr, ba, 0); return rtn; }
返回值 需要 調用 free 函數釋放內存。 //char* to jstring static jstring charToJstring(JNIEnv* env, const char* pat) { jclass strClass = (*env)->FindClass(env, "java/lang/String"); jmethodID ctorID = (*env)->GetMethodID(env, strClass, "<init>", "([BLjava/lang/String;)V"); jbyteArray bytes = (*env)->NewByteArray(env, strlen(pat)); (*env)->SetByteArrayRegion(env, bytes, 0, strlen(pat), (jbyte*)pat); jstring encoding = (*env)->NewStringUTF(env, "utf-8"); return (jstring)(*env)->NewObject(env, strClass, ctorID, bytes, encoding); } /* C++中使用 env->FindClass("java/lang/String") C中使用 (*env)->FindClass(env, "java/lang/String") */ C++中和C中稍微有點區別 C++中直接通過 env->NewStringUTF("utf-8") 就可以調用函數, 而C中為(*env)->NewStringUTF(env, "utf-8") 方式。
在Android開發中SQLite起著很重要的作用,網上SQLite的教程有很多很多,不過那些教程大多數都講得不是很全面。本人總結了一些SQLite命令,借著論壇的大賽,
這篇我們來介紹一下享元模式(Flyweight Pattern),Flyweight 代表輕量級的意思,享元模式是對象池的一種實現。享元模式用來盡可能減少內存使用量,它適
首先給出跑馬燈效果圖 中間的色塊是因為視頻轉成GIF造成的失真,自動忽略哈。大家知道,橫向的跑馬燈android自帶的TextView就可以實現,詳情請百度【A
江蘇省高中階段學業水平測試的地理試卷上的出現了一道“神題”——微信登錄頁面的圖地理知識~ 微信登錄圖是這個