2

我正在使用 iOS 5.1 在 Xcode 4.2 中从 Vuforia SDK 1.5.9 开发示例应用程序。在那个版本中,我无法自己制作可跟踪的数据集——我必须使用 Qualcomm 的在线解决方案。有谁知道或尝试过从远程位置下载数据集?因此,您像往常一样生成它们,但将它们从服务器下载到应用程序中,这样我就可以例如选择要下载和使用哪一个?

昨天我快速尝试了一下:

-(void)setupMarkers{
    NSString *filePathX;
    //connect to the remot location
    NSURL *urlD = [NSURL URLWithString:[NSString stringWithFormat:@"%@/frames.dat",kURLServer]];
    NSData *urlData = [NSData dataWithContentsOfURL:urlD];
    if ( urlData )
    {
        NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
        NSString *documentsDirectory = [paths objectAtIndex:0];  

        NSString *filePath = [NSString stringWithFormat:@"%@/%@", documentsDirectory,@"frames.dat"];
        [urlData writeToFile:filePath atomically:YES];
    }
    NSURL *urlX = [NSURL URLWithString:[NSString stringWithFormat:@"%@/frames.xml",kURLServer]];
    NSData *urlDataX = [NSData dataWithContentsOfURL:urlX];
    if ( urlDataX )
    {
        NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
        NSString *documentsDirectory = [paths objectAtIndex:0];  

        NSString *filePath = [NSString stringWithFormat:@"%@/%@", documentsDirectory,@"frames.xml"];
        [urlDataX writeToFile:filePath atomically:YES];
        filePathX = filePath;
    }
    //put them into markersArray
    [self.markersArray addObject:filePathX];
}

我知道这很丑,但正如我所说,这是一个快速尝试,但它根本没有用。我知道有带有云和东西的新 Vuforia SDK 2.0,但是我必须使用 iOS6 和 Xcode 4.5 - 这不是我现在的解决方案。

4

1 回答 1

2

其实我的“快速尝试”毕竟不是那么糟糕:)这就是我所做的:

  1. 写了一个方法 -(void)setupMarkers 在其中我 dwonload .dat 和 .xml 文件(如问题)
  2. 在 QCARUtils.mm 我更改了 - (QCAR::DataSet *)loadDataSet:(NSString *)dataSetPath 一行:

    // Load the data set from the App Bundle
    // If the DataSet were in the Documents folder we'd use STORAGE_ABSOLUTE and the full path
    if (!theDataSet->load([dataSetPath cStringUsingEncoding:NSASCIIStringEncoding], QCAR::DataSet::STORAGE_ABSOLUTE))//STORAGE_APPRESOURCE)){
    ...
    }
    

奇迹般有效 :)

ps 我会等一会儿,如果有人能提出更好的答案;)

于 2012-12-14T15:56:47.417 回答