我正在为听障人士编写一份申请表。我希望从iTunes库中获取曲目,并在我的应用程序中有一个用于平移的滑块。我不想使用OpenAL(这不是游戏 - 我重复这是一个媒体播放器)。因此,由于AVAudioPlayer具有简单的平移方法,我可以从MPMediaPicker中选择并将它们提供给AVAudioPlayer,以便我可以平移它们吗?
答案 0 :(得分:2)
我没有做过很多iOS开发,但我相信有两种方法。
方法#1 您需要在Xcode和#import AVAudioPlayer.h中将/System/Library/Frameworks/AVFoundation.framework添加到目标中,以及需要在Xcode和#import中将MediaPlayer.framework添加到目标。
对于此操作,您需要MPMediaPicker将歌曲数据传递给AVAMedia Player。这可以这样完成:
@interface MusicPlayerDemoViewController : UIViewController <MPMediaPickerControllerDelegate> {
...
}
...
// This action should open the media picker
- (IBAction)openMediaPicker:(id)sender;
@end
// MusicPlayerDemoViewController.m
- (IBAction)openMediaPicker:(id)sender {
MPMediaPickerController *mediaPicker = [[MPMediaPickerController alloc] initWithMediaTypes:MPMediaTypeMusic];
mediaPicker.delegate = self;
mediaPicker.allowsPickingMultipleItems = NO; // this is the default
[self presentModalViewController:mediaPicker animated:YES];
[mediaPicker release];
}
// Media picker delegate methods
- (void)mediaPicker: (MPMediaPickerController *)mediaPicker didPickMediaItems:(MPMediaItemCollection *)mediaItemCollection {
// We need to dismiss the picker
[self dismissModalViewControllerAnimated:YES];
(代码继续下面,空白是供你填写的)
在这一点上,打电话给AVAAUDIOPLAYER类,并告诉它播放mediaItemCollection。记住,在播放之前要停止音频,因为它会一次播放多首歌。
}
- (void)mediaPickerDidCancel:(MPMediaPickerController *)mediaPicker {
// User did not select anything
// We need to dismiss the picker
[self dismissModalViewControllerAnimated:YES];
}
现在,这已经完成了用户选择新歌的需要。你可以创造一个环绕整个环的圈子,那里的条件是当前的时间&gt; = DURATION(来自AVAAUDIO球员),
另外,你可以创建一个按钮来打开拣货员
了解更多问题:
http://oleb.net/blog/2009/07/the-music-player-framework-in-the-iphone-sdk/(我使用了大部分代码)
祝你好运!
德里克
答案 1 :(得分:2)
尝试让AVAMediaPlayer播放变量mediaItemCollection。这是由选择器指定为上面代码的歌曲位置。如果这不起作用,请确保AVAMediaPlayer使用与MpMediaPicker相同的输入变量类型(格式,如ID或文件夹位置)。
该错误消息听起来像是一个技术问题。我唯一能想到的是AVAAudio播放器或MPmedia播放器正在寻找一个Volume变量(它是必需的?)而找不到它。我不能真正回答这个,因为我不做iPhone开发,尝试在论坛或网站上寻求帮助。
听起来你做得很好!如果你有兴趣,(我不知道你是否留在DA)Cochran先生(高年级学生的院长)正在教授iPhone开发课程和AP计算机科学课程(我在)。如果你想更进一步,或者你只想提问我知道他也非常高兴!
祝你好运!告诉我什么时候完成,所以我可以测试结果!