std::shared_ptr<std::map<std::string, std::string> > PluginJniHelper::JSONObject2Map(jobject json)
{
	auto stdmap = std::make_shared<std::map<std::string, std::string> >();
	JNIEnv* env = getEnv();
	jclass c_json = env->FindClass("org/json/JSONObject");
	jclass c_iterator = env->FindClass("java/util/Iterator");
	jmethodID m_keys = env->GetMethodID(c_json, "keys", "()Ljava/util/Iterator;");
	jmethodID m_hasNext = env->GetMethodID(c_iterator, "hasNext", "()Z");
	jmethodID m_next = env->GetMethodID(c_iterator, "next", "()Ljava/lang/Object;");
	jmethodID m_getString = env->GetMethodID(c_json, "getString", "(Ljava/lang/String;)Ljava/lang/String;");
	jstring jKeyString = NULL;
	jstring jValueString = NULL;
	jobject jKeys = env->CallObjectMethod(json, m_keys);
	
	while(env->CallBooleanMethod(jKeys, m_hasNext))
	{
		jKeyString = (jstring)(env->CallObjectMethod(jKeys, m_next));
		jValueString = (jstring)(env-> CallObjectMethod(json, m_getString, jKeyString));

		stdmap->insert(std::make_pair(jstring2string(jKeyString), jstring2string(jValueString)));
	}

	env->DeleteLocalRef(jKeys);
	if(jKeyString)
		env->DeleteLocalRef(jKeyString);
	if(jValueString)
		env->DeleteLocalRef(jValueString);
	env->DeleteLocalRef(c_json);
	env->DeleteLocalRef(c_iterator);

	return stdmap;
}
예제 #2
0
const char *LoomJni::getPackageName()
{
    static utString packageName;

    if (packageName.size())
    {
        return packageName.c_str();
    }

    loomJniMethodInfo t;

    if (getStaticMethodInfo(t,
        "co/theengine/loomdemo/LoomDemo",
        "getActivityPackageName",
        "()Ljava/lang/String;"))
    {
        jstring str = (jstring)t.getEnv()->CallStaticObjectMethod(t.classID, t.methodID);
        t.getEnv()->DeleteLocalRef(t.classID);
        packageName = jstring2string(str);
        t.getEnv()->DeleteLocalRef(str);

        lmLog(jniLogGroup, "package name %s", packageName.c_str());

        return packageName.c_str();
    }

    return 0;
}
예제 #3
0
/*
 * Class:     org_imgsdk_core_NativeImageSdk
 * Method:    setEffectCmd
 * Signature: (JLjava/lang/String;)V
 */
void JNICALL Java_org_imgsdk_core_NativeImageSdk_setEffectCmd
  (JNIEnv *env, jobject thiz, jlong ptr, jstring jcommand)
{
	LOG_ENTRY;
	SdkEnv* sdk = (SdkEnv *)((intptr_t)ptr);
	if (NULL == sdk) {
		LogE("NULL pointer exception\n");
		return;
	}

	if (NULL == jcommand) {
		LogE("NULL pointer exception\n");
		return;
	}

	Log("setEffectCmd pthread self:%lx\n", pthread_self() );
	Log("setEffectCmd gettid:%x\n", gettid() );

	char *cmd = jstring2string(env, jcommand);
    if (NULL == cmd) {
        LogE("Effect cmd is NULL\n");
        return;
    }

    Log("EffectCmd = %s\n", cmd);
	setEffectCmd (sdk, cmd);

	LOG_EXIT;
}
예제 #4
0
/*
 * Class:     org_imgsdk_core_NativeImageSdk
 * Method:    setOutputPath
 * Signature: (JLjava/lang/String;)V
 */
