void AApplication::cppOnReceiveURI (jstring data) { uAutoReleasePool pool; uString* unoUri = JniHelper::JavaToUnoString(data); JniHelper jni; jni->DeleteGlobalRef(data); ::g::Uno::Platform2::Application::OnReceivedURI(unoUri); }
/* * Class: com_vickingur_model_NativeGameProcessor * Method: nativeGetCells * Signature: ()[[Lcom/vickingur/model/shapes/Cell; */ JNIEXPORT jobjectArray JNICALL Java_com_vickingur_model_NativeGameProcessor_nativeGetCells( JNIEnv *env, jobject obj) { Cell* nativeCells = NativeGameProcessor::Instance()->GetField()->GetCells(); int rows = NativeGameProcessor::Instance()->GetField()->GetRows(); int columns = NativeGameProcessor::Instance()->GetField()->GetColumns(); JniHelper* helper = new JniHelper(env); if (DEBUG) helper->LogString("> nativeGetCells"); jobjectArray cells = helper->CreateOneDimensionalCellArray((jint) rows, (jint) columns); for (int i = 0; i < columns * rows; i++) { if (DEBUG) __android_log_print(ANDROID_LOG_DEBUG, "JNI", "i: %d", i); jint color = (jint) nativeCells[i].GetColor(); if (DEBUG) __android_log_print(ANDROID_LOG_DEBUG, "JNI", "color: %d", (int) color); jobject point = helper->CreatePoint(nativeCells[i].GetPosition().x, nativeCells[i].GetPosition().y); if (DEBUG) __android_log_print(ANDROID_LOG_DEBUG, "JNI", "pos: %p", point); jobject cell = helper->CreateCell(color, point); if (DEBUG) __android_log_print(ANDROID_LOG_DEBUG, "JNI", "cell: %p", cell); helper->SetElementToArray(cells, i, cell); if (DEBUG) __android_log_print(ANDROID_LOG_DEBUG, "JNI", "deleting"); helper->DeleteLocal(point); helper->DeleteLocal(cell); } delete helper; if (DEBUG) helper->LogString("< nativeGetCells"); return cells; }
// This is used only when dictated by the java activity. // It is possible on later versions of android (v >= 4.2) to use the choreographer void AApplication::mainLoop(bool resurrected) { if (resurrected) { JniHelper jni; jni.UpdateActivityObject(); GLHelper::SwapBackToBackgroundSurface(); uAutoReleasePool pool; ::g::Uno::Platform2::Application::ResetContextState(); } else { GLHelper::InitGL(); } }
// private static extern void RegisterFunctions() [static] :15 void ExternBlockHost::RegisterFunctions() { uStackFrame __("Uno.Compiler.ExportTargetInterop.Foreign.Android.ExternBlockHost", "RegisterFunctions()"); JniHelper jni; static JNINativeMethod native_activity_funcs[] = { }; int funcCount = 0; if ((int)jni->RegisterNatives(JniHelper::GetNativeExternClass(), native_activity_funcs, funcCount)<0) { LOGD("COULD NOT REGISTER NATIVE EXTERN FUNCTIONS"); XLI_THROW("COULD NOT REGISTER NATIVE EXTERN FUNCTIONS"); } }
// This is used only when dictated by the java activity. // It is possible on later versions of android (v >= 4.2) to use the choreographer void AApplication::mainLoop(bool resurrected) { if (resurrected) { JniHelper jni; jni.UpdateActivityObject(); GLHelper::SwapBackToBackgroundSurface(); uAutoReleasePool pool; ::g::Uno::Platform2::Application::ResetContextState(); } else { GLHelper::InitGL(); // register java native extern callbacks ::g::Uno::Compiler::ExportTargetInterop::Foreign::Android::ExternBlockHost::RegisterFunctions(); } }
void Audio::pause() { if( !m_player ) { return; } JniHelper jniHelper; JNIEnv *env = jniHelper.getEnv(); jmethodID method = jniHelper.getMethod(m_player, "pause", "()V"); if( env != NULL && method != NULL ) { env->CallVoidMethod(m_player, method); } }
Audio::~Audio() { LOG("Audio destructor: %s", m_src.c_str()); if( m_player ) { JniHelper jniHelper; JNIEnv *env = jniHelper.getEnv(); jmethodID method = jniHelper.getMethod(m_player, "release", "()V"); if( env != NULL && method != NULL ) { LOG("Audio release"); env->CallVoidMethod(m_player, method); } jniHelper.DeleteGlobalRef(m_player); } }
Audio::Audio() { m_autoplay = false; m_loop = false; m_player = NULL; m_muted = false; m_volume = 1.0; JniHelper jniHelper; JNIEnv *env = jniHelper.getEnv(); jmethodID newAudioPlayer = jniHelper.getMethod(g_jgl, "newAudioPlayer", "()Lcom/woyouquan/Giraffe/JavaAudioPlayer;"); if( env != NULL && newAudioPlayer != NULL ) { jobject player = env->CallObjectMethod(g_jgl, newAudioPlayer); m_player = env->NewGlobalRef(player); } }
void Audio::set_autoplay(bool autoplay) { m_autoplay = autoplay; if( !m_player ) { return; } JniHelper jniHelper; JNIEnv *env = jniHelper.getEnv(); jmethodID method = jniHelper.getMethod(m_player, "setAutoplay", "(Z)V"); if( env != NULL && method != NULL ) { env->CallVoidMethod(m_player, method, autoplay); } }
void Audio::set_loop(bool loop) { m_loop = loop; if( !m_player ) { return; } JniHelper jniHelper; JNIEnv *env = jniHelper.getEnv(); jmethodID method = jniHelper.getMethod(m_player, "setLoop", "(Z)V"); if( env != NULL && method != NULL ) { env->CallVoidMethod(m_player, method, loop); } }
void Audio::set_volume(float volume) { m_volume = volume; if( !m_player ) { return; } float realVolume = m_muted ? 0.0 : m_volume; JniHelper jniHelper; JNIEnv *env = jniHelper.getEnv(); jmethodID method = jniHelper.getMethod(m_player, "setVolume", "(F)V"); if( env != NULL && method != NULL ) { env->CallVoidMethod(m_player, method, realVolume); } }
void Audio::set_src(string src) { m_src = src; if( !m_player ) { return; } string fullPath = JSCContext::getInstance()->path() + m_src; TRACE("Audio audio src:%s", fullPath.c_str()); JniHelper jniHelper; JNIEnv *env = jniHelper.getEnv(); jmethodID setSource = jniHelper.getMethod(m_player, "setSource", "(Ljava/lang/String;)V"); if( env != NULL && setSource != NULL ) { jstring path = env->NewStringUTF( fullPath.c_str() ); env->CallVoidMethod(m_player, setSource, path); TRACE("Audio setSource"); } }
ANativeWindow* GLHelper::GetANativeWindowFromSurface(jobject surface) { JniHelper jni; return ANativeWindow_fromSurface(jni.GetEnv(), surface); }