使用MPMediaPicker选项作为AVAudioPlayer输入

时间:2011-07-17 06:47:17

标签: iphone c++ ios4 avaudioplayer mpmediapickercontroller

我正在为听障人士编写一份申请表。我希望从iTunes库中获取曲目,并在我的应用程序中有一个用于平移的滑块。我不想使用OpenAL(这不是游戏 - 我重复这是一个媒体播放器)。因此,由于AVAudioPlayer具有简单的平移方法,我可以从MPMediaPicker中选择并将它们提供给AVAudioPlayer,以便我可以平移它们吗?

2 个答案:

答案 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/(我使用了大部分代码)

http://developer.apple.com/library/ios/#DOCUMENTATION/AVFoundation/Reference/AVAudioPlayerClassReference/Reference/Reference.html

祝你好运!

德里克

答案 1 :(得分:2)

  1. 尝试让AVAMediaPlayer播放变量mediaItemCollection。这是由选择器指定为上面代码的歌曲位置。如果这不起作用,请确保AVAMediaPlayer使用与MpMediaPicker相同的输入变量类型(格式,如ID或文件夹位置)。

  2. 该错误消息听起来像是一个技术问题。我唯一能想到的是AVAAudio播放器或MPmedia播放器正在寻找一个Volume变量(它是必需的?)而找不到它。我不能真正回答这个,因为我不做iPhone开发,尝试在论坛或网站上寻求帮助。

  3. 听起来你做得很好!如果你有兴趣,(我不知道你是否留在DA)Cochran先生(高年级学生的院长)正在教授iPhone开发课程和AP计算机科学课程(我在)。如果你想更进一步,或者你只想提问我知道他也非常高兴!

    祝你好运!告诉我什么时候完成,所以我可以测试结果!