1

コードは次のとおりです。

-(void)stop
{
    NSLog(@"Disposing Sounds");
    AudioServicesDisposeSystemSoundID (soundID);
    //AudioServicesRemoveSystemSoundCompletion (soundID);
}

static void completionCallback (SystemSoundID  mySSID, void* myself) {
    NSLog(@"completion Callback");
}
- (void) playall: (id) sender {

    [self stop];

    AudioServicesAddSystemSoundCompletion (soundID,NULL,NULL,
     completionCallback,
     (void*) self);


    OSStatus err = kAudioServicesNoError;
    NSString *aiffPath = [[NSBundle mainBundle] pathForResource:@"slide1" ofType:@"m4a"];
    NSURL *aiffURL = [NSURL fileURLWithPath:aiffPath];
    err = AudioServicesCreateSystemSoundID((CFURLRef) aiffURL, &soundID);
    AudioServicesPlaySystemSound (soundID);
    NSLog(@"Done Playing");
}

出力:

Disposing Sounds
Done Playing

実際には、サウンドはまったく再生されず、完了コールバックも呼び出されません。ここで何が間違っているのでしょうか?現在のサウンドを再生する前に、以前のサウンドを停止したい。

4

3 に答える 3

1

AFAIK、サポートされているファイルは.caf、.aif、または.wavのみです。

独自のサウンドを再生するには、サウンドファイルをアプリケーションバンドルに追加します。サウンドファイルは、次の要件に準拠している必要があります。

  • .caf、.aif、または.wavファイルである必要があります。
  • ファイル内のオーディオデータは、PCMまたはIMA / ADPCM(IMA4)形式である必要があります。
  • ファイルの音声持続時間は30秒未満である必要があります。

オーディオおよびビデオコーディングのハウツー

于 2010-06-06T01:01:46.483 に答える
0

エラーには何が含まれていますか? そこから、問題を推測できるはずです。

于 2009-07-19T01:14:58.937 に答える
0

これには AudioToolBox フレームワークを使用できます。

CFBundleRef mainbundle = CFBundleGetMainBundle();
CFURLRef soundFileURLRef = CFBundleCopyResourceURL(mainbundle, CFSTR("tap"), CFSTR("aif"), NULL);
AudioServicesCreateSystemSoundID(soundFileURLRef, &soundFileObject);
AudioServicesPlaySystemSound(kSystemSoundID_Vibrate);
AudioServicesPlaySystemSound(1100);
于 2012-07-04T13:17:07.430 に答える