Звук хорошо воспроизводится в симуляторе iPhone, но не в iPhone - PullRequest
2 голосов
/ 16 июня 2010

У меня есть приложение, которое почти закончено, но столкнулось с раздражающей проблемой. В приложении я хочу воспроизвести звук, когда я нажимаю на какой-либо объект, затем объект исчезает. Это кусок кода, который я использовал:

В Object.h

#import <UIKit/UIKit.h>
#import <AudioToolbox/AudioServices.h>

@interface Object: UIView {
    UIImageView *image;
    CGPoint location;
    SystemSoundID soundFileID;
}

In Object.m

- (void)initWithSound {
    //a bunch of code to define the image and location
    NSString *soundPath = [[NSBundle mainBundle] pathForResource:@"Sound" ofType:@"caf"];
    CFURLRef soundURL = (CFURLRef)[NSURL fileURLWithPath:soundPath];
    AudioServicesCreateSystemSoundID(soundURL, &soundFileID);
    return self;
}

Затем в моем mainViewController будет создано несколько объектов после действий пользователя и добавлено на экран в разных местах с разными изображениями. При нажатии на сам объект, он создаст звук и исчезнет.

In Object.m

- (void)tapped {
    AudioServicesPlaySystemSound(soundFileID);
    image.image = nil;
    [self removeFromSuperview];
}

Все работает найди в симуляторе. Но когда я попробовал это в iPhone, объект исчезает при нажатии, как ожидалось, но звук просто не воспроизводится. Пробовал на 3G и 3GS, оба не воспроизводят звук. Я думаю, что это должно работать. Я делаю какие-либо ошибки? Спасибо за любую помощь.

РЕДАКТИРОВАТЬ: Просто подумайте о чем-то, что я не знаю, связано или нет. Я также использую микрофон, чтобы обнаружить звук от пользователя AVAudioRecorder. Не уверен, повлияет ли это на вывод звука.

1 Ответ

2 голосов
/ 29 июня 2010

Наконец-то нашел, где проблема !!

Оказывается, мне нужно настроить аудио сеанс.Это просто так!Очевидно, мне нужно больше изучать аудио и видео.

Просто для того, кто может столкнуться с той же ситуацией, что и я, вот код, который я добавил в метод viewDidLoad:

AVAudioSession * audioSession = [AVAudioSession sharedInstance];

[audioSession setCategory:AVAudioSessionCategoryPlayAndRecord error: &error];

[audioSession setActive:YES error: &error];
...