В этой линии
appDelegate.audioPlayer = [[AVPlayer alloc] init];
Вы, кажется, выдвигаете и начинаете новый AvPlayer. Таким образом, неудивительно, что вы получите результат «не играть». Просто оставьте эту линию.
Вопрос
У меня есть таблица песен на устройстве iOS, и если я выберу ряд, я привязываю новый вид, где AvPlayer начинает играть в выбранную песню. Теперь, если я вернусь и выберу еще одну строку, настаивая на представление, которое приложение начнет играть в новую песню, в то время как продолжайте воспроизводить ту, которая уже работает.
РЕДАКТИРОВАТЬ: Я пытался использовать такое значение такого уровня без успеха, так как он всегда будет выводить «не воспроизводить», если я помесчу его в свой метод ViewDiddload, даже если песня играет:
- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
appDelegate = (SimpleTableAppDelegate *)[[UIApplication sharedApplication] delegate];
appDelegate.audioPlayer = [[AVPlayer alloc] init];
if (appDelegate.audioPlayer.rate == 0.0f)
{
NSLog(@"not playing");
} else {
NSLog(@"already playing");
}
}
Решение
В этой линии
appDelegate.audioPlayer = [[AVPlayer alloc] init];
Вы, кажется, выдвигаете и начинаете новый AvPlayer. Таким образом, неудивительно, что вы получите результат «не играть». Просто оставьте эту линию.
Другие советы
У AvPlayer есть rate
свойство, которое указывает на скорость воспроизведения как поплавка. 0.0f
Указывает, что остановлен. А play
а также stop
Методы просто изменят rate
имущество.
- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
appDelegate = (SimpleTableAppDelegate *)[[UIApplication sharedApplication] delegate];
//Stop potential existing audioPlayer prior to creating new player
[appDelegate.audioPlayer stop];
//Create new audio player
appDelegate.audioPlayer = [[AVPlayer alloc] init];
}