如何检查 Audioplayer 的播放时间增加 2 秒

Posted

技术标签:

【中文标题】如何检查 Audioplayer 的播放时间增加 2 秒【英文标题】:How to Check Playback Time of Audioplayer increases by 2 seconds 【发布时间】:2013-03-02 20:55:48 【问题描述】:

我正在尝试编写一个循环来检查每当音频 player.currenttime 增加 2 秒时它应该执行更新视图方法

- (void)myTimerMethod

 NSLog(@"myTimerMethod is Called");

myTimer = [NSTimer scheduledTimerWithTimeInterval:1.0
                                           target:self
                                         selector:@selector(checkPlaybackTime:)
                                         userInfo:nil
                                          repeats:YES];

  


- (void)checkPlaybackTime:(NSTimer *)theTimer
  
    float seconds =  audioplayer.currenttime;

    NSLog(@"Cur: %f",audioPlayer.currentTime ); 

    if (seconds = seconds + 2)

    [self update view];


 - (void)UpdateView



if  (index < [textArray count])
 
     self.textView.text = [self.textArray objectAtIndex:index];
   self.imageView.image = [self.imagesArray objectAtIndex:index];
   index++;
else

    index = 0;


   
 

如果音频 player.currenttimer 增加 2 秒,那么正确的写法是什么。

当前时间的 NSLog 始终显示 0.00。这是为什么。它应该随着音频播放器的播放而增加。

感谢您的帮助。

【问题讨论】:

【参考方案1】:

我从你给出的解释中了解到你想增加这样的时间间隔

Timer calls after 0.55
Timer calls after 0.60
Timer calls after 0.65
Timer calls after 0.70

等等。

如果这是您想要做的。然后我认为你可以这样做,通过将repeats:YES 更改为repeats:NO 以便计时器不重复,然后在onTimer 中,只需启动一个间隔更长的新计时器。

你需要一个变量来保存你的时间间隔,这样你就可以通过 onTimer 每次让它变长一点。

另外,您可能不再需要保留计时器,因为它只会触发一次,当它触发时,您将获得一个新计时器。

float gap = 0.50;

[NSTimer scheduledTimerWithTimeInterval:gap target:self selector:@selector(onTimer) userInfo:nil repeats:NO];

-(void) onTimer 
gap = gap + .05;
[NSTimer scheduledTimerWithTimeInterval:gap target:self selector:@selector(onTimer) userInfo:nil repeats:NO];

希望对你有帮助

【讨论】:

感谢您的回复。这个解决方案是我一直在寻找的最佳解决方案。【参考方案2】:

首先,尝试在 NSLog 中使用浮点“秒”而不是当前时间。

NSLog(@"Cur: %f", seconds); 

当前时间不是浮点数,它是一个 NSTimer 对象,因此您必须在 NSLog 文本中使用 %@

NSLog(@"Cur: %@",audioPlayer.currentTime ); 

应该也可以。

假设您的 audioPlayer 设置正确,如果您正在寻找计时器何时为 2 秒,您的 if 语句将是

if(seconds == 2)
    [self update view];

如果您正在寻找每次计时器达到偶数时,即 2、4、6 等,您的 if 语句将是

if(seconds % 2 == 0)
    [self update view];

if 语句中的 % 是模符号:http://www.cprogramming.com/tutorial/modulus.html

此外,您当前的 if 语句正在分配而不是检查 seconds 变量。要检查它,您需要 == 而不是 =。但是,您当前的 if 语句永远不会为真,因为您正在检查一个变量本身 + 2。换句话说,如果秒等于 2,您的 if 语句询问是否 2 == (2+2) 或者它是否它是 4,它询问是否 2 == (4+2)。此陈述无法验证为真。

希望这会有所帮助!

【讨论】:

感谢您的详细回复。欣赏它。

以上是关于如何检查 Audioplayer 的播放时间增加 2 秒的主要内容,如果未能解决你的问题,请参考以下文章

如何在颤动中播放来自 URL 的音频?

查看avaudioplayer的当前播放时间

flutter:: 有没有办法使用 audioplayer 包只播放一个音频文件?

如何同时播放两种声音?

AudioPlayer

AVfoundation AudioPlayer 不工作