我正在用原生C ++编写iOS录音机,我无法使用Foundation API。
我需要这样的东西:
https://github.com/shannah/cn1-data-access-lib#database-creation-and-versioning
在iPhone上获取可写路径。
非常感谢你。
答案 0 :(得分:1)
当然可以,但是自信地说这对我的客户来说是一项任务,他在核心课程中没有要求任何外部职能或桥梁或任何涉及基金会的事情。所以我必须构建一个audioqueue组件而不引用Foundation。
为了记录,我成功地做到了这一点:
const char *home = getenv("HOME");
const char *subdir = "/Documents/";
const char *file = "recordedFile.caf";
char *recPath = (char*)(calloc(strlen(home) + strlen(subdir)
+ strlen(file) + 1, sizeof(char)));
strcpy(recPath, home); // copy string one into the result.
strcat(recPath, subdir); // append string two to the result.
strcat(recPath, file); // append string three to the result.
//recordFilePath is our CFStringRef
recordFilePath = CFStringCreateWithCString(0, recPath, kCFStringEncodingUTF8);
//recorder is an AQRecorder class like the one from SpeakHere code sample
recorder->StartRecord(recordFilePath);
答案 1 :(得分:0)
在评论OP之后,使用Objective-C ++的一个例子:
Utils.hpp:
#pragma once
#include <string>
std::string temporaryFilePath(const std::string &filename)
Utils.mm:
#import "Utils.hpp"
#import <Foundation/Foundation.h>
std::string temporaryFilePath(const std::string &filename)
{
NSString *filePath = [NSTemporaryDirectory() stringByAppendingPathComponent:[NSString stringWithUTF8String:filename.c_str()]];
const char *rawFilePath = [filePath UTF8String];
return rawFilePath;
}
WhereverYouWant.cpp:
#include "Utils.hpp"
...
std::string recordFilePath = temporaryFilePath("recordedFile.caf");