2

ボタンがタップされたときにオーディオ ファイルを再生しようとしています。

コードをステップ実行すると機能しますが、ボタンをタップしただけではサウンドは再生されません。

これが私のコードです:

[[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryPlayback error:nil];
AVAudioPlayer * player;
NSString * path = [[NSBundle mainBundle] pathForResource:@"soundOne" ofType:@"mp3"];
NSURL * url = [NSURL fileURLWithPath:path];
player = [[AVAudioPlayer alloc] initWithContentsOfURL:url error:nil];
[player play];

これはオーディオを再生する適切な方法ですか? 非推奨としてフラグが立てられているものはありません。

デバッガーにも次のメッセージが表示されます。

AudioQueue: request to trim 0 + 2690 = 2690 frames from buffer containing 1152 frames

編集:

このコードは機能します。

NSString *filePath = [[NSBundle mainBundle] pathForResource:@"soundOne"
                                                     ofType:@"mp3"];
NSURL *fileURL = [[NSURL alloc] initFileURLWithPath:filePath];
self.audioPlayer = [[AVAudioPlayer alloc]
                    initWithContentsOfURL:fileURL error:nil];
[self.audioPlayer prepareToPlay];
self.audioPlayer.currentTime = 0;
[self.audioPlayer play];

ミュート ボタンをオンにしてオーディオを再生するにはどうすればよいですか?

これが私がこれのために試したコードです:

CFStringRef state;
UInt32 propertySize = sizeof(CFStringRef);
OSStatus audioStatus = AudioSessionGetProperty(kAudioSessionProperty_AudioRoute, &propertySize, &state);
if (audioStatus == kAudioSessionNoError) {
    //NSLog(@"audio route: %@", state);
    return (CFStringGetLength(state) <+ 0);
}
return NO;
4

1 に答える 1

4

play を呼び出す前にこれを貼り付けます。

[[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryPlayback error:&error];
[[AVAudioSession sharedInstance] setActive:YES error:&error];

それはそれを行う必要があります。

于 2013-02-03T23:48:47.443 に答える