获取时间间隔并在目标 C 中播放声音
Posted
技术标签:
【中文标题】获取时间间隔并在目标 C 中播放声音【英文标题】:Get time interval and play a sound in objective C 【发布时间】:2012-08-22 00:08:06 【问题描述】:我是对象 C 的新手,我有两个问题,但我在 *** 上找不到答案。
我的 ios 应用很简单,屏幕上只有一个按钮,如果用户点击它,它将:
播放声音
以毫秒为单位获取两次点击之间的时间间隔。
感谢 Owl,现在获取间隔的代码如下所示:
(长编码,因为我不明白什么是“UNIX 时间戳”,而且我不知道在哪里/如何使用第二个代码。)
double dt1;
double dt2;
-(IBAction)Beated:(id)sender
If (FB == 1)
FB = 2;
NSDate *date = [NSDate date];
NSTimeInterval ti = [date timeIntervalSince1970];
dt1 = ti;
else
FB = 1
NSDate *date = [NSDate date];
NSTimeInterval ti = [date timeIntervalSince1970];
dt2 = ti;
double progress;
progress = dt2 - dt1;
int timeInMs = trunc(progress * 1000);
NSLog(@"Interval %d", timeInMs);
并且在启动应用程序后,第一次播放声音时会有延迟,但在第一次点击后效果很好。如何停止这种滞后?
我播放声音的代码:
在.h中
#import <AVFoundation/AVFoundation.h>
和
AVAudioPlayer *audioPlayer;
在.m
-(IBAction)Beated:(id)sender
NSURL *url = [NSURL fileURLWithPath:[NSString stringWithFormat:@"%@/ssn.wav", [[NSBundle mainBundle] resourcePath]]];
NSError*error;
audioPlayer = [[AVAudioPlayer alloc] initWithContentsOfURL:url error:$error];
audioPlayer.numberOfLoops = 0;
[audioPlayer play];
谢谢
【问题讨论】:
【参考方案1】:第一次点按,
NSDate *date = [NSDate date];
NSTimeInterval ti = [date timeIntervalSince1970];
获取 UNIX 时间戳,
第二次点击,
NSDate *date = [NSDate date];
NSTimeInterval ti = [date timeIntervalSince1970];
获取另一个 UNIX 时间戳,然后从第二个时间戳中减去第一个。减法的结果就是你的进步。
然后使用此代码获取小时:分钟:秒
double progress;
int minutes = floor(progress/60);
int seconds = trunc(progress - minutes * 60);
代码礼貌:How to convert an NSTimeInterval (seconds) into minutes
更简单
从两个水龙头中得到两个NSDate然后使用,然后不需要减法,只需使用下面的方法来获取时间间隔。然后如上图计算分秒。
- (NSTimeInterval)timeIntervalSinceDate:(NSDate *)anotherDate
或者
使用NSCalender
类中的components:fromDate:toDate:options:
方法。请参阅:Apple Doc。
编辑:
Jus 做了一个快速测试,对我来说效果很好。
测试代码:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
// Override point for customization after application launch.
NSDate *date = [NSDate date];
NSTimeInterval ti = [date timeIntervalSince1970];
NSLog(@"%f",ti);
return YES;
NSLog 输出:
2012-08-22 10:46:09.123 Test[778:c07] 1345596369.123665
【讨论】:
谢谢,我试试看。 构建失败。 @NSTimeinterval ti = [日期 timeIntervalSince1970]; No visble @interface for 'NSDate' 声明选择器 'timeIntervalSince1970' (xcode 4.4) 我刚刚检查了文档,它甚至没有被弃用...只需重新启动您的 XCode 什么是'ti'?你认为我需要在 .m 或 .h 中声明它吗?以上是关于获取时间间隔并在目标 C 中播放声音的主要内容,如果未能解决你的问题,请参考以下文章
Android MediaPlayer:同时播放多个声音。我的代码是