My application uses the CloudReco's scanner by calling the CRParentViewController method in a storyboard from a menu. The scanning works great. I add a modal view afterwards. However, when I try returning to the main menu and then calling the CRParentViewController again, I can not start up the scanner. I know I need to add the targetFinder->startInit method to kick off scanning again and deinitialize the scanner when I move to my modal view. As a result, I have added a deinitializeTracker method as follows:
- (void)deinitializeTracker {
// Background thread must have its own autorelease pool
NSAutoreleasePool* pool = [[NSAutoreleasePool alloc] init];
QCAR::TrackerManager& trackerManager = QCAR::TrackerManager::getInstance();
QCAR::ImageTracker* imageTracker = static_cast<QCAR::ImageTracker*>(trackerManager.getTracker(QCAR::Tracker::IMAGE_TRACKER));
if (imageTracker == NULL)
{
NSLog(@"Failed to load tracking data set because the ImageTracker has not been initialized.");
}
QCAR::TargetFinder *targetFinder = imageTracker->getTargetFinder();
if (targetFinder == NULL) {
NSLog(@"Fialed to get target finder.");
}
// Deinitialize Visual Search
targetFinder->deinit();
[pool release];
}
I later call the loadTracker method in my ARViewController's ViewDidLoad method. Unfortunately, I get the following error:
"Failed to load tracking data set because the ImageTracker has not been initialized"
Suggestions are welcome.
I tried writing another method in CRQCARutils.mm to shut down the tracker. I call this method before creating my modal view to leave the tracker. I'm guessing that it's only partially doing the job as I still cannot start scanning again after returning to the main menu.
- (void)deinitializeTracker {
// Background thread must have its own autorelease pool
NSAutoreleasePool* pool = [[NSAutoreleasePool alloc] init];
QCAR::TrackerManager& trackerManager = QCAR::TrackerManager::getInstance();
QCAR::ImageTracker* imageTracker = static_cast<QCAR::ImageTracker*>(trackerManager.getTracker(QCAR::Tracker::IMAGE_TRACKER));
if (imageTracker == NULL)
{
NSLog(@"Failed to load tracking data set because the ImageTracker has not been initialized.");
}
QCAR::TargetFinder *targetFinder = imageTracker->getTargetFinder();
if (targetFinder == NULL) {
NSLog(@"Fialed to get target finder.");
}
// Deinitialize Visual Search
targetFinder->deinit();
[pool release];
}
Any suggestions would be greatly appreciated.