2010-02-01 4 views
0

Я написал следующий код:iPhone: Как играть звук в определенное время?

-(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. Это возможно?

ответ

0

Check компании 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

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

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

Чтобы играть музыку, которую вы можете захотеть использовать AVAudioPlayer вместо.

1

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

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

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

myTicker=[NSTimer scheduledTimerWithTimeInterval:0.5 target:self selector:@selector(aribtaryMethodName:) userInfo:nil repeats:YES]; 
+0

+1 даже не думал, что не отвечает на фактический вопрос, а является важным исправлением представленного кода, чтобы заставить его работать. Thanx! – JOM

0
-(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; 

} 
Смежные вопросы