的iOS AVPlayer播放/暂停按钮问题
问题描述:
我使用AVPlayer
使用下面的代码来播放来自互联网的实时流:的iOS AVPlayer播放/暂停按钮问题
NSString *u = @"http://192.192.192.192:8036";
NSURL *url = [NSURL URLWithString:u];
radiosound = [[AVPlayer alloc] initWithURL:url];
[radiosound play];
而且我有一个按钮,播放:
[radiosound play];
和暂停:
[radiosound pause];
我的问题是,我只想使用一个按钮播放/暂停,但是当我使用此代码
if (radiosound.isPlaying) {
[radiosound pause];
} else {
[radiosound play];
}
我的应用程序崩溃,因为AVPlayer不识别“isPlaying”。
任何提示?
答
AVPlayer
没有isPlaying
属性。使用rate
属性(0.0表示停止,1.0播放)。
if (radiosound.rate == 1.0) {
[radiosound pause];
} else {
[radiosound play];
}
你可以看一下在AVPlayer
类引用here。
答
经过一番研究,我发现当没有网络连接时,在收到-play
消息后,AVPlayer
仍然将速率设置为1.0。
因此,我也检查了CURRENTITEM和改进我的方法,像:
-(BOOL)isPlaying
{
if (self.player.currentItem && self.player.rate != 0)
{
return YES;
}
return NO;
}
请分享你的观点,如果你认为什么是错的这种方法。
+2
检查currentItem有什么意义?暂停时,不应该是零。该项目不会因为您暂停播放器而消失。 – openfrog
有些人说即使暂停,在飞行模式下它仍然是1.0。 – openfrog
将_float_与_1.0_进行比较可能不是一个好主意。也许__if(radiosound.rate> 0.99)__? – SoftDesigner
@SoftDesigner的好处,但AFAICT 0.0和1.0都可以在[IEEE-754浮点](http://www.cprogramming.com/tutorial/floating_point/understanding_floating_point_representation.html)中精确表示。 –