Apple のドキュメントによると、AudioServices.h は AudioToolbox フレームワークの一部である必要があります。
Xcode プロジェクトに AudioToolbox フレームワークを追加しましたが、#import AudioServices を実行すると、AudioServices.h ファイルが見つかりませんというエラーが表示されます。
これは、#import "AudioServices.h" と入力しても発生します。
または #import "AudioToolbox/AudioServices.h" 。
念のため、AudioToolbox フレームワークを削除してから再度追加してみましたが、効果はありませんでした。AudioServices ファイルが破損している可能性はありますか? (もしそうなら、別のコピーをダウンロードできる場所を誰か知っていますか?)
XCode 4.2 を使用していますが、古いオープン ソース コードを変換しているため、プロジェクトは XCode 3.2 互換に設定されています。これが問題でしょうか?
私は単純なものが欠けていると確信しています。私はプログラミングにまったく慣れていません...どんな助けにも感謝します!
-----編集(以下の私のコメントを参照)-----
AudioServices.h で、問題の 2 つの関数:
extern OSStatus
AudioSessionInitialize( CFRunLoopRef inRunLoop,
CFStringRef inRunLoopMode,
AudioSessionInterruptionListener inInterruptionListener,
void *inClientData)
extern OSStatus
AudioSessionAddPropertyListener( AudioSessionPropertyID inID,
AudioSessionPropertyListener inProc,
void *inClientData)
SpeakHereController.mm (サンプルの Apple コードから) で、これを ARC に変換して、プロジェクト内の他のファイルとより適切に連携させようとしています。
- (void)awakeFromNib
{
// Allocate our singleton instance for the recorder & player object
recorder = new AQRecorder();
player = new AQPlayer();
OSStatus error = AudioSessionInitialize(NULL, NULL, interruptionListener, self);
if (error) printf("ERROR INITIALIZING AUDIO SESSION! %ld\n", error);
else
{
UInt32 category = kAudioSessionCategory_PlayAndRecord;
error = AudioSessionSetProperty(kAudioSessionProperty_AudioCategory, sizeof(category), &category);
if (error) printf("couldn't set audio category!");
error = AudioSessionAddPropertyListener(kAudioSessionProperty_AudioRouteChange, propListener, self);
if (error) printf("ERROR ADDING AUDIO SESSION PROP LISTENER! %ld\n", error);
UInt32 inputAvailable = 0;
UInt32 size = sizeof(inputAvailable);
// we do not want to allow recording if input is not available
error = AudioSessionGetProperty(kAudioSessionProperty_AudioInputAvailable, &size, &inputAvailable);
if (error) printf("ERROR GETTING INPUT AVAILABILITY! %ld\n", error);
btn_record.enabled = (inputAvailable) ? YES : NO;
// we also need to listen to see if input availability changes
error = AudioSessionAddPropertyListener(kAudioSessionProperty_AudioInputAvailable, propListener, self);
if (error) printf("ERROR ADDING AUDIO SESSION PROP LISTENER! %ld\n", error);
error = AudioSessionSetActive(true);
if (error) printf("AudioSessionSetActive (true) failed");
}