AVPlayer を使用して iPod の曲を再生できることはわかっていますが、をAVAudioPlayer
使用して iPod の曲の URL でを初期化する方法がわかりませんinitWithContentsOfURL
。試してみると、AVAudioPlayer
初期化時に NULL が返されます。
アプリがバックグラウンドで実行されている場合、さらに処理するためAVAudioPlayer
にデリゲート メソッドを使用する必要があるため、使用する必要があります (つまり、アプリがバックグラウンドで実行されている場合、デリゲート メソッドが呼び出されます。ただし、デリゲート メソッドは提供されないため、バックグラウンドで実行されない通知を使用します)。audioPlayerDidFinishPlaying
AVAudioPlayer
audioPlayerDidFinishPlaying
AVPlayer
次のコードは、AVPlayer で iPod の曲を再生するためのものです。
- (void)viewDidLoad {
[super viewDidLoad];
AVAudioSession *session = [AVAudioSession sharedInstance];
[session setCategory:AVAudioSessionCategoryPlayback error:nil];
NSError *error = nil;
[session setActive:YES error:&error];
MPMediaQuery *query = [MPMediaQuery songsQuery];
NSArray *collection = [query items];
MPMediaItem *item = [collection objectAtIndex:0];
NSLog(@"%@",[item valueForProperty:MPMediaItemPropertyTitle]);
NSURL *url = [item valueForProperty:MPMediaItemPropertyAssetURL];
AVPlayer *player = [[AVPlayer alloc]initWithURL:url]; // <-- Line to Replace
[player play];
}
これはうまくいきます。しかし、最後から 2 番目の行を次のように置き換えると:
AVAudioPlayer *player = [[AVAudioPlayer alloc]initWithContentsOfURL:url error:nil];
への呼び出しinitWithContentsOfURL
は NULL を返します。
を使用すると NULL が返されるのに、使用AVAudioPlayer
すると初期化されたプレーヤーが返される理由について何か考えはありますAVPlayer
か?
Technical Q&A http://developer.apple.com/library/ios/#qa/qa1634/_index.htmlによると、「initWithContentsOfURL で使用される URL: はファイル URL (file://) である必要があります。つまり、ローカル パス。」
iPod ライブラリ内の曲の URL を取得すると、パスは次のようになります。
ipod-library://item/item.mp3?id=-4017276016911605928
私の iPod ライブラリへのこのパスは「ローカル パス」とは見なされないということですか、initWithContentsOfURL
それとも NULL を返すバグと見なされますか?
誰か考えますか?