void HttpRequestJavaTask::_run() { addRef(); _mainThreadSync = true; JNIEnv* env = jniGetEnv(); LOCAL_REF_HOLDER(env); jstring jurl = jniGetEnv()->NewStringUTF(_url.c_str()); jstring jfname = _fname.empty() ? 0 : jniGetEnv()->NewStringUTF(_fname.c_str()); jbyteArray jpost = 0; if (!_postData.empty()) { jpost = env->NewByteArray(_postData.size()); env->SetByteArrayRegion(jpost, 0, _postData.size(), (jbyte*)&_postData.front()); } _handle = env->NewGlobalRef(env->CallStaticObjectMethod(_jHttpRequestsClass, _jCreateRequestMethod, jurl, jfname, jpost, (jlong)this)); }
void HttpRequestTask::release() { JNIEnv* env = jniGetEnv(); LOCAL_REF_HOLDER(env); jmethodID jRelease = env->GetStaticMethodID(_jHttpRequestsClass, "release", "()V"); JNI_NOT_NULL(jRelease); env->CallStaticObjectMethod(_jHttpRequestsClass, jRelease); }
void HttpRequestJavaTask::complete_(jbyteArray ar) { if (ar) { JNIEnv* env = jniGetEnv(); jbyte* data = env->GetByteArrayElements(ar, 0); jint len = env->GetArrayLength(ar); _response.assign((char*)data, (char*)data + len); env->ReleaseByteArrayElements(ar, data, 0); } onComplete(); releaseRef(); }
void HttpRequestTask::init() { JNIEnv* env = jniGetEnv(); LOCAL_REF_HOLDER(env); _jHttpRequestsClass = (jclass) env->NewGlobalRef(env->FindClass("org/oxygine/lib/HttpRequests")); JNI_NOT_NULL(_jHttpRequestsClass); _jCreateRequestMethod = env->GetStaticMethodID(_jHttpRequestsClass, "createRequest", "(Ljava/lang/String;Ljava/lang/String;[BJ)Lorg/oxygine/lib/HttpRequestHolder;"); JNI_NOT_NULL(_jCreateRequestMethod); jmethodID jInit = env->GetStaticMethodID(_jHttpRequestsClass, "init", "()V"); JNI_NOT_NULL(jInit); env->CallStaticVoidMethod(_jHttpRequestsClass, jInit); log::messageln("initialized HttpRequestJavaTask"); }
void android_main(struct android_app* state) { struct engine engine; // Make sure glue isn't stripped. app_dummy(); LOGI("android_main"); memset(&engine, 0, sizeof(engine)); state->userData = &engine; state->onAppCmd = cmdHandler; state->onInputEvent = inputHandler; // Dynamically load lua library // void *handle = dlopen("/data/data/com.example.luanative/lib/liblua.so", RTLD_LAZY); engine.app = state; engine.L = luaL_newstate(); luaL_openlibs(engine.L); jniSetJavaVM(state->activity->vm); jniSetContext(state->activity->clazz); JNIEnv* env = jniGetEnv(); luaopen_asset(engine.L); luaopen_vibrator(engine.L); luaopen_toast(engine.L); luaL_doasset(engine.L, "main.lua"); if (state->savedState != NULL) { } while (1) { // Read all pending events. int ident; int events; struct android_poll_source* source; // If not animating, we will block forever waiting for events. // If animating, we loop until all events are read, then continue // to draw the next frame of animation. while ((ident=ALooper_pollAll(0, NULL, &events, (void**)&source)) >= 0) { LOGI("ident: %d, events %d", ident, events); // Process this event. if (source != NULL) { source->process(state, source); } // Check if we are exiting. if (state->destroyRequested != 0) { return; } } usleep(100000); } }
void HttpRequestJavaTask::_finaliaze(bool) { JNIEnv* env = jniGetEnv(); env->DeleteGlobalRef(_handle); _handle = 0; }