この行で
appDelegate.audioPlayer = [[AVPlayer alloc] init];
あなたは新しいavplayerを割り当て、開始しているようです。そのため、「プレイしない」結果を得ることは驚くことではありません。単にその行を除外してください。
質問
iOSデバイスに曲のテーブルビューがあり、行を選択した場合、Avplayerが選択した曲の再生を開始する新しいビューにプッシュします。戻って別の行を選択した場合、ビューを押してアプリが新しい曲を再生し始め、すでに実行されているものを再生し続けます。
編集:曲が再生されていても、viewdidloadメソッドに入れた場合、「再生されない」出力を常に出力するため、成功せずにこのようなレート値を使用してみました。
- (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はaを持っています 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];
}