Используйте выбор MPMediaPicker в качестве входов AVAudioPlayer - PullRequest
2 голосов
/ 17 июля 2011

Я программирую приложение для слабослышащих. Я надеюсь взять треки из библиотеки iTunes, и в моем приложении есть слайдер для панорамирования. Я не хочу использовать OpenAL (это не игра, повторяю, это медиаплеер). Таким образом, поскольку AVAudioPlayer имеет простой способ панорамирования, могу ли я взять выборки из MPMediaPicker и передать их в AVAudioPlayer, чтобы я мог панорамировать их?

Ответы [ 2 ]

2 голосов
/ 19 июля 2011
  1. Попробуйте, чтобы AVAMediaPlayer воспроизводил переменную mediaItemCollection.Это было назначено сборщиком, чтобы быть местоположением песни кодом выше.Если это не работает, убедитесь, что AVAMediaPlayer использует тот же тип входной переменной (формат, как идентификатор или местоположение папки), что и MpMediaPicker.

  2. Это сообщение об ошибке звучит как техническая проблема.Единственное, о чем я могу думать, это то, что AVAAudio player или MPmedia player ищет переменную громкости (это требуется?) И не может ее найти.Я не могу ответить на этот вопрос, так как я не занимаюсь разработкой iPhone, попробуйте там форумы или веб-сайт за помощью.

Похоже, вы делаете хорошую работу!Если вам интересно, (я не знаю, останетесь ли вы в DA), мистер Кокран (декан старшей школы) преподает урок по разработке для iPhone и урок по компьютерным наукам в AP (я учусь).Если вы хотите пойти дальше или просто задать вопросы, я знаю, он тоже более чем счастлив!

Удачи!Скажите мне, когда он закончится, чтобы я мог проверить результаты!

2 голосов
/ 17 июля 2011

Я не занимаюсь разработкой iOS, но я верю, что есть два способа.

Метод № 1 Вам нужно добавить /System/Library/Frameworks/AVFoundation.framework к вашей цели в Xcode и #import AVAudioPlayer.h, а также Вам нужно добавить MediaPlayer.framework к вашей цели в Xcode и #import.

Для этой операции вам понадобится 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];
}

СЕЙЧАС, ЭТО СДЕЛАНО, ПОЛЬЗОВАТЕЛЮ НУЖНО ВЫБРАТЬ НОВУЮ ПЕСНЮ. ВЫ МОЖЕТЕ СОЗДАТЬ ВО ВРЕМЯ ПЕТЛИ ВО ВСЕМ ВЕЩИ, ГДЕ В УСЛОВИЯХ СУЩЕСТВУЕТ ТЕКУЩЕЕ ВРЕМЯ> = ПРОДОЛЖИТЕЛЬНОСТЬ (ОТ ИГРОКА 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

Удачи!

Derek

...