JNIEXPORT void JNICALL Java_org_imgsdk_core_NativeImageSdk_setOutputPath
  (JNIEnv *env, jobject thiz, jlong ptr, jstring jpath)
{
	LOG_ENTRY;
	SdkEnv* sdk = (SdkEnv *)((intptr_t)ptr);
	if (NULL == sdk) {
		LogE("NULL pointer exception\n");
		return;
	}

	if (NULL == jpath) {
		LogE("NULL pointer exception\n");
		return;
	}

	char *path = jstring2string(env, jpath);
    if (NULL == path) {
        LogE("output path is NULL\n");
        return;
    }

    Log("output path:%s\n", path);
	setOutputImagePath(sdk, path);

	LOG_EXIT;
}
예제 #5
0
JNIEXPORT void JNICALL Java_org_openscenegraph_osg_core_Node_nativeSetRenderBinDetails(JNIEnv *env, jclass, jlong cptr,
		jint order, jstring bin)
{
	osg::Node *node = reinterpret_cast<osg::Node *>(cptr);
	if(node != 0)
	{
		node->getOrCreateStateSet()->setRenderBinDetails(order,jstring2string(env,bin));
	}
}
JNIEXPORT void JNICALL Java_com_dmzj_manhua_openapi_OpenApiHelper_onTokenReturn
  (JNIEnv * env, jclass obj, jint plat, jstring token ,jstring uid)
{
	jclass LogClass = env->FindClass("android/util/Log");
		jmethodID dID = env->GetStaticMethodID(LogClass,"d","(Ljava/lang/String;Ljava/lang/String;)I");
		jstring tag = env->NewStringUTF("Demo");
		jstring infostart = env->NewStringUTF("----- onTokenReturn -----");
		env->CallStaticIntMethod(LogClass,dID,tag,infostart);//
	//
	std::string mtoken = jstring2string(token,env);
	std::string muid = jstring2string(uid,env);
	if(plat == 1){
		DMLoginController::getInstance()->threePartyLand("qq",mtoken,muid);
	}
	else if(plat ==2){
		DMLoginController::getInstance()->threePartyLand("weibo",mtoken,muid);
	}

}
예제 #7
0
JNIEXPORT jlong JNICALL Java_org_openscenegraph_osg_db_ReadFile_nativeReadNodeFile(JNIEnv *env, jclass, jstring filename)
{
	osg::Node *node = osgDB::readNodeFile(jstring2string(env,filename));
	if(node == 0) 
	{
		LOGE("Error loading scene");
		return 0;
	}
	node->ref();
	return reinterpret_cast<jlong>(node);

}
예제 #8
0
const char *LoomJni::getWritablePath()
{
    static utString writablePath;

    loomJniMethodInfo t;

    if (getStaticMethodInfo(t,
        "co/theengine/loomdemo/LoomDemo",
        "getActivityWritablePath",
        "()Ljava/lang/String;"))
    {
        jstring str = (jstring)t.getEnv()->CallStaticObjectMethod(t.classID, t.methodID);
        writablePath = jstring2string(str);
        t.getEnv()->DeleteLocalRef(str);

        lmLog(jniLogGroup, "writable path %s", writablePath.c_str());

        return writablePath.c_str();
    }

    return 0;
}
예제 #9
0
const char *LoomJni::getSettingsPath()
{
    static utString path;

    loomJniMethodInfo t;

    if (getStaticMethodInfo(t,
        "co/theengine/loomplayer/LoomPlayer",
        "getActivitySettingsPath",
        "()Ljava/lang/String;"))
    {
        jstring str = (jstring)t.getEnv()->CallStaticObjectMethod(t.classID, t.methodID);
        path = jstring2string(str);
        t.getEnv()->DeleteLocalRef(str);

        lmLog(jniLogGroup, "settings path %s", path.c_str());

        return path.c_str();
    }

    return 0;
}
예제 #10
0
JNIEXPORT void JNICALL Java_org_openscenegraph_osg_core_Geode_nativeGetTextureRectangle(
		JNIEnv *env, jclass, jlong cptr,
		jfloat width, jfloat height, jstring fileName)
{
	osg::Geode *geode = reinterpret_cast<osg::Geode *>(cptr);

	osg::BoundingBox bb(-width/2,-height/2,0.0f,width,height,0.0f);
	const std::string& filename = jstring2string(env,fileName);

	osg::Vec3 top_left(bb.xMin(),bb.yMax(),bb.zMax());
	osg::Vec3 bottom_left(bb.xMin(),bb.yMin(),bb.zMax());
	osg::Vec3 bottom_right(bb.xMax(),bb.yMin(),bb.zMax());
	osg::Vec3 top_right(bb.xMax(),bb.yMax(),bb.zMax());

	// create geometry
	osg::Geometry* geom = new osg::Geometry;

	osg::Vec3Array* vertices = new osg::Vec3Array(6);
	(*vertices)[0] = top_left;
	(*vertices)[1] = bottom_left;
	(*vertices)[2] = bottom_right;
	(*vertices)[3] = bottom_right;
	(*vertices)[4] = top_right;
	(*vertices)[5] = top_left;
	geom->setVertexArray(vertices);

	osg::Vec2Array* texcoords = new osg::Vec2Array(6);
	(*texcoords)[0].set(0.0f, 0.0f);
	(*texcoords)[1].set(0.0f, 1.0f);
	(*texcoords)[2].set(1.0f, 1.0f);
	(*texcoords)[3].set(1.0f, 1.0f);
	(*texcoords)[4].set(1.0f, 0.0f);
	(*texcoords)[5].set(0.0f, 0.0f);
	geom->setTexCoordArray(0,texcoords);

	osg::Vec3Array* normals = new osg::Vec3Array(1);
	(*normals)[0].set(0.0f,-1.0f,0.0f);
	geom->setNormalArray(normals);
	geom->setNormalBinding(osg::Geometry::BIND_OVERALL);

	osg::Vec4Array* colors = new osg::Vec4Array(1);
	(*colors)[0].set(1.0f,1.0f,1.0f,1.0f);
	geom->setColorArray(colors);
	geom->setColorBinding(osg::Geometry::BIND_OVERALL);

	geom->addPrimitiveSet(new osg::DrawArrays(GL_TRIANGLES, 0, 6));

	// disable display list so our modified tex coordinates show up
	geom->setUseDisplayList(false);


	// load image
	osg::Image* img = osgDB::readImageFile(filename);

	// setup texture
	osg::Texture2D* texture = new osg::Texture2D(img);
	texture->setDataVariance(osg::Object::DYNAMIC);

	/*/////////////////////kookmin start/////////////////////*/

	// setup state
	osg::StateSet* state = geom->getOrCreateStateSet();
	state->setTextureAttributeAndModes(0, texture, osg::StateAttribute::ON);
	state->setRenderingHint(osg::StateSet::TRANSPARENT_BIN);

	/*/////////////////////kookmin over/////////////////////*/

	// turn off lighting
	state->setMode(GL_LIGHTING, osg::StateAttribute::OFF);


	texture->ref();
	img->ref();
	LOGE("set up texture start 5....");
	geom->ref();
	LOGE("set up texture start 6....");
	geode->addDrawable(geom);

	LOGE("set up texture start 7....");
}
예제 #11
0
	void Java_com_test_surfaceview_TestNative_Draw(JNIEnv* env,jobject obj,jstring jstr)
	{
		LOGI("Java_com_test_surfaceview_TestNative_Draw");
		char* path = jstring2string(env,jstr);
		if(g_assetManager == NULL)
		{
			LOGE("Get AAssetManager ERROR!");
		}
		 AAsset* asset = AAssetManager_open(g_assetManager, path,AASSET_MODE_UNKNOWN);
		 free(path);
		 path = NULL;
		 if(asset == NULL)
			 return ;
		 int  bufferLen = AAsset_getLength(asset);
		 unsigned char* buffer = (unsigned char*)malloc(bufferLen+1);
		 buffer[bufferLen] = 0;
		 int numBytesRead = AAsset_read(asset, buffer, bufferLen);
		 g_buffer = buffer;
		 g_bufferLen = bufferLen;
		 AAsset_close(asset);
		 LOGI("g_bufferLen=%d",g_bufferLen);
		BITMAPFILEHEADER  filehead;
		BITMAPINFOHEADER  head;
		memcpy(&filehead,g_buffer,sizeof(BITMAPFILEHEADER));
		memcpy(&head,g_buffer+sizeof(BITMAPFILEHEADER),sizeof(BITMAPINFOHEADER));
		if(filehead.bfType != 0x4D42)
		{
			free(buffer);
			buffer=NULL;
			return ;
		}
		ANativeWindow_setBuffersGeometry(g_nativeWindow,head.biWidth,head.biHeight,WINDOW_FORMAT_RGB_565);
		g_nWidth = ANativeWindow_getWidth(g_nativeWindow);
		g_nHeight = ANativeWindow_getHeight(g_nativeWindow);
		int nfomat  = ANativeWindow_getFormat(g_nativeWindow);
		LOGI("bfOffBits=%d,g_nWidth=%d,g_nHeight=%d,nfomat=%d",filehead.bfOffBits,g_nWidth,g_nHeight,nfomat);
		ANativeWindow_Buffer windowBuffer;
		if(ANativeWindow_lock(g_nativeWindow,&windowBuffer,NULL) <0 )
		{
			LOGE("cannot lock window");
		}
		else
		{
//			unsigned char* tmp =(unsigned char*)( g_buffer+filehead.bfOffBits);
//			unsigned int* data =(unsigned int*) windowBuffer.bits;
//			for(int i=0;i<head.biHeight;i++)
//			{
//				for(int j=0;j<head.biWidth;j++)
//				{
//					int nFlag = 0;
//					memcpy(&nFlag,tmp+(head.biWidth*i+j)*3,3);
//					data[i*windowBuffer.stride+j] = nFlag;
//				}
//				//memcpy(data+i*buffer.stride*2,tmp+(600-i-1)*800*2,800*2);
//			}
			unsigned short* data =(unsigned short*) windowBuffer.bits;
			unsigned char* tmp = (unsigned char*)(g_buffer+filehead.bfOffBits);
			LOGI("%d,%d,%d",head.biWidth,head.biHeight,head.biBitCount);
			int offsize = head.biBitCount/8;
			int lineByte=(head.biWidth* head.biBitCount/8+3)/4*4;
			LOGI("lineByte=%d",lineByte);
			for(int i=0;i<head.biHeight;i++)
			{
				for(int j=0;j<head.biWidth;j++,tmp+=offsize)
				{
					if(offsize>2)
						data[(head.biHeight-i-1)*windowBuffer.stride+j] = RGB565(*(tmp+2),*(tmp+1),*(tmp));
					else
						memcpy(&data[(head.biHeight-i-1)*windowBuffer.stride+j],tmp,2);
				}
				tmp+=(lineByte-offsize*head.biWidth);
			}
			LOGI("buffer.stride=%d,buffer.format=%d",windowBuffer.stride,windowBuffer.format);
			ANativeWindow_unlockAndPost(g_nativeWindow);
		}
		free(buffer);
		buffer=NULL;
		LOGI("Java_com_test_surfaceview_TestNative_Draw END!");
	}
