Есть ли FSRef в iPhone SDK или есть что-то, что может быть альтернативой FSRef? - PullRequest
2 голосов
/ 22 июля 2009

Вопрос может показаться глупым, но дело в том, что я учусь пользоваться аудио-очередью, и пример, который я взял (aqtest), был для меня хорошим руководством, пока я недавно не узнал, что aqtest не для iPhone. (глупо) Я работал в интернете и обнаружил, что для iPhone нет FSRef.

Если возможно, я хочу найти способ обойти FSRef thinggie. Поэтому возникает вопрос: можно ли использовать что-то еще вместо FSRef, которое существует в iPhone SDK? Или я что-то упустил?

Ответы [ 2 ]

2 голосов
/ 22 июля 2009

FSRefs вообще не доступны на телефоне. FSRefs - это способ представления ссылки на файл, для большинства целей предпочтительной заменой является NSURL со схемой file:

Сказав это, безусловно, есть SpeakHere пример для iPhone, он не использует FSRefs.

Что касается aqtest, я предполагаю, что у вас возникли проблемы с кодом:

FSRef fsref;    
XThrowIfError(FSPathMakeRef(filePath, &fsref, NULL), "Input file not found");

XThrowIfError(AudioFileOpen(&fsref, fsRdPerm, 0, &myInfo.mAudioFile), "AudioFileOpen failed");

Как я уже сказал, FSRef больше не является предпочтительным способом обработки ссылок на файлы и недоступен на телефоне, NSURL. Поэтому перейдите к версии на основе URL:

NSString *pathString = [NSString stringWithCString: filePath];
if (!pathString) { printf("can't parse file path\n"); return; }

NSURL *url = [NSURL fileURLWithPath:pathString];
if (! url) { printf("can't make file url\n"); return; }

XThrowIfError(AudioFileOpenURL (url, kAudioFileReadPermission, 0/*inFileTypeHint*/, &myInfo.mAudioFil), "can't open file");

Это должно работать на телефоне, конечно, многие из aqtest не будут работать на телефоне, ведь запуск инструментов командной строки на устройстве не поддерживается.

1 голос
/ 23 июля 2009

Вы смотрели код в aqplay.cpp? Это в некотором примере кода, который я взял из
Core Audio -> SimpleSDK -> AudioQueueTools.

Он использует CFURLRef, чтобы открыть AudioFileID.

Большая часть этого кода выглядит так, как будто он должен компилироваться для iPhone.

...