// ---------------------------------------------------------------------------- // 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(); }
// ---------------------------------------------------------------------------- // Disables the CloudReco service // ---------------------------------------------------------------------------- JNIEXPORT void JNICALL Java_com_qualcomm_QCARSamples_CloudRecognition_CloudReco_enterContentModeNative(JNIEnv*, jobject) { QCAR::TrackerManager& trackerManager = QCAR::TrackerManager::getInstance(); QCAR::ImageTracker* imageTracker = static_cast<QCAR::ImageTracker*>( trackerManager.getTracker(QCAR::Tracker::IMAGE_TRACKER)); assert(imageTracker != 0); QCAR::TargetFinder* targetFinder = imageTracker->getTargetFinder(); assert (targetFinder != 0); // Stop CloudReco crStarted = !targetFinder->stop(); // Remember we are in content mode: scanningMode = false; }
virtual void QCAR_onUpdate(QCAR::State&) { if (dataSetToActivate != NULL) { QCAR::TrackerManager& trackerManager = QCAR::TrackerManager::getInstance(); QCAR::ImageTracker* imageTracker = static_cast<QCAR::ImageTracker*>(trackerManager.getTracker( QCAR::ImageTracker::getClassType())); if (imageTracker == 0) { LOG("Failed to activate data set."); return; } imageTracker->activateDataSet(dataSetToActivate); if(isExtendedTrackingActivated) { for (int tIdx = 0; tIdx < dataSetToActivate->getNumTrackables(); tIdx++) { QCAR::Trackable* trackable = dataSetToActivate->getTrackable(tIdx); trackable->startExtendedTracking(); } } dataSetToActivate = NULL; } if (scanningMode) { QCAR::TrackerManager& trackerManager = QCAR::TrackerManager::getInstance(); QCAR::ImageTracker* imageTracker = static_cast<QCAR::ImageTracker*>(trackerManager.getTracker( QCAR::ImageTracker::getClassType())); // Get the target finder: QCAR::TargetFinder* targetFinder = imageTracker->getTargetFinder(); // Check if there are new results available: const int statusCode = targetFinder->updateSearchResults(); if (statusCode < 0) { char errorMessage[80]; LOG(errorMessage, "Error with status code %d", statusCode); } else if (statusCode == QCAR::TargetFinder::UPDATE_RESULTS_AVAILABLE) { // Process new search results if (targetFinder->getResultCount() > 0) { const QCAR::TargetSearchResult* result = targetFinder->getResult(0); // Check if this target is suitable for tracking: if (result->getTrackingRating() > 0) { // Create a new Trackable from the result: QCAR::Trackable* newTrackable = targetFinder->enableTracking(*result); if (newTrackable != 0) { LOG( "Successfully created new trackable '%s' with rating '%d'.", newTrackable->getName(), result->getTrackingRating()); if (strcmp(result->getUniqueTargetId(), lastTargetId) != 0) { // Copies the new target Metadata snprintf(targetMetadata, CONTENT_MAX, "%s", result->getMetaData()); //LOG(targetMetadata); } strcpy(lastTargetId, result->getUniqueTargetId()); // Stop Cloud Reco scanning targetFinder->stop(); scanningMode = false; } } } } } }