void engine_handle_cmd(struct android_app *app, int32_t cmd) { switch(cmd) { case APP_CMD_SAVE_STATE: break; case APP_CMD_INIT_WINDOW: if(app->window!=NULL) { engine_init_display(); engine_draw_frame(); } break; case APP_CMD_TERM_WINDOW: engine_term_display(); break; case APP_CMD_GAINED_FOCUS: break; case APP_CMD_LOST_FOCUS: break; } }
/** * Process the next main command. */ static void engine_handle_cmd(struct android_app* app, int32_t cmd) { struct engine* engine = (struct engine*)app->userData; switch (cmd) { case APP_CMD_SAVE_STATE: // The system has asked us to save our current state. Do so. #if 0 engine->app->savedState = malloc(sizeof(struct saved_state)); *((struct saved_state*)engine->app->savedState) = engine->state; engine->app->savedStateSize = sizeof(struct saved_state); #endif break; case APP_CMD_INIT_WINDOW: // The window is being shown, get it ready. if (engine->app->window != NULL) { engine_init_display(engine); } break; case APP_CMD_TERM_WINDOW: // The window is being hidden or closed, clean it up. engine_term_display(engine); break; case APP_CMD_GAINED_FOCUS: // When our app gains focus, we start monitoring the accelerometer. break; case APP_CMD_LOST_FOCUS: // When our app loses focus, we stop monitoring the accelerometer. // This is to avoid consuming battery while not being used. break; } }
/** * Process the next main command. */ static void engine_handle_cmd(struct android_app* app, int32_t cmd) { struct engine* engine = (struct engine*)app->userData; switch (cmd) { case APP_CMD_SAVE_STATE: // The system has asked us to save our current state. Do so. engine->app->savedState = malloc(sizeof(struct saved_state)); *((struct saved_state*)engine->app->savedState) = engine->state; engine->app->savedStateSize = sizeof(struct saved_state); break; case APP_CMD_INIT_WINDOW: // The window is being shown, get it ready. if (engine->app->window != NULL) { cocos_dimensions d = engine_init_display(engine); if ((d.w > 0) && (d.h > 0)) { cocos2d::JniHelper::setJavaVM(app->activity->vm); cocos2d::JniHelper::setClassLoaderFrom(app->activity->clazz); // call Cocos2dxHelper.init() cocos2d::JniMethodInfo ccxhelperInit; if (!cocos2d::JniHelper::getStaticMethodInfo(ccxhelperInit, "org/cocos2dx/lib/Cocos2dxHelper", "init", "(Landroid/app/Activity;)V")) { LOGI("cocos2d::JniHelper::getStaticMethodInfo(ccxhelperInit) FAILED"); } ccxhelperInit.env->CallStaticVoidMethod(ccxhelperInit.classID, ccxhelperInit.methodID, app->activity->clazz); cocos_init(d, app); } engine->animating = 1; engine_draw_frame(engine); } break; case APP_CMD_TERM_WINDOW: // The window is being hidden or closed, clean it up. engine_term_display(engine); break; case APP_CMD_GAINED_FOCUS: if (cocos2d::Director::getInstance()->getOpenGLView()) { cocos2d::Application::getInstance()->applicationWillEnterForeground(); engine->animating = 1; } break; case APP_CMD_LOST_FOCUS: { cocos2d::Application::getInstance()->applicationDidEnterBackground(); cocos2d::EventCustom backgroundEvent(EVENT_COME_TO_BACKGROUND); cocos2d::Director::getInstance()->getEventDispatcher()->dispatchEvent(&backgroundEvent); // Also stop animating. engine->animating = 0; engine_draw_frame(engine); } break; } }
/** * 繝。繧、繝ウ繧ウ繝槭Φ繝峨�蜃ヲ逅� */ static void engine_handle_cmd(struct android_app* app, int32_t cmd) { struct engine* engine = (struct engine*) app->userData; switch (cmd) { case APP_CMD_SAVE_STATE: engine->app->savedState = malloc(sizeof(struct saved_state)); *((struct saved_state*) engine->app->savedState) = engine->state; engine->app->savedStateSize = sizeof(struct saved_state); break; case APP_CMD_INIT_WINDOW: if (engine->app->window != NULL) { engine_init_display(engine); engine_draw_frame(engine); } break; case APP_CMD_TERM_WINDOW: engine_term_display(engine); break; case APP_CMD_GAINED_FOCUS: if (engine->accelerometerSensor != NULL) { ASensorEventQueue_enableSensor(engine->sensorEventQueue, engine->accelerometerSensor); ASensorEventQueue_setEventRate(engine->sensorEventQueue, engine->accelerometerSensor, (1000L / 60) * 1000); } break; case APP_CMD_LOST_FOCUS: if (engine->accelerometerSensor != NULL) { ASensorEventQueue_disableSensor(engine->sensorEventQueue, engine->accelerometerSensor); } engine->animating = 0; engine_draw_frame(engine); break; } }
// メインコマンドの処理 static void engine_handle_cmd(struct android_app* app, int32_t cmd) { struct engine* engine = (struct engine*) app->userData; switch (cmd) { case APP_CMD_SAVE_STATE: // 状態保存を行うとき // 状態保存エリア取得 engine->app->savedState = malloc(sizeof(struct saved_state)); *((struct saved_state*) engine->app->savedState) = engine->state; engine->app->savedStateSize = sizeof(struct saved_state); break; case APP_CMD_INIT_WINDOW: // ウィンドウを初期化したとき if (engine->app->window != NULL) { // 画面を初期化する engine_init_display(engine); // 画面を描画する engine_draw_frame(engine); } break; case APP_CMD_TERM_WINDOW: // ウィンドウを破棄するとき // EGL情報を破棄する engine_term_display(engine); break; case APP_CMD_GAINED_FOCUS: // アプリがフォーカスを取得したとき enable_sensors(engine); break; case APP_CMD_LOST_FOCUS: // フォーカスが消失したとき disable_sensors(engine); // アニメーション停止 engine->animating = 0; // 画面を表示 engine_draw_frame(engine); break; } }
/** * Process the next main command. */ static void engine_handle_cmd(struct android_app* app, int32_t cmd) { struct engine* engine = (struct engine*)app->userData; switch (cmd) { case APP_CMD_SAVE_STATE: // // The system has asked us to save our current state. Do so. // engine->app->savedState = malloc(sizeof(struct saved_state)); // *((struct saved_state*)engine->app->savedState) = engine->state; // engine->app->savedStateSize = sizeof(struct saved_state); break; case APP_CMD_INIT_WINDOW: // The window is being shown, get it ready. if (engine->app->window != NULL) { engine_init_display(engine); engine_draw_frame(engine); } break; case APP_CMD_TERM_WINDOW: // The window is being hidden or closed, clean it up. engine_term_display(engine); break; case APP_CMD_GAINED_FOCUS: engine->has_focus = 1; break; case APP_CMD_LOST_FOCUS: engine->has_focus = 0; break; } }
/** * Process the next main command. */ static void engine_handle_cmd(struct android_app* app, int32_t cmd) { struct engine* engine = (struct engine*)app->userData; switch (cmd) { case APP_CMD_INIT_WINDOW: // The window is being shown, get it ready. if (engine->app->window != NULL) { engine_init_display(engine); engine_draw_frame(engine); } break; case APP_CMD_TERM_WINDOW: // The window is being hidden or closed, clean it up. engine_term_display(engine); break; } }
static void engine_handle_cmd( struct android_app* app, int32_t cmd) { struct engine* engine = (struct engine*)app->userData; if(cmd == APP_CMD_SAVE_STATE) { // The system has asked us to save our current state. Do so. engine->app->savedState = malloc(sizeof(struct saved_state)); *((struct saved_state*)engine->app->savedState) = engine->state; engine->app->savedStateSize = sizeof(struct saved_state); } else if(cmd == APP_CMD_INIT_WINDOW) { // The window is being shown, get it ready. if (engine->app->window != NULL) { engine_init_display(engine); engine_draw_frame(engine); } } else if(cmd == APP_CMD_TERM_WINDOW) { // The window is being hidden or closed, clean it up. engine_term_display(engine); } else if(cmd == APP_CMD_GAINED_FOCUS) { // When our app gains focus, we start monitoring the accelerometer. /*if (engine->accelerometerSensor != NULL) { ASensorEventQueue_enableSensor( engine->sensorEventQueue, engine->accelerometerSensor); // We'd like to get 60 events per second (in us). ASensorEventQueue_setEventRate( engine->sensorEventQueue, engine->accelerometerSensor, (1000L/60)*1000); }*/ } else if(cmd == APP_CMD_LOST_FOCUS) { // When our app loses focus, we stop monitoring the accelerometer. // This is to avoid consuming battery while not being used. /*if (engine->accelerometerSensor != NULL) { ASensorEventQueue_disableSensor( engine->sensorEventQueue, engine->accelerometerSensor); } // Also stop animating. engine->animating = 0; engine_draw_frame(engine);*/ } }
/** * Process the next main command. */ static void engine_handle_cmd(struct android_app* app, int32_t cmd) { struct engine* engine = (struct engine*)app->userData; switch (cmd) { case APP_CMD_SAVE_STATE: // The system has asked us to save our current state. Do so. engine->app->savedState = malloc(sizeof(struct saved_state)); *((struct saved_state*)engine->app->savedState) = engine->state; engine->app->savedStateSize = sizeof(struct saved_state); break; case APP_CMD_INIT_WINDOW: // The window is being shown, get it ready. if (engine->app->window != NULL) { engine_init_display(engine); nuiAndroidBridge::androidResize(ANativeWindow_getWidth(app->window), ANativeWindow_getHeight(app->window)); nuiButton* pButton = new nuiButton("Prout!"); // pButton->SetPosition(nuiCenter); gpBridge->AddChild(pButton); engine_draw_frame(engine); engine->animating = 1; } break; case APP_CMD_TERM_WINDOW: // The window is being hidden or closed, clean it up. engine_term_display(engine); break; case APP_CMD_GAINED_FOCUS: // When our app gains focus, we start monitoring the accelerometer. if (engine->accelerometerSensor != NULL) { ASensorEventQueue_enableSensor(engine->sensorEventQueue, engine->accelerometerSensor); // We'd like to get 60 events per second (in us). ASensorEventQueue_setEventRate(engine->sensorEventQueue, engine->accelerometerSensor, (1000L/60)*1000); } break; case APP_CMD_LOST_FOCUS: // When our app loses focus, we stop monitoring the accelerometer. // This is to avoid consuming battery while not being used. if (engine->accelerometerSensor != NULL) { ASensorEventQueue_disableSensor(engine->sensorEventQueue, engine->accelerometerSensor); } // Also stop animating. engine->animating = 1; engine_draw_frame(engine); break; } }
/** * Process the next main command. */ static void engine_handle_cmd(struct android_app* app, int32_t cmd) { struct engine* engine = (struct engine*)app->userData; switch (cmd) { case APP_CMD_SAVE_STATE: // The system has asked us to save our current state. Do so. engine->app->savedState = malloc(sizeof(struct saved_state)); *((struct saved_state*)engine->app->savedState) = engine->state; engine->app->savedStateSize = sizeof(struct saved_state); break; case APP_CMD_INIT_WINDOW: if (app->window != NULL) { int32_t width = ANativeWindow_getWidth(app->window); int32_t height = ANativeWindow_getHeight(app->window); ANativeWindow_setBuffersGeometry(app->window, width, height, 1); LOGI("Window format is now %d",ANativeWindow_getFormat(app->window)); } // The window is being shown, get it ready. if (engine->app->window != NULL) { engine_init_display(engine); engine_draw_frame(engine); } break; case APP_CMD_TERM_WINDOW: // The window is being hidden or closed, clean it up. engine_term_display(engine); break; case APP_CMD_GAINED_FOCUS: // When our app gains focus, we start monitoring the accelerometer. if (engine->accelerometerSensor != NULL) { ASensorEventQueue_enableSensor(engine->sensorEventQueue, engine->accelerometerSensor); // We'd like to get 60 events per second (in us). ASensorEventQueue_setEventRate(engine->sensorEventQueue, engine->accelerometerSensor, (1000L/60)*1000); } break; case APP_CMD_LOST_FOCUS: // When our app loses focus, we stop monitoring the accelerometer. // This is to avoid consuming battery while not being used. if (engine->accelerometerSensor != NULL) { ASensorEventQueue_disableSensor(engine->sensorEventQueue, engine->accelerometerSensor); } // Also stop animating. engine->animating = 0; engine_draw_frame(engine); break; } }
/** * Process the next main command. */ static void engine_handle_cmd(struct android_app* app, int32_t cmd) { struct engine* engine = (struct engine*)app->userData; switch (cmd) { case APP_CMD_SAVE_STATE: LOGI("from APP_CMD_SAVE_STATE\n"); saveState(app); break; case APP_CMD_INIT_WINDOW: LOGI("from APP_CMD_INIT_WINDOW\n"); // The window is being shown, get it ready. if (engine->app->window != NULL) { engine_init_display(engine); engine_init_shaders(engine); engine_draw_frame(engine); } break; case APP_CMD_TERM_WINDOW: LOGI("from APP_CMD_TERM_WINDOW\n"); // The window is being hidden or closed, clean it up. cleanup(engine); break; case APP_CMD_GAINED_FOCUS: saveState(app); #if 0 // When our app gains focus, we start monitoring the accelerometer. if (engine->accelerometerSensor != NULL) { ASensorEventQueue_enableSensor(engine->sensorEventQueue, engine->accelerometerSensor); // We'd like to get 60 events per second (in us). ASensorEventQueue_setEventRate(engine->sensorEventQueue, engine->accelerometerSensor, (1000L/60)*1000); } #endif LOGI("from APP_CMD_GAINED_FOCUS\n"); break; case APP_CMD_LOST_FOCUS: LOGI("from APP_CMD_LOST_FOCUS\n"); // When our app loses focus, we stop monitoring the accelerometer. // This is to avoid consuming battery while not being used. if (engine->accelerometerSensor != NULL) { ASensorEventQueue_disableSensor(engine->sensorEventQueue, engine->accelerometerSensor); } // Also stop animating. engine->animating = 0; engine_draw_frame(engine); break; } }
/** *处理下一主命令。 */ static void engine_handle_cmd(struct android_app* app, int32_t cmd) { struct engine* engine = (struct engine*)app->userData; switch (cmd) { case APP_CMD_SAVE_STATE: //系统已经要求我们保存当前状态。就这样做。 engine->app->savedState = malloc(sizeof(struct saved_state)); *((struct saved_state*)engine->app->savedState) = engine->state; engine->app->savedStateSize = sizeof(struct saved_state); break; case APP_CMD_INIT_WINDOW: //正在显示窗口,让其准备就绪。 if (engine->app->window != NULL) { engine_init_display(engine); engine_draw_frame(engine); } break; case APP_CMD_TERM_WINDOW: //正在隐藏或关闭窗口,请其进行清理。 engine_term_display(engine); break; case APP_CMD_GAINED_FOCUS: //当我们的应用获得焦点时,我们开始监控加速计。 if (engine->accelerometerSensor != NULL) { ASensorEventQueue_enableSensor(engine->sensorEventQueue, engine->accelerometerSensor); //我们想要每秒获得 60 个事件(在美国)。 ASensorEventQueue_setEventRate(engine->sensorEventQueue, engine->accelerometerSensor, (1000L / 60) * 1000); } break; case APP_CMD_LOST_FOCUS: //当我们的应用程序失去焦点时,我们会停止监控加速计。 //这可在不使用时避免使用电池。 if (engine->accelerometerSensor != NULL) { ASensorEventQueue_disableSensor(engine->sensorEventQueue, engine->accelerometerSensor); } //另外,停止动画。 engine->animating = 0; engine_draw_frame(engine); break; } }
static void engine_handle_command(struct android_app* app, int32_t cmd) { struct engine* engine = (struct engine*)app->userData; switch (cmd) { case APP_CMD_SAVE_STATE: app_save_state_callback(); break; case APP_CMD_INIT_WINDOW: if (engine->app->window != nullptr) { engine_init_display(engine); engine_draw_frame(engine); } break; case APP_CMD_TERM_WINDOW: engine_term_display(engine); break; case APP_CMD_GAINED_FOCUS: if (engine->accelerometerSensor != nullptr) { ASensorEventQueue_enableSensor(engine->sensorEventQueue, engine->accelerometerSensor); ASensorEventQueue_setEventRate(engine->sensorEventQueue, engine->accelerometerSensor, (1000L/60)*1000); accelerometer_enable_callback(); } break; case APP_CMD_LOST_FOCUS: if (engine->accelerometerSensor != nullptr) { ASensorEventQueue_disableSensor(engine->sensorEventQueue, engine->accelerometerSensor); accelerometer_disable_callback(); } engine_draw_frame(engine); break; } }
/** * Process the next main command. */ static void engine_handle_cmd(struct android_app* app, int32_t cmd) { struct engine* engine = (struct engine*)app->userData; switch (cmd) { case APP_CMD_SAVE_STATE: // The system has asked us to save our current state. Do so. engine->app->savedState = malloc(sizeof(struct saved_state)); *((struct saved_state*)engine->app->savedState) = engine->state; engine->app->savedStateSize = sizeof(struct saved_state); break; case APP_CMD_INIT_WINDOW: // The window is being shown, get it ready. if (engine->app->window != NULL) { engine_init_display(engine); setupGraphics(engine->width, engine->height); InitSensor(); engine_draw_frame(engine); } break; case APP_CMD_TERM_WINDOW: // The window is being hidden or closed, clean it up. engine_term_display(engine); break; case APP_CMD_GAINED_FOCUS: //_EnableSensor(); StartSensor(); engine->animating = 1; break; case APP_CMD_LOST_FOCUS: //_DisableSensor(); // Also stop animating. engine->animating = 0; PauseSensor(); //engine_draw_frame(engine); break; } }
static void _gfx_init(void *ud,bool p_gl2) { struct engine* engine = (struct engine*)ud; engine_init_display(engine,p_gl2); }
// メインコマンドの処理 static void engine_handle_cmd(struct android_app* app, int32_t cmd) { struct engine* engine = (struct engine*) app->userData; switch (cmd) { case APP_CMD_SAVE_STATE: // 状態保存を行うとき // 状態保存エリア取得 engine->app->savedState = malloc(sizeof(struct saved_state)); *((struct saved_state*) engine->app->savedState) = engine->state; engine->app->savedStateSize = sizeof(struct saved_state); break; case APP_CMD_INIT_WINDOW: // ウィンドウを初期化したとき if (engine->app->window != NULL) { // 画面を初期化する engine_init_display(engine); // アニメーションを有効化する engine->animating = 1; // 画面を描画する engine_draw_frame(engine); } break; case APP_CMD_TERM_WINDOW: // ウィンドウを破棄するとき // EGL情報を破棄する engine_term_display(engine); break; case APP_CMD_GAINED_FOCUS: // アプリがフォーカスを取得したとき if (engine->accelerometerSensor != NULL) { // 加速度センサーを有効化する ASensorEventQueue_enableSensor(engine->sensorEventQueue, engine->accelerometerSensor); // センサー情報取得間隔を設定する ASensorEventQueue_setEventRate(engine->sensorEventQueue, engine->accelerometerSensor, (1000L / 60) * 1000); } if (engine->gyroscopeSensor != NULL) { // ジャイロスコープを有効化する ASensorEventQueue_enableSensor(engine->sensorEventQueue, engine->gyroscopeSensor); // センサー情報取得間隔を設定する ASensorEventQueue_setEventRate(engine->sensorEventQueue, engine->gyroscopeSensor, (1000L / 60) * 1000); } break; case APP_CMD_LOST_FOCUS: // フォーカスが消失したとき if (engine->accelerometerSensor != NULL) { // 加速度センサーを無効化する ASensorEventQueue_disableSensor(engine->sensorEventQueue, engine->accelerometerSensor); } if (engine->gyroscopeSensor != NULL) { // ジャイロスコープを無効化する ASensorEventQueue_disableSensor(engine->sensorEventQueue, engine->gyroscopeSensor); } // アニメーション停止 engine->animating = 0; // 画面を表示 engine_draw_frame(engine); break; } }