// ---------------------------------------------------------------------------- // Stops the Camera // ---------------------------------------------------------------------------- JNIEXPORT void JNICALL Java_com_qualcomm_QCARSamples_CloudRecognition_CloudReco_stopCamera(JNIEnv *,jobject) { // Stop the tracker: QCAR::TrackerManager& trackerManager = QCAR::TrackerManager::getInstance(); QCAR::ImageTracker* imageTracker = static_cast<QCAR::ImageTracker*>( trackerManager.getTracker(QCAR::Tracker::IMAGE_TRACKER)); assert(imageTracker != 0); imageTracker->stop(); // Stop cloud based recognition: QCAR::TargetFinder* targetFinder = imageTracker->getTargetFinder(); assert (targetFinder != 0); crStarted = !targetFinder->stop(); //Clears the trackables targetFinder->clearTrackables(); QCAR::CameraDevice::getInstance().stop(); QCAR::CameraDevice::getInstance().deinit(); // When the camera stops it clears the Product Texture ID so next time textures // Are recreated deleteCurrentProductTexture = true; // Initialize all state Variables initStateVariables(); }
JNIEXPORT void JNICALL Java_rajawali_vuforia_RajawaliVuforiaActivity_stopCamera(JNIEnv *, jobject) { LOG("Java_rajawali_vuforia_RajawaliVuforiaActivity_stopCamera"); // Stop the tracker: QCAR::TrackerManager& trackerManager = QCAR::TrackerManager::getInstance(); QCAR::Tracker* markerTracker = trackerManager.getTracker( QCAR::MarkerTracker::getClassType()); if (markerTracker != 0) markerTracker->stop(); QCAR::ImageTracker* imageTracker = static_cast<QCAR::ImageTracker*>(trackerManager.getTracker( QCAR::ImageTracker::getClassType())); if (imageTracker != 0) imageTracker->stop(); QCAR::CameraDevice::getInstance().stop(); // Stop Cloud Reco: QCAR::TargetFinder* targetFinder = imageTracker->getTargetFinder(); assert(targetFinder != 0); targetFinder->stop(); // Clears the trackables targetFinder->clearTrackables(); QCAR::CameraDevice::getInstance().deinit(); initStateVariables(); }
// ---------------------------------------------------------------------------- // Initialize Native Application // ---------------------------------------------------------------------------- JNIEXPORT void JNICALL Java_com_qualcomm_QCARSamples_CloudRecognition_CloudReco_initApplicationNative( JNIEnv* env, jobject obj, jint width, jint height) { // Store screen dimensions screenWidth = width; screenHeight = height; // Handle to the activity class: jclass activityClass = env->GetObjectClass(obj); // Register callback function that gets called every time a tracking cycle // has finished and we have a new AR state available QCAR::registerCallback(&updateCallback); // Screen size: QCAR::Vec2F screenSize; screenSize.data[0] = (float) screenWidth; screenSize.data[1] = (float) screenHeight; // Initialise the method handle for showing error messages: showErrorMethodID = env->GetMethodID(activityClass, "showErrorMessage", "(I)V"); if (showErrorMethodID == 0) { LOG("Function showErrorMessage() not found."); return; } // Initialize Java mathods to be called from Native code createProductTextureID = env->GetMethodID(activityClass, "createProductTexture", "(Ljava/lang/String;)V"); getProductTextureID = env->GetMethodID(activityClass, "getProductTexture", "()Lcom/qualcomm/QCARSamples/CloudRecognition/Texture;"); showStatusBarID = env->GetMethodID(activityClass, "showStatusBar", "()V"); hideStatusBarID = env->GetMethodID(activityClass, "hideStatusBar", "()V"); setStatusBarTextID = env->GetMethodID(activityClass, "setStatusBarText", "(Ljava/lang/String;)V"); enterContentModeID = env->GetMethodID(activityClass,"enterContentMode", "()V"); activityObj = env->NewGlobalRef(obj); // Reset global variables: initStateVariables(); }