예제 #12
0
파일: jni_db.cpp 프로젝트: r0ller/alice
query_result *jni_db::exec_sql(const std::string& sql){
	query_result *result=NULL;
	std::string row_index;
	field field;
	char **fields=NULL;

	jstring jsql=env->NewStringUTF(sql.c_str());
	jobjectArray raw_sqlite_result=reinterpret_cast<jobjectArray>(env->CallObjectMethod(dbhelperobj,dbhelper_exec_sql,jsql));
	if(env->ExceptionCheck()==JNI_TRUE){
		env->ExceptionClear();
		throw sql_execution_error();
	}
	env->ReleaseStringUTFChars(jsql,env->GetStringUTFChars(jsql,NULL));
	env->DeleteLocalRef(jsql);
	if(raw_sqlite_result!=NULL){
		jsize raw_sqlite_result_size=env->GetArrayLength(raw_sqlite_result);
		result=new query_result();
		jobjectArray column_names=reinterpret_cast<jobjectArray>(env->CallObjectMethod(dbhelperobj,dbhelper_get_metadata));
		jsize column_names_size=env->GetArrayLength(column_names);
		if(column_names_size>0){
			fields=new char*[column_names_size];
			for(jsize i=0;i<column_names_size;++i){
				jobject column_name_jobj=env->GetObjectArrayElement(column_names,i);
				jstring column_name=reinterpret_cast<jstring>(column_name_jobj);
				std::string colname=jstring2string(column_name);
				env->DeleteLocalRef(column_name_jobj);
				logger::singleton()==NULL?(void)0:logger::singleton()->log(3,"execsql:"+colname);
				fields[i]=new char[colname.length()+1];
				fields[i][colname.length()]='\0';
				colname.copy(fields[i],colname.length());
			}
			unsigned int nr_of_columns=column_names_size;
			result->set_metadata(nr_of_columns,(const char**) &(*fields));
		}
		env->DeleteLocalRef(column_names);
		unsigned char row_struct_counter=0;
		for(jsize i=0;i<raw_sqlite_result_size;++i){
			if(row_struct_counter==0){
				jobject rowid_jobj=env->GetObjectArrayElement(raw_sqlite_result,i);
				jstring rowid=reinterpret_cast<jstring>(rowid_jobj);
				row_index=jstring2string(rowid);
				env->DeleteLocalRef(rowid_jobj);
				row_struct_counter=1;
			}
			else if(row_struct_counter==1){
				jobject column_name_jobj=env->GetObjectArrayElement(raw_sqlite_result,i);
				jstring column_name=reinterpret_cast<jstring>(column_name_jobj);
				field.field_name=jstring2string(column_name);
				env->DeleteLocalRef(column_name_jobj);
				row_struct_counter=2;
			}
			else if(row_struct_counter==2){
				jobject column_value_jobj=env->GetObjectArrayElement(raw_sqlite_result,i);
				jstring column_value=reinterpret_cast<jstring>(column_value_jobj);
				field.field_value=jstring2string(column_value);
				env->DeleteLocalRef(column_value_jobj);
				result->insert(std::make_pair(std::atoi(row_index.c_str()),field));
				row_struct_counter=0;
			}
		}
		env->DeleteLocalRef(raw_sqlite_result);
	}
	return result;
}