iPhone: Как воспроизвести звук в определенное время? - PullRequest
0 голосов
/ 01 февраля 2010

Я написал следующий код:

-(void)runTimer
{
    myTicker=[NSTimer scheduledTimerWithTimeInterval:0.5 target:self selector:@selector(showActivity) userInfo:nil repeats:YES];
    myTicker = [NSTimer scheduledTimerWithTimeInterval:60.00 target:self selector:@selector(vibrate) userInfo:nil repeats:YES];
}

-(void)showActivity
{
    NSDateFormatter *formatter =
                  [[[NSDateFormatter alloc] init] autorelease];
            NSDate *date = [NSDate date];
        [formatter setTimeStyle:NSDateFormatterMediumStyle];
         [timerLabel setText:[formatter stringFromDate:date]];
}
-(void) vibrate{
AudioServicesPlaySystemSound (kSystemSoundID_Vibrate);

}

Я хочу воспроизвести аудиофайл вместо вибрации iPhone. Это возможно?

Ответы [ 5 ]

1 голос
/ 01 февраля 2010

Касательно основного вопроса, но метод, вызываемый селектором таймера, должен иметь вид ...

-(void) aribtaryMethodName:(NSTimer *) theTimer;

... или он может быть вызван неправильно. Это селектор должен выглядеть так:

myTicker=[NSTimer scheduledTimerWithTimeInterval:0.5 target:self selector:@selector(aribtaryMethodName:) userInfo:nil repeats:YES];
0 голосов
/ 23 марта 2013
-(IBAction)slider1Changed:(id)sender
{
    [timer invalidate];
    float sliderValue=slider1.value;
    int totalSecond=(int)sliderValue;
    time=totalSecond;
    int sec= totalSecond %60;
    int min= (totalSecond -sec)/60;
    sliderValue=(float)totalSecond;
    runTime.text=[NSString stringWithFormat:@"%d:%.2d",min,sec];
    [slider1 setValue:sliderValue];
    timer =   [NSTimer scheduledTimerWithTimeInterval:1 target:self selector:@selector(timerChanged) userInfo:nil repeats:YES];

    // to play the audio from particular time duration
    [player setCurrentTime:totalSecond];
}

-(void)timerChanged
{
   int totalSecond=[player duration];

   float slider1Time=(float)time;
   if (time <= totalSecond) {
      int sec= time %60;
      int min= (time -sec)/60;
      runTime.text=[NSString stringWithFormat:@"%d:%.2d",min,sec];
      [slider1 setValue:slider1Time];
   }
   else
   {
      [player stop];
      [timer invalidate];
   }
   time +=1;

}
0 голосов
/ 02 февраля 2010

Проверка Пример проекта Apple BubbleLevel . Вы хотите SoundEffect.h и SoundEffect.m в свой проект, а затем просто позвоните:

mySound = [[SoundEffect alloc]
    initWithContentsOfFile:[mainBundle pathForResource:@"mySound"
    ofType:@"aif"]];
[mySound play];    

Предупреждение: Мне удалось воспроизвести только звуки AIF, конвертированные через iTunes. Все остальное не удалось, включая файлы CAF. Вкратце: импортируйте любой звук в iTunes (drag'n'drop), измените экспорт на формат AIF, а затем экспортируйте файл.

0 голосов
/ 01 февраля 2010

Конечно. См. Класс AVAudioPlayer.

0 голосов
/ 01 февраля 2010

Да. Предположим, у вас есть файл .caf, вы можете воспроизвести его с помощью

SystemSoundID sound_id;
AudioServicesCreateSystemSoundID(NSURL_of_your_caf_file, &sound_id);
...
AudioServicesPlaySystemSound(sound_id);

Для воспроизведения музыки вы можете использовать AVAudioPlayer.